当前位置: 代码迷 >> 综合 >> 2021.11.8
  详细解决方案

2021.11.8

热度:24   发布时间:2023-11-18 02:45:05.0

目录

一、求解该整数线性规划

二、代码求解

三、结果呈现


一、求解该整数线性规划

Max  z = 40x1 + 90x2

9x1 + 7x2 <= 56

7x1 + 20x2 <= 70

x1,x2 > 0   且为整数

二、代码求解

1)直接求线性规划(先不考虑整数)

c=[40 90];
a=[9 7;7 20];
b=[56 70];
aeq=[];
beq=[];
lb=[0;0];
up=[inf;inf];
[x,fval]=linprog(-c,a,b,aeq,beq,lb,up);
x
best=c*x

结果 

x =

    4.8092
    1.8168


best =

  355.8779

2)分支定界法

B1  0<x1<4  0<x2

c=[40 90];
a=[9 7;7 20];
b=[56 70];
aeq=[];
beq=[];
lb=[0;0];
up=[4;inf];
[x,fval]=linprog(-c,a,b,aeq,beq,lb,up);
x
best=c*x

x =

    4.0000
    2.1000


best =

  349.0000

B2 x1>5   x2>0

c=[40 90];
a=[9 7;7 20];
b=[56 70];
aeq=[];
beq=[];
lb=[5;0];
up=[inf;inf];
[x,fval]=linprog(-c,a,b,aeq,beq,lb,up);
x
best=c*x

x =

    5.0000
    1.5714


best =

  341.4286
B11  0<x1<4  0<x2<2

c=[40 90];
a=[9 7;7 20];
b=[56 70];
aeq=[];
beq=[];
lb=[0;0];
up=[4;2];
[x,fval]=linprog(-c,a,b,aeq,beq,lb,up);
x
best=c*x

x =

    4.0000
    2.0000


best =

  340.0000

B12  0<x1<4  x2>3

c=[40 90];
a=[9 7;7 20];
b=[56 70];
aeq=[];
beq=[];
lb=[0;3];
up=[4;inf];
[x,fval]=linprog(-c,a,b,aeq,beq,lb,up);
x
best=c*x

x =

    1.4286
    3.0000


best =

  327.1429
B21  x1>5  0<x2<1

c=[40 90];
a=[9 7;7 20];
b=[56 70];
aeq=[];
beq=[];
lb=[5;0];
up=[inf;1];
[x,fval]=linprog(-c,a,b,aeq,beq,lb,up);
x
best=c*x

x =

    5.4444
    1.0000


best =

  307.7778
B22  x1>=5  x2>2

c=[40 90];
a=[9 7;7 20];
b=[56 70];
aeq=[];
beq=[];
lb=[5;2];
up=[inf;inf];
[x,y]=linprog(-c,a,b,aeq,beq,lb,up);
x
best=c*x

x =

         [ ]

y =

         [ ]

三、结果呈现

B21后面仍有小数,剪枝

B22不可行解

B12后面仍有小数,剪枝

B11结果都为整数,即最优解

x1 = 4, x2 = 2, z = 340