数学建模、运筹学之整数规划(原理、例题、代码)
一、何为整数规划?
- 整数规划具有深远的实际应用价值,因为现实生活中的规划、最优化问题大部分不是实数范围的规划而是整数规划,比如工人的数量、所需多台机器的数量等等。而整数规划并不像看起来那么简单,单纯将线性规划最优解取整得到的甚至都不一定是可行解。因此整数规划需要区分于线性规划独立设计算法解决,目前仍未针对整数规划发现多项式级别的算法。
- 不加特别说明的情况下,我们所说的整数规划实际上是整数线性规划。本文仍旧简称整数规划,因为整数非线性规划所能掌握的规律少之又少。
- 想了解整数规划的定义及含义,我们就需要拿它跟一般线性规划做对比。线性规划的变量取值可以是整数也可以是小数,而整数规划的变量取值部分或者全部限制为整数。因此我们可以理解为:整数规划比一般线性规划缩小了搜索范围,一般线性规划的最优值(最大或者最小)一定等于或者优于整数规划最优值。
- 进而根据整数规划变量取值范围的进一步限定,可以将整数规划划分为:纯整数规划(全部变量取值范围限制为整数)、混合整数规划(部分变量选取值范围限制为整数)、0-1整数规划(全部变量只可取0或1)。
- 整数规划问题不同类型所适用的算法不同。常用求解算法如下:分枝定界法、割平面法、隐枚举法、匈牙利法、蒙特卡洛法。。。
二、整数规划与线性规划
- 线性规划变量的取值范围是实数范围,也就是说最优解所对应的变量取值可以是整数也可以是小数。而整数规划变量的取值范围是整数范围,因此整数规划问题相较于对应的线性规划问题缩小了搜索范围。
- 下面我们来看一下整数规划最优解与其对应的线性规划最优解之间的关系:1.如果线性规划无可行解,那么整数规划同样无可行解。2.如果线性规划最优解变量取值满足整数规划要求,整数规划的最优解同线性规划。3.如果线性规划最优解变量取值不满足整数规划要求,整数规划可能无可行解,也可能有可行解但最优解变差。
三、分枝定界法
- 分枝定界法适用于求解完全整数规划与混合整数规划,混合整数规划相比较而言更加简单,只需要针对非限定为整数的变量不分枝即可。
- 我们首先来了解一下分枝定界法中三个基本操作的含义。分枝:将全部可行解空间分割为越来越小的子集;定界:对于分枝后的每一个子集计算目标函数值得上界与下界;