第二天打卡-整数规划(1)

练习matlab的第二天。

目录

一、题目。

二、简单分析

三、求解实现

1、普通的线性规划处理

2、 分枝定界法

        ①可确定0<=z<=356,由于x1和x2均不为整数,所以进行分枝。

        ②首先对x1进行分枝

        ③对x2进行分枝.

        ④进行剪枝

        ⑤结论.

四、总结与思考


一、题目。

 

典型的线性规划,特别的条件x_{1}x_{2}\geqslant 0且为整数。

二、简单分析

①可以先用普通的线性规划处理得到结果。

②根据分枝定界法,得到整数解。

        分枝定界法可用于解纯整数或混合的整数规划问题。

三、求解实现

1、普通的线性规划处理

clear;
clc;
f=[40 90]';
a=[9 7;7 20];
b=[56;70];
lb=zeros(2,1);
[x,z]=linprog(-f,a,b,[],[],lb);
x=x'
z=-z

运行结果:

 

2、 分枝定界法

        ①可确定0<=z<=356,由于x1和x2均不为整数,所以进行分枝。

        ②首先对x1进行分枝

寻找x1相邻的整数,所以可将x_{1}分枝为x_{1}=4和x_{1}=5,此时x_{2}约束不变。 

                 当x_{1}=4

clear;
clc;
f=[40 90]';
a=[9 7;7 20];
b=[56;70];
lb=zeros(2,1);
ub=[4;inf];
[x,z]=linprog(-f,a,b,[],[],lb,ub);
x=x'
z=-z

运行结果:

 因此x_{1}=4,x_{2}=2.1,z_{max}=349.

                当x_{1}=5

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

运行结果:

因此x_{1}=5,x_{2}=1.5714,z_{max}=341.4286.

由此可以将z的取值范围进一步压缩。0\leqslant z\leqslant 349.

        ③对x2进行分枝.

所以x_{2}可以分枝为x_{2}=2x_{2}=3

        当x_{2}=2

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

运行结果:

        当x_{2}=3时 

clear;
clc;
f=[40 90]';
a=[9 7;7 20];
b=[56;70];
lb=[0;3];
ub=[4;3];
[x,z]=linprog(-f,a,b,[],[],lb,ub);
x=x'
z=-z

运行结果:

由此可以进一步压缩z的取值范围。340\leqslant z\leqslant 341.

        ④进行剪枝

        舍去不满足条件的分枝。

        当x_{1}=5x_{2}=1.5714,对此时的x_{2}分枝为x_{2}=1,x_{2}=2.

x_{2}=1

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

运行结果:

x_{2}=2 

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

运行结果:

此时无解。

因此将x_{1}=5这一枝剪掉,即舍去。

同时当x_{1}\geqslant 4x_{2}=3这一枝剪掉。

        ⑤结论.

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

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

四、总结与思考

①分枝定界法在我个人看来有一种控制变量法的感觉,控制一个解固定不变去寻找另一个解的取值。

②从一个小数解去寻找相邻整数,根据这个整数再获得其他解,有一种探索的感觉。

③当变量在两个以上进行分枝定界法会变得更加繁琐与困难。

④分枝定界分思路简单,而且经典。

⑤这个算法可以写成函数体来解决简单的整数规划问题。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值