【整数规划(十)】二次整数规划 |
您所在的位置:网站首页 › 0-1规划问题的求解方法 › 【整数规划(十)】二次整数规划 |
在上一节笔记中我们讲解了Benders分解,上一节笔记内容如下所示 王源:【整数规划(九)】Benders 分解(理论分析+Python代码实现)如需购买本笔记对应的中文版教材可点击下面链接: 1、二次整数规划问题简介我们在前面的笔记中探讨的主要都是线性整数规划问题,当然也确实是因为线性整数规划问题相对来说求解算法比较成熟,而非线性整数规划问题的求解非常困难。二次整数规划问题是非线性整数规划问题中最简单的一类问题,同时也是应用范围最广的一类非线性整数规划问题。如下所示是一般的二次整数规划问题的形式:
在上述问题中 若
其中 通过等式(1.3)的等价替换,我们就可以将属于一般整数集的变量 若
其中 从上面的例子可以看出,如果整数集合是一个包含连续整数的集合,那我们在转化的时候可以采用更少的0-1变量就足以等价转化。 到这里我们知道有转化方法1和2,因此本小节只讨论0-1二次整数规划问题,若不是0-1二次整数规划可以由上面的方式转化得到。如下所示是0-1二次整数规划问题:
进一步我们知道因为
在一些实际问题中,我们也经常讨论
优化问题(1.4-1.5)可以通过 进行等价代换 在上式中由于
可以知道大多数的0-1二次整数规划问题是NP-hard的,同时由于0-1二次整数规划是非线性的问题导致问题的难度大大增加。我们一般采用三种常见的思路来解决0-1二次整数规划问题: 思路1:把0-1二次整数规划问题线性化,转化为线性整数规划问题去求解,这样就避开了非线性的问题。 思路2:直接解0-1二次整数规划问题,采用半定规划的方法来把0-1二次整数规划问题进行松弛求解。 思路3:一些极特殊极简单的0-1二次整数规划问题是多项式可解的,因此可以很快的实现求解。 接下来第2-4章就围绕以上提到的三种求解思路来展开。思路1和思路2是比较常用的,思路3只能适用于特别特殊的一些问题。 2、0-1二次整数规划问题线性化方法首先给出结论:任意一个0-1二次整数规划问题都可以转化为一个线性整数规划问题。 对于
以上条件不难验证,大家可以自行带入不同的 考虑如下无约束0-1二次规划问题: 接下来我们采用上面介绍的线性化的方法,将目标函数(2.1)中的二次项都替换为
并且根据表达式
优化问题(2.3-2.6)与(2.1)完全等价,观察优化问题(2.3-2.6)可知所有的目标函数和约束都是线性的。至此我们完成了对0-1二次整数规划问题线性化的过程。同理也可以采用 最后一点,可能有人会产生一个疑问:既然都有通用的方法可以把任意一个0-1二次整数规划问题转化为线性整数规划问题了,那我们研究0-1二次整数规划问题岂不是没有什么意义了?直接研究线性整数规划问题就好了啊。反正它们两个可以完全等价转化啊,干嘛不都把0-1二次整数规划问题转化为简单的线性整数规划问题呢? 想回答这个问题我们还是回到转化后得到的线性整数规划问题中去看,我们观察优化问题(2.3-2.6)发现它比没有线性化之前的问题(2.1)的决策变量的维数多了 也就是说到这里我们知道 虽然问题(2.3-2.6)是线性的,但是其决策变量维数增大了一个数量级。那么在实际的求解过程中到底是问题(2.3-2.6)求解速度快还是问题(2.1)快还真不好确定。因此线性化不是万能的,无脑线性化也可能带来很强的副作用。如何去取舍,如何去trade off是我们要根据具体问题具体而定。 3、一类特殊的无约束0-1二次整数规划问题前面提到了对于一般的无约束0-1二次规划问题是NP-hard的,那是不是存在一些特殊的0-1二次规划问题是可以多项式时间内求解的呢?答案是有的,本节我们就来介绍一种特殊的可见在多项式时间内求解的0-1二次规划问题。还是先考虑无约束0-1二次规划问题(2.1)的等价形式(2.3-2.6):
假设若
优化问题(2.7-2.10)和优化问题(2.3-2.6)最优解是一样的。这是因为约束条件 我们进一步提取出优化问题(2.7-2.10)的约束矩阵的形式为 至此,由于优化问题(2.7-2.10)的约束矩阵是全单模的,那么求解其线性松弛问题完全等价于求解原始问题。所以该问题就等价转化为线性规划问题如下所示:
非线性的整数规划问题目前来说求解难度非常大,在很多情况之下都是考虑把非线性转化为线性去处理,目前在主流求解器中也是将非线性整数规划问题转化为线性整数规划问题来求解。如果根据特殊问题所具备的特性有针对性的设计非线性整数规划的求解算法确实是有可能超过采用求解器的效果的,但这样的情况就是 case by case 的去考虑了。 至此整数规划的理论部分已经完结了,整数规划笔记系列即将迎来尾声(下一期笔记也就是最后一期笔记我会讲一下关于整数规划求解器的内容,以及如何使用整数规划求解器来求解整数规划问题)。有很多内容是我一开始想写的,但是由于时间精力有限最终删掉了,例如 branch and price,代理拉格朗日松弛算法,各种非光滑优化的方法,TSP问题的列生成求解算法,基于半定规划松弛的二次整数规划问题等等。不过总体来说基本上达到了我一开始的目标,这些高级一点的内容后续有时间再慢慢补充。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |