第二天打卡——整数规划

一、题目

 二、分析及步骤

1.区别

        与线性规划相比加入了自变量必须为整数的限制

2.步骤

2.1 未加入整数限制为

clc
clear all
c=[40 90];%用目标函数系数来确定
a=[9 7;7 20];%约束条件左边约束
b=[56;70];%约束条件右边系数
aeq=[];%没有等式约束,因此aeq,beq都为空
beq=[];
lb=[0;0];%下限为0
ub=[inf;inf];%上限
[x,fval]= linprog(-c,a,b,aeq,beq,lb,ub);
best=-fval;

 结果为:

x = 4.8092
      1.8168
best =355.8779

x均不满足整数要求。

2.2 分支定界

        1)将原来x1分割为两半(0<=x1<=4<4.8092,x1>=5>4.8092) 将原问题化为b1和b2两个问题,区别在于其对x1的上下限约束不同。

e(1) = floor(x(1));
e(2) = floor(x(1))+1;

%%%%%%%求b1
lb=[0;0];%下限为0
ub=[e(1);inf];%上限           
[B1,fval]=linprog(-c,a,b,aeq,beq,lb,ub); 
z1=-fval%计算最优值

%%%%%%%求b2
lb=[e(2);0];%下限为0
ub=[inf;inf];%上限          
[B2,fval]=linprog(-c,a,b,aeq,beq,lb,ub);
z2=-fval%计算最优值;

结果为:

z1 =  349

B1 = 4.0000
         2.1000

z2 = 341.4286

B2 =5.0000
        1.5714

不想写了.....

思路最重要哇

当出现两个小数时,记为x1(值为a)和x2(值为b),明显不满足整数的条件。所以引入了分支定界。

分支目的是为了把初始问题A分为b1和b2两个问题(将x1的定义域给分成两个)

Q:那是什么能保证他为整数呢?

A:对于b1问题x1的定界为【0 floor(a)】,b2问题x1的定义域为【ceil(a) 0】。显而易见的引入了整数边缘,对于一个单极值函数(指那个收益值z)而言,如果你将它从本来的最大值处切成了两半,那么剩下两半的极值肯定在它的边缘处,而他的边缘已经被定为了整数,所以就一直切西瓜那样x1方向一刀,x2方向一刀最后切出一个最好的。

感觉作业给的条件太理想了,不注意体现这个问题的妙处。  虽然能解这个题了,但不过也是依葫芦画瓢,自己还是有点糊。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林猫123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值