整数规划作业打卡day2

题目:

 

求解思路:

引用自:

https://blog.csdn.net/f1220684378/article/details/121197355

1.先用线性规划处理得到最优解

2.用分枝定界法,得到整数解。

3.进行剪枝,得到整数最优解

 求解过程:

在不考虑x_{1}x_{2}为整数的情况下,求解此线性规划

Matlab代码如下:

clear all;
clc;
c = [40,90];
a = [9 7;7 20];
b = [56;70];
aeq =[];
beq = [];
lb=zeros(2,1);
[x,z]=linprog(-c,a,b,aeq,beq,lb);
x'
best = c*x

结果如下:

 

 因为x_{1}x_{2}首先对x_{1}进行分枝,分别得到x_{1}\leq 4x_{1}\geq 5 ,首先对约束条件0\leq x_{1}\leq 4x_{2}\geq 0进行线性规划:

clear all;
clc;
c = [40,90];
a = [9 7;7 20];
b = [56;70];
aeq =[];
beq = [];
lb=[0;0];
ub = [4;inf]
[x,z]=linprog(-c,a,b,aeq,beq,lb,ub);
x'
best = c*x

 

 然后对限制条件x_{1}\geq 5,x_{2}\geq 0进行线性规划:

clear all;
clc;
c = [40,90];
a = [9 7;7 20];
b = [56;70];
aeq =[];
beq = [];
lb=[5;0];
ub = [inf;inf];
[x,z]=linprog(-c,a,b,aeq,beq,lb,ub);
x'
best = c*x


 

 所以可以将z的取值范围进一步缩小为0\leqslant z\leqslant 349.

 接下来在0\leq x_{1}\leq 4基础上对x_{2}进行分枝,分别得到0\leqslant x_{2}\leqslant 2x_{2}\geqslant 3,首先对0\leq x_{1}\leq 40\leqslant x_{2}\leqslant 2的限制条件上进行线性规划:

clear all;
clc;
c = [40,90];
a = [9 7;7 20];
b = [56;70];
aeq =[];
beq = [];
lb=[0;0];
ub = [4;2];
[x,z]=linprog(-c,a,b,aeq,beq,lb,ub);
x'
best = c*x

 

 

  再对0\leq x_{1}\leq 4x_{2}\geqslant 3的限制条件进行线性规划:
 

clear all;
clc;
c = [40,90];
a = [9 7;7 20];
b = [56;70];
aeq =[];
beq = [];
lb=[0;3];
ub = [4;inf];
[x,z]=linprog(-c,a,b,aeq,beq,lb,ub);
x'
best = c*x

因此 z的取值区间缩短至\left [ 340,349 \right ]

接着在x_{1}\geq 5基础上对x_{2}进行分枝,分别为0\leqslant x_{2}\leqslant 1x_{2}\geqslant 2,首先对 x_{1}\geq 50\leqslant x_{2}\leqslant 1的限制条件进行线性规划。

clear all;
clc;
c = [40,90];
a = [9 7;7 20];
b = [56;70];
aeq =[];
beq = [];
lb=[5;0];
ub = [inf;1];
[x,z]=linprog(-c,a,b,aeq,beq,lb,ub);
x'
best = c*x

然后对 x_{1}\geq 5x_{2}\geqslant 2的限制条件进行线性规划:
 

clear all;
clc;
c = [40,90];
a = [9 7;7 20];
b = [56;70];
aeq =[];
beq = [];
lb=[5;2];
ub = [inf;inf];
[x,z]=linprog(-c,a,b,aeq,beq,lb,ub);
x'
best = c*x

 此限制条件下方程无解

剪枝

x_{1}\geqslant5这一枝剪掉,即舍去。

x_{1} \leqslant4x_{2}=3这一枝剪掉。

结论

综上所述,可得当x_{1}=4,x_{2}=2

    z的最优整数解即z_{max}=340.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值