MATLAB学习打卡第二天——整数规划(1)

目录

1,引文

2,题目

3,分析

4,MATLAB解题

第一步,忽略整数的限制,利用线性规划找出小数情况下的最优解

第二步,对X1,X2任选一个进行分枝

第三步,对剩下的那一个变量进行分枝

对B11:

对B12:

对B21:

对B22: 

总论

5,总结


1,引文

原文教程为川川菜鸟的《第二天打卡-整数规划(1)》

链接为第二天打卡-整数规划(1)_python菜鸟-CSDN博客

有需要者自取。

2,题目

MATLAB学习打卡第二天——整数规划(1)

3,分析

 当我们先忽略最后一个整数的条件,不难发现,这其实就是我们昨天所学的线性规划题目。

于是

MATLAB学习打卡第二天——整数规划(1)

MATLAB学习打卡第二天——整数规划(1)

当然,今天我们要学习的是整数规划 ,这里得出的答案不是整数,所以上述答案在这道题中并不是咱们所需要的最优解。

其实,所谓整数规划,就是在数值为整数的情况下的线性规划。在整数规划中,我们一般要求去找到变量都是整数情况下的最大值或者最小值。

为了方便表述,我们把在在线性规划基础上处理整数规划的这个思想叫做分枝定界法

下面,我们将以这道题目为例,详细地讲一讲分枝定界法。

4,MATLAB解题

第一步,忽略整数的限制,利用线性规划找出小数情况下的最优解

在上面,我们已经解出了线性规划下的最优解。即X1=4.8092     X2=1.8168     Z=355.8779

所以我们可以看出什么?
最起码,我们可以得到0<=Z<=355。

题目中,要求我们求X1,X2都是整数情况下的Z的最大值,所以,我们在此基础范围上对Z的最大值进行进一步框定。

第二步,对X1,X2任选一个进行分枝

我们先选X1进行分枝,那么便可以将X1分成两个范围

X1 =<[4.8092] = 4 , X1 >= [4.8092] +1 = 5

这里,我们成功地把X1的范围划为了X1<=4和X1>=5两个部分。这就是分枝

如果我们把整个问题的范围称为B,那么我们现在,就以X1的范围为依据,把问题划成了B1和B2。

现在,我们针对B1:

目标函数: Max Z = 40X1 + 90X2
约束条件:9*X1+7*X2<=56
                  7*X1+20*X2<=70
                  0<=X1<=4 X2>=0

MATLAB学习打卡第二天——整数规划(1)

 MATLAB学习打卡第二天——整数规划(1)

所以,B1的最优解为:

X1=4     X2=2.1     Z=349 

我们接着来做B2:

目标函数: Max Z = 40X1 + 90X2

约束条件:9*X1+7*X2<=56
                  7*X1+20*X2<=70
                  X1>=5  X2>=0

MATLAB学习打卡第二天——整数规划(1)

MATLAB学习打卡第二天——整数规划(1)

所以,B1的最优解为:

X1=5     X2=1.5714     Z=341.4286

第三步,对剩下的那一个变量进行分枝

在上面对X1进行分枝后,我们发现,最优解中X1都是整数了,但X2都还不是整数。

于是,我们对B1,B2进一步分枝,分枝成B11,B12,B21,B22。

对B11:

目标函数: Max Z = 40X1 + 90X2
约束条件:9*X1+7*X2<=56
                  7*X1+20*X2<=70
                  0<=X1<=4 0<=X2<=2
MATLAB学习打卡第二天——整数规划(1) 

MATLAB学习打卡第二天——整数规划(1)

对B12:

目标函数: Max Z = 40X1 + 90X2
约束条件:9*X1+7*X2<=56
                  7*X1+20*X2<=70
                  0<=X1<=4  X2>=3

MATLAB学习打卡第二天——整数规划(1)

MATLAB学习打卡第二天——整数规划(1)

对B21:

目标函数: Max Z = 40X1 + 90X2

约束条件:9*X1+7*X2<=56
                  7*X1+20*X2<=70
                  X1>=5  1>=X2>=0

MATLAB学习打卡第二天——整数规划(1)

MATLAB学习打卡第二天——整数规划(1)

对B22: 

目标函数: Max Z = 40X1 + 90X2

约束条件:9*X1+7*X2<=56
                  7*X1+20*X2<=70
                  X1>=5  X2>=2

 MATLAB学习打卡第二天——整数规划(1)

 MATLAB学习打卡第二天——整数规划(1)

此情况说明,约束条件出现自相矛盾的情况。

故此情况不可取

总论

B12,B21的结果中都有小数出现,不可取

B22约束条件自相矛盾,不可取

这种根据要求删除情况的操作,叫做剪枝

故,最优解即为B11

即X1 = 4, X2 = 2,Z = 340

5,总结

开始,将要求解的整数规划问题称为问题A,将与它相应的线性规划问题称为问题B。求解情况如下:
          1.B没有可行解,这时A也没有可行解,则停止
          2.B有最优解,并符合问题A的整数条件,B的最优解即为A的最优解,则停止。
          3.B有最优解,但不符合问题A的整数条件,记它的目标函数值为z,通过上述所说的分枝定界法进行分枝,剪枝,最后得出结果。

上一篇:解决JDBC报错Communications link failure


下一篇:python 给目录下的图片批量加印的代码