运筹学笔记 整数规划

Posted Lora鳃鳃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运筹学笔记 整数规划相关的知识,希望对你有一定的参考价值。

在前面讨论的线性规划问题中,最优解可能是整数,也可能不是整数,但对于某些实际问题,要求答案必须是整数。如所求的解是安排上班的人数,按某个方案剪裁钢材的根数,生产机器的台数等。
整数规划是一类要求变量取整数值的数学规划。

1 整数规划问题的提出

所谓整数规划(Integer Programming,简称IP):
决策变量要求取整数的线性规划

数学模型:
在这里插入图片描述
整数规划问题可以分为下列几种类型:
1 . 纯(全)整数线性规划(Pure Integer Linear Programming):指全部决策变量都必须取整数的整数线性规划。
2 . 混合整数线性规划 (Mixed Integer Linear Programming): 指决策变量中有一部分必须取整数,另一部分可以不取整数值的整数线性规划。
3 . 0-1整数规划(0-1 Integer Linear Programming):指决策变量只能取值0、1的整数线性规划。

在这里插入图片描述

2 整数规划与分支定界法

分支定界法可用于解纯整数或混合的整数线性规划问题
混合整数规划问题一般有无穷多个可行解。即使是纯整数规划问题,随着问题规模的扩大,其可行解的数目也将急剧增加。因此通过枚举全部可行解,并从中筛选出最优解的算法没有实际应用价值。
分支定界法是一种隐枚举法(implicit enumeration)或部分枚举法,是枚举法基础上的改进。
分支定界法的关键是分支定界

原问题的松驰问题:任何整数规划(IP),凡放弃某些约束条件(如整数要求)后,所得到的问题(P) 称为(IP)的松驰问题。

分支定界法的步骤:
一般求解对应的松驰问题,可能会出现下面几种情况:
若所得的最优解的各分量恰好是整数,则这个解也是原整数规划的最优解,计算结束。
若松驰问题无可行解,则原整数规划问题也无可行解,计算结束
若松驰问题有最优解,但其各分量不全是整数,则这个解不是原整数规划的最优解,转下一步。

从不满足整数条件的基变量中任选 一个xl 进行分枝,它必须满足xl ≤[xl ] 或xl ≥[xl ] +1中的一个,把这两个约束条件加进原问题中,形成两个互不相容的子问题(两分法)。
定界:把满足整数条件各分枝的最优目标函数值作为上(下)界,用它来判断分枝是保留还是剪枝。
剪枝:把那些子问题的最优值与界值比较,凡不优或不能更优的分枝全剪掉,直到每个分枝都查清为止。

“分支”为整数规划最优解的出现创造了条件,而“定界”则可以提高搜索的效率。

例1. 用分枝定界法求解:
在这里插入图片描述
用单纯形法可解得相应的松驰问题的最优解为(6/5,21/10)
Z=111/10为各分枝的上界。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3 整数规划与割平面法

此方法的基础仍然是用解线性规划的方法去解整数规划问题。
思路: 先不考虑变量xi是整数这一条件,但增加线性约束条件(几何术语:割平面)使得由原可行域中切割掉一部分(此部分只包含非整数解,没有切割掉任何整数可行解),使切割后最终得到这样的可行域,它的一个有整数坐标的极点恰好是问题的最优解。
该方法是1958年R.E.Gormory首先提出的,故又称为Gormory割平面法
割平面法的关键: 如何找到适当的割平面?
构造割平面约束的方法很多,下面只介绍一种(它可以从相应线性规划的最终单纯形表中直接产生)

先通过举一简单的例子入手,介绍算法的过程
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

将上推导对应一般情况,可得:
思路:
用割平面法解整数规划时,若其松弛问题的最优解x不满足整数条件,则从x的非整分量中选取一个,用以构造一个线性约束条
件,将其加入原松弛问题中,形成一个新的线性规划之后求解。
若新的最优解满足整数条件,则它就是整数规划的最优解,否则重复上述步骤,直到获得最优解为止。
为获得整数最优解,每次增加的线性约束条件应满足2个基本性质
(1)已获得的不符合整数要求的线性规划最优解不满足该线性约束条件,从而不可能在以后的解中再出现。
(2)凡整数可行解均满足该线性约束条件,故整数最优解始终被保留在每次形成的线性规划可行域中。
在这里插入图片描述

4 指派问题

一类特殊的0-1规划问题:将m项工作分派给n个人去做,既发挥各人特长又使总效率最高。
又如:某单位需完成n项任务,恰好有n个人可承担这些任务。由于各人的专长不同,故各人完成任务的效率(如时间等)不同。问题需解决确定指派哪个人完成哪项任务,使完成n项任务的总效率最高等。
上述类型问题称为指派问题(assignment problem)
在这里插入图片描述

指派问题是0-1规划及运输问题的特例,可用前已学方法求解,但不够方便。
(下介绍一针对指派问题特点的简便求解方法。)
指派问题的标准形式为:
即:目标求最小,且系数矩阵为方阵(每项工作只能由1个人做,每个人只能做一项工作)
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
从中即可说明,系数矩阵中元素本身的大小不决定最优解,而元素之间的差值发生则可能改变最优解
其中k为一个常数,故当z达最大值时,z’也达到最大值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述

(完)

以上是关于运筹学笔记 整数规划的主要内容,如果未能解决你的问题,请参考以下文章

运筹学整数规划 ( 整数规划求解方法 | 指派问题 )

运筹学 整数规划割平面法 题求解

应用运筹学基础:整数规划 - 线性整数规划割平面法与分枝定界法

运筹学整数规划求解这道题 要过程和结果

用matlab求解整数规划双角标问题

4. 整数规划:割平面法python代码