Chapters
  1. 1. 线性问题和简单形法

线性问题和简单形法

啥是线性优化问题

pending

优化问题的标准表示形式

pending

基本(可行)解

对于xRnx \in \mathbb{R}^n,如果不存在yRny \in \mathbb{R}^n,在点xx的每一个紧约束,同时紧约束yy,则xx是一个基本解。若xx在可行域PP内,则xx为基本可行解。

对于约束Ax=b,ARm×nAx = b, A \in \mathbb{R}^{m \times n},可以看作以下形式:

b=x1A1+x2A2++xnAnb = x_1A_1 + x_2A_2 + \cdots + x_nA_n

其中AiA_i表示矩阵AA的第ii列,也就是说,AA的每一列AjRmA_j \in \mathbb{R}^m是一个"方向向量",xjx_j是它的系数。

由于n>mn > m,用nn个向量去凑mm维的bb,有无穷多解。我们可以从AA中选取mm个线性无关的列,构成一个基(basis)ABA_B。其对应一个基本解xBx_B,使得ABxB=bA_Bx_B = b。用数学语言描述如下:

Def.:A basis B{1,,n},basis means: rank(AB)=B=m.\textbf{Def.}: \text{A basis } B \subseteq \{1,\cdots,n\}, \text{basis means: }rank(A_B) = |B| = m.

Obs.:\textbf{Obs.}: \exist xB=AB1bx_B = A_B^{-1}b and xj=0x_j = 0 for jBj \notin B

需要注意,ABA_B的每一列要求线性无关,这意味这不是任意选取mm列向量,都对应一个基本解。且当xB>0x_B > 0,基本解xBx_B才可行。这也是simplex\text{simplex}算法的要求之一。

那矩阵AA是否保证一定有至少一个基本解呢?答案是肯定的。对于优化问题的标准型表示来说,AA确保行线性无关,即rank(A)=mrank(A) = m,行秩等于列秩。所以AAnn列中必定能找出mm列线性无关 —— 至少一个基是保证存在的。

Simplex(简单形法)

Simplex\text{Simplex}算法简单描述就是,对于优化目标mincx\min c \cdot x,计算每一个基本可行解的目标值。遍历出最小值为止。

//算法take one伪代码

算法通过列替换的方式,寻找下一个basis。新的基本解yy可视为y=x+θdy = x + \theta ddd为从xxyy的方向向量,维度为nn。根据所对应矩阵AA的列向量的划分,dd包括:

d=(dBm维,基变量, dj=1,进基变量, 0,,0其余非基变量)d = \big(\underbrace{d_B}_{m\text{维,基变量}},\ \underbrace{d_j}_{=1,\text{进基变量}},\ \underbrace{0,\dots,0}_{\text{其余非基变量}}\big)

几何上可解释为,往组合里新增一单位(djd_j)列向量AjA_j,同时为了保持Ay=bAy = b对原ABA_B的代偿(dBd_B)。由于最终与xx相加的结果受θ\theta控制,我们不妨设置dj=1d_j = 1,则有:

yi=x+θ=θy_i = x + \theta = \theta ybi=xbi+θdbiy_{b_i} = x_{b_i} + \theta d_{b_i} dB=AB1Ajd_B = -A_B^{-1}A_j

几何上,dBd_B 就是沿这条棱走时各个基变量的变化率(斜率),而它的符号决定了后面所有的事:

alt text

dbid_{b_i} 的符号含义后果
dbi<0d_{b_i} < 0xbix_{b_i} 在递减迟早触到 0,是离基候选,限制 θ\theta 的上界
dbi0d_{b_i} \geqslant 0xbix_{b_i} 不减永远不会触零,对 θ\theta 没有约束
全部 dbi0d_{b_i} \geqslant 0没人拦得住θ\theta 可以取到 \infty \rightarrow 线性规划无界

我们需要保证xbi+θdbi>0x_{b_i} + \theta d_{b_i} > 0,且我们希望引入dd的结果是原ABA_B的某一列被抵消为0。因此dbi<0d_{b_i} < 0的部分是我们求解θ\theta的重要参考,则有:

dbi<0:θxbidbi\forall d_{b_i} < 0 : \theta \le -\frac{x_{b_i}}{d_{b_i}} θ=minbiB:dbi<0xbidbi\theta^* = \min_{b_i \in B : d_{b_i} < 0} -\frac{x_{b_i}}{d_{b_i}} θ=θ\theta = \theta^*

因此,对于计算cycxc \cdot y - c \cdot x有:

cycx=cjyj+cByBcBxB=cjyj+cB(yBxB)=cjyj+cBθdB=cjθcBθAB1Aj=θ(cjcBAB1Aj)=θcˉj\begin{aligned} c \cdot y - c \cdot x &= c_j y_j + c_B \cdot y_B - c_B \cdot x_B \\ &= c_j y_j + c_B \cdot (y_B - x_B) \\ &= c_j y_j + c_B \cdot \theta d_B \\ &= c_j \theta - c_B \cdot \theta A_B^{-1} A_j \\ &= \theta (c_j - c_B \cdot A_B^{-1} A_j) = \theta \bar{c}_j \end{aligned}

cˉj=(cjcBAB1Aj)\bar{c}_j = (c_j - c_B \cdot A_B^{-1} A_j)被称为列替换jj的reduced cost,只有当cˉj<0\bar{c}_j < 0时,基本解yy才是更优的。

引理 Lem.: Let B a basis such that1.xB=AB1b>02.cˉT=cTcBTAB1A0.Then the basic feasible solution induced by B is optimal\begin{aligned} \text{引理 }\textbf{Lem.: } &\text{Let B a basis such that} \\ &1. x_B = A_B^{-1}b > 0 \\ &2. \bar{c}^T = c^T - c_B^T A_B^{-1} A \ge 0. \\ &\text{Then the basic feasible solution induced by B is optimal} \end{aligned}

补充:初始基本解假设

为什么需要它:simplex\text{simplex}是"从一个顶点走到下一个顶点",所以必须先站在某个顶点上。可对一般的Ax=b,x0Ax = b, x ≥ 0,随便挑一个基BB算出的AB1bA_B^{-1}b很可能有负分量,甚至整个可行域可能是空的。"找到第一个基本可行解"本身就是个难题,跟"找最优解"难度相当。

auxiliary linear program\text{auxiliary linear program}的思路是:既然找不到入口,那就先造一个入口。

造法:添加人工变量

minj=1myjs.t.Ax+y=b,x0,y0\min \sum_{j=1}^{m} y_j \quad \text{s.t.} \quad Ax + y = b, \, x \ge 0, \, y \ge 0

这里的 yRmy \in \mathbb{R}^m人工变量(artificial variables)。关键设计有两点:

  1. 初始基白送。约束矩阵是 [AI][A \mid I]yy 对应的加 mm 列构成单位阵,天然线性无关。取 B=yB = y 的下标集,则 AB=IA_B = I, x=0,y=bx = 0, y = b。这就是一个现成的基本可行解——而且不用算。(前提是 b0b \ge 0,若某行 bi<0b_i < 0,把该行整行乘 1-1 即可,等式两边同乘不改变约束。)

  2. 它永远有解。辅助问题一定可行(上面那个点),且目标 yj0\sum y_j \ge 0 有下界,所以永不无界——单纯形法跑它必然正常终止。

alt text

几何上可以这样想:我们把问题抬升到了 Rn+m\mathbb{R}^{n+m}。原来的可行域 {x:Ax=b,x0}\{x : Ax = b, x \ge 0\} 就是新可行域与超平面 y=0y = 0 的交集。加人工变量相当于给了一个 "悬在半空中" 的容易找到的起点,然后用目标函数 y\sum y 把它往下压:

  • 最优值 =0= 0:说明能降到底,y=0y = 0,此时 Ax=bAx = bx0x \ge 0——落点正是原问题的一个基本可行解。它对应的基(去掉退化残留的 yy 下标、按 rank(A)=m\text{rank}(A) = m 补齐后)就是 Phase 2 要的初始基。
  • 最优值 >0> 0:说明无论怎么调 xx 都至少要作弊那么多,即 {x:Ax=b,x0}=\{x : Ax = b, x \ge 0\} = \varnothing——原问题不可行,直接报告,无需进入 Phase 2。

(关于simplex\text{simplex}的另外两个假设,无界假设不满足直接终止算法,非退化基假设需引入额外规则,有兴趣我再补充)