题目:
?
求解思路:

引用自:
https://blog.csdn.net/f1220684378/article/details/121197355
1.先用线性规划处理得到最优解
2.用分枝定界法,得到整数解。
3.进行剪枝,得到整数最优解
?求解过程:
在不考虑 , 为整数的情况下,求解此线性规划
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
结果如下:

?
?因为 , 首先对 进行分枝,分别得到 或 ?,首先对约束条件 , 进行线性规划:
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

?
?然后对限制条件 进行线性规划:
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的取值范围进一步缩小为
?接下来在 基础上对 进行分枝,分别得到 和 ,首先对 , 的限制条件上进行线性规划:
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
?
?
? 再对 , 的限制条件进行线性规划: ?
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

因此? 的取值区间缩短至 。
接着在 基础上对 进行分枝,分别为 和 ,首先对? , 的限制条件进行线性规划。
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

然后对? , 的限制条件进行线性规划: ?
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

?此限制条件下方程无解
剪枝
将 这一枝剪掉,即舍去。
当 且 这一枝剪掉。
结论
综上所述,可得当
? ?? 的最优整数解即 .
|