整数规划

整数规划

如果除了目标函数和约束函数是线性函数以外,还要求决策变量取整数值,那么这类问题就是线性整数规划,简称为整数规划。其中,如果要求所有变量都要取整数值,则称纯整数规划;如果部分变量取整数值,则称混合整数规划;如果要求变量取 0 或 1,则称0-1规划。一般表示为:
$$\begin{aligned} \min \quad & cx \\ s.t. \quad & Ax=b \\ & x \ge 0, \quad x_j为整数,\quad \forall\ j\in IN. \end{aligned}$$ 其中,$IN$ 是取整数变量的下标集。

割平面法

1958年,R.E.gomory 创立了解整数规划的割平面法。这种方法的思想是首先求解整数规划的线性松弛问题,如果得到的最优解满足整数的要求,则为整数规划的最优解;否则选择一个不满足整数要求的基变量,定义一个新约束,添加到原来的约束集中。这个约束的作用是:切掉一切不满足整数要求的可行解,缩小可行域,而保留所有整数可行解。然后,解新的松弛线性规划。重复以上过程,直至求出最优解。这个方法中,关键是如果定义切割约束,下面给予简要介绍。
考虑整数规划问题: $$\begin{aligned} \min \quad & cx \\ s.t. \quad & Ax=b \\ & x \ge 0, \quad x的分量为整数. \end{aligned}$$ 该整数规划问题的线性松弛问题是: $$\begin{aligned} \min \quad & cx \\ s.t. \quad & Ax=b \\ & x \ge 0 \end{aligned}$$

其中,$A=(p_1,p_2,\cdots,p_n)$ 为 $m\times n$ 矩阵,设该问题的最优基为 $B$,则最优解为:
$$x^*=\left[\begin{array}{ccc} x_B \\ x_N \end{array}\right]=\left[\begin{array}{ccc} B^{-1}b \\ 0 \end{array}\right]=\left[\begin{array}{ccc} \overline{b} \\ 0 \end{array}\right] \ge 0$$ 若 $x^*$ 的分量都为整数,则 $x^*$ 是整数规划的最优解;否则选择其中一个非整数基变量,比如 $x_{B_i}$,用包含这个基变量的约束定义切割约束,方法如下: 假设含有 $x_B$ 的约束为: $$x_{B_i}+\sum_{j\in R}y_{ij}x_j = \overline{b}_i$$ 其中 $R$ 是非基变量的下标集,$y_{ij}$ 是 $B^{-1}p_j$ 的第 $i$ 个分量。记做: $$y_{ij} = [y_{ij}] + f_{ij},\quad j\in R \\ \overline{b}_i = [\overline{b}_i] + f_i$$ 式中 $[y_{ij}]$ 和 $[\overline{b}_i]$ 表示不大于其数值的最大整数,$f_{ij}$ 和 $f_i$ 分别表示其相应的小数部分。则约束方程可以写为: $$x_{B_i}+\sum_{j\in R}[y_{ij}]x_j-[\overline{b}_i]=f_i - \sum_{j\in R}f_{ij}x_j$$ 由于 $0 < f_i < 1,0\le f_{ij} < 1,x_j \ge 0$,则有: $$f_i - \sum_{j\in R}f_{ij}x_j < 1$$ 对于任意整数可行解,上式左端为整数,右端为小于 1 的整数,则得到整数解得必要条件是: $$f_i - \sum_{j\in R}f_{ij}x_j \le 0$$ 将上式作为切割条件,添加到约束条件中,得到线性规划: $$\begin{aligned} \min \quad & cx \\ s.t. \quad & Ax=b \\ & f_i - \sum_{j\in R}f_{ij}x_j \le 0 \\ & x \ge 0 \end{aligned}$$