目录
一、梦开始的地方
1、什么是整数规划模型?
决策变量限制为整数,比如人的数量,机器的数量等。
2、解的情况
(1)原线性规划最优解全是整数,则整数规划最优解与线性规划最优解一致。
(2)整数规划无可行解。
(3)有可行解(当然也存在最优解),但是最优解变差。
整数规划最优解不能按照实数最优解简单取整而获得。
3、问题分类
根据决策变量取整要求的不同,可以分为纯整数规划、全整数规划、混合整数规划、0-1整数规划。
纯整数规划(完全整数规划):所有决策变量都要求取非负整数(引进的松弛变量和剩余变量可以不要求为整数)。
全整数规划:除了所有决策变量要求取非负整数外,系数aij和常量bij也要求取整数(引进的松弛变量和剩余变量也必须是整数)。
混合整数规划:只有一部分决策变量要求取非负整数。
0-1整数规划:所有决策变量只能取0或1两个整数。
4、数学模型
二、分支定界算法求解
(后续更新)
三、割平面算法求解
1、基本思想
(1)如果松弛问题(P0)无解,则该整数规划问题(P)无解。
(2)如果松弛问题的最优解为整数向量,则也是该整数规划问题的最优解。
(3)如果松弛问题的解中含有非整数分量,则对松弛问题增加割平面条件:即对松弛条件增加一个线性约束,将松弛问题的可行区域割掉一块,使得非整数解刚好在割掉的一块当中,但又没有割掉原问题的可行解,得到问题P1,随即重复上面的过程。
例题说明:
求解以下问题,求z的最大值
先画图,把区域找到。
观察发现,A点到B点,纵坐标范围为( 1, 7/4)中间没有整数,所以可以把A坐标上面的全部割掉(如红线所示)。
同理,发现D到C的横坐标范围内也没有整数,也可以割去(如紫线所示)。
最终割完后的区域为绿色部分
由此可得,最优解是在( 1, 1),即z的最大值为2
2、解题步骤
第一步:求解线性规划最优解
如果无解,则该问题也无解,如果是整数解,则是最优解,如果有整数也有小数,则用割平面法。
第二步:构造整数+小数(>=0)形式
第三步:将整数部分和小数部分,放在等式左右两边
第四步:根据不等式和等式关系推理
例如上题:
引入几个松弛变量x3,x4。满足线性规划的形式
③-②,③+③*2得到新的方程组
④
⑤
将④构造成整数+小数的形式,其中小数部分要大于等于0
将整数部分和小数部分分别放在等号两侧
因为x1,x3都是整数并且大于0,所以等号左边一定是整数
等号右边括号里的值一定大于0,但是等号右边的值又要是整数,所以x1-x3必须小于0(自己把思路推理一遍,考虑大于0和小于0两种情况)。
所以等式右边小于0,化简之后得
再将②*3+③,得到
又因为刚得到 ,
所以4x2加上大于等于三的数,结果为7,x2为整数且大于0
因此,x2=1
3、实际应用
假设不管用哪种方式,一共生产了A产品x1个,B产品x2个,C产品x3个,D产品x4个,E产品x5个,F产品x6个。
可以得到以下方程组
加入松弛变量 (符号是因为求最小值)
随后用Matlab求解(后续更新)
四、匈牙利算法求解
(后续更新)