整数规划-割平面法
谨以此博客作为学习期间的记录。
割平面法思想
在之前,梳理了分支定界法的流程:分支定界法
除了分支定界法,割平面法也是求解整数规划的另一个利器。
我们已经知道,线性规划的可行域是一个凸集,而最优点将会在凸集的某个顶点处取到。而如果凸集的顶点都是整数点,那这样的话只要使用单纯形法即可求得整数最优解。
就像下图的凸包所示,在实际情况中,线性规划的可行域往往交点都不在整数点处,如果能找到整数点的一个凸包,那整数规划问题即可转化为普通的线性规划问题。但是想找到这样的一个凸包是非常困难的,只能使用某种方法去不断的逼近这个凸包。
这就是割平面法的思想:不断地向原问题中添加约束去逼近这个整数凸包,从而使得解出来的解为整数解。

Gomory’s割平面法原理
在上面提到了,通过不断添加约束去逼近一个整数凸包,那么该如何去添加约束呢?也就是如何确定割平面这是本部分的重点。
确定割平面的算法有很多,暂时先以较为基础的Gomory’s 分数割平面算法介绍,后续如果用到更多其他割平面再进行补充。
先看一个标准整数规划问题
m i n c T x s . t . { A x = b x ≥ 0 x ∈ Z n \begin{align*} min \quad & \mathbf{c}^T \mathbf{x} \\ s.t. \quad & \begin{cases} \mathbf{Ax} =\mathbf{b} \\ \mathbf{x} \geq \mathbf{0}\\ \mathbf{x} \in \mathbb{Z}^n \end{cases} \\ \end{align*} mins.t.cTx⎩
⎨
⎧Ax=bx≥0x∈Zn
当使用单纯形法求解整数规划问题时,可以将问题划分为基变量(Basic Variables)和非基变量(Non-Basic Variables)。在标准形式的整数规划问题中,可以进行如下的续写:
令基变量为 x B \mathbf{x}_B xB,非基变量为 x N \mathbf{x}_N xN。整数规划问题可以表示为:
min c T x = c B T x B + c N T x N \min \mathbf{c}^T \mathbf{x} = \mathbf{c}_B^T \mathbf{x}_B + \mathbf{c}_N^T \mathbf{x}_N mincTx=cBTxB+cNTxN
约束条件:
B x B + N x N = b x B , x N ≥ 0 x ∈ Z n \begin{align*} \mathbf{B} \mathbf{x}_B + \mathbf{N} \mathbf{x}_N &= \mathbf{b} \\ \mathbf{x}_B, \mathbf{x}_N &\geq \mathbf{0} \\ \mathbf{x} &\in \mathbb{Z}^n \end{align*} BxB+NxNxB,xNx=b≥0∈Zn
其中:
- c T = [ c B T , c N T ] \mathbf{c}^T = [\mathbf{c}_B^T, \mathbf{c}_N^T] cT=[cBT,cNT] 是目标函数的系数向量, c B \mathbf{c}_B cB 对应基变量的系数, c N \mathbf{c}_N cN 对应非基变量的系数。
- B \mathbf{B} B 和 N \mathbf{N} N 分别是基变量和非基变量对应的约束矩阵的子矩阵。
- x B \mathbf{x}_B xB 和 x N \mathbf{x}_N xN 分别是基变量和非基变量向量。
现在将整数约束松弛掉,使用单纯形法进行求解,多次迭代后模型收敛。收敛后的问题可以表述如下:
min f 0 + c N T x N \min \quad f_0 + \mathbf{c}_N^T \mathbf{x}_N minf0+cNTxN
约束条件:
x B + B − 1 N x N = B − 1 b x B , x N ≥ 0 \begin{align*} \mathbf{x}_B + \mathbf{B}^{-1}\mathbf{N} \mathbf{x}_N &= \mathbf{B}^{-1}\mathbf{b} \\ \mathbf{x}_B, \mathbf{x}_N &\geq \mathbf{0} \\ \end{align*} xB+B−1NxNxB,xN=B−1b≥0
其中 f 0 = c B T x B f_0 = \mathbf{c}_B^T \mathbf{x}_B f0=cBTxB在求解之后为一个常数。
那么将上述约束变形即可得到 x B + ⌊ B − 1 N ⌋ x N ≤ ⌊ B − 1 b ⌋ \mathbf{x}_B + \lfloor\mathbf{B}^{-1}\mathbf{N} \rfloor \mathbf{x}_N \leq \lfloor \mathbf{B}^{-1}\mathbf{b} \rfloor xB+⌊B−1N⌋xN≤⌊B−1b⌋将其与原约束相减可以得到
( B − 1 N − ⌊ B − 1 N ⌋ ) x N ≥ B − 1 b − ⌊ B − 1 b ⌋ (\mathbf{B}^{-1}\mathbf{N} - \lfloor\mathbf{B}^{-1}\mathbf{N} \rfloor )\mathbf{x}_N \geq \mathbf{B}^{-1}\mathbf{b} - \lfloor \mathbf{B}^{-1}\mathbf{b} \rfloor (B−1N−⌊B−1N⌋)xN≥B−1b−⌊B−

博客介绍了割平面法求解整数规划问题。割平面法思想是不断添加约束逼近整数凸包使解为整数解。以Gomory’s分数割平面算法介绍添加约束原理,还通过实例展示求解过程,将原问题不断变换并添加割平面不等式,最终得到整数解。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



