最优化方法(3):线性规划基本理论

系列笔记是本人在上最优化方法时整理的,参考书籍为经典的 Numerical Optimization (Second Edition)。笔记主要分为0~5共六个部分,包括优化基础、线搜索、带约束优化基础、线性规划、对偶理论、带约束凸优化算法,以及一些零散的部分。这里是第三部分,也就是线性规划基本理论。

线性规划基本理论

线性规划标准形式与转化

线性规划问题有着如下形式:
min ⁡ c T x s . t . a i T x ≤ b i , i = 1 , … , m , \begin{aligned}&\min\quad c^Tx\\&\mathrm{s.t.}\quad a_{i}^{T}x\leq b_{i},\quad i=1,\ldots,m,\end{aligned} mincTxs.t.aiTxbi,i=1,,m,
约束条件可以写成:
A x : = ( a 1 T a 2 T … a m T ) ⋅ x ≤ b Ax:=\begin{pmatrix} a_{1}^{T} \\ a_{2}^{T} \\ \dots \\ a_{m}^{T} \end{pmatrix}\cdot x\leq b Ax:= a1Ta2TamT xb
引入松弛变量 z z z,并将 x x x 写成 x = x + − x − x=x^{+}-x^{-} x=x+x 使得上式化为等式:
( A − A I ) ⋅ ( x + x − z ) = b ( x + x − z ) T ≥ 0 \begin{align*} \begin{pmatrix} A & -A & I \end{pmatrix}\cdot \begin{pmatrix} x^{+} \\ x^{-} \\ z \end{pmatrix}=b\\ \begin{pmatrix} x^{+}&x^{-}&z \end{pmatrix}^{T}\geq 0 \end{align*} (AAI) x+xz =b(x+xz)T0

就化成了如下形式:
min ⁡ c T x s.t.    A x = b , x ≥ 0 , \begin{aligned}&\min\quad c^Tx\\&\text{s.t. }\: Ax=b,x\geq0,\end{aligned} mincTxs.t. Ax=b,x0,
被称为标准形式。此后研究都采取该形式。

一个小小的问题是,当改变成标准形式后,我们似乎没有添加 x + , x − x^{+},x^{-} x+,x两者中最多只有一者严格大于0这一限制。但是线性规划的目标函数 ( c T − c T ) ⋅ ( x + x − ) \begin{pmatrix}c^T&-c^T\end{pmatrix}\cdot \begin{pmatrix}x^+\\x^-\end{pmatrix} (cTcT)(x+x)保证了在取得最值时,两者中至多只有一者严格大于0。

更为复杂的转化问题包含了max和绝对值函数。考虑这样一个问题:
min ⁡   max ⁡ i   ∣ a i T x − b i ∣ \min\: \max_{i}\: \lvert a_{i}^{T}x-b_{i}\rvert minimaxaiTxbi
可以转化为:
min ⁡   t s . t . a i T x − t ≤ b i − a i T x − t ≤ − b i \begin{align*} &\min\: t\\ &s.t.&a_{i}^{T}x-t\leq b_{i}\\ & &-a_{i}^{T}x - t\leq -b_{i} \end{align*} mints.t.aiTxtbiaiTxtbi
关键就是引入松弛变量和取正部和负部。

基本理论准备

先介绍一些术语:”不可行“指可行域为空集,“无界”是指在可行域内目标函数没有下界,“最小值点”也称作解。

线性规划的标准形式的拉格朗日函数为:
L ( x , λ , s ) = c T x − λ T ( A x − b ) − s T x . \mathcal{L}(x,\lambda,s)=c^Tx-\lambda^T(Ax-b)-s^Tx. L(x,λ,s)=cTxλT(Axb)sTx.KKT条件如下:
c = A T λ + s , A x = b , x ≥ 0 , s ≥ 0 , x i s i = 0 , 1 ≤ i ≤ n . \begin{aligned} &c^{}=A^T\lambda+s, \\ &Ax=b,x\geq0, \\ &\begin{aligned}s\geq0, x_is_i=0,1\leq i\leq n.\end{aligned} \end{aligned} c=ATλ+s,Ax=b,x0,s0,xisi=0,1in.

对于线性规划问题,我们总有 T Ω ( x ) ≡ F ( x ) T_{\Omega}(x)\equiv \mathcal{F}(x) TΩ(x)F(x),于是KKT条件就是一个必要条件。对于线性优化(凸优化),KKT条件还是一个充分条件
证明:
c T x = ( A T λ ∗ + s ∗ ) T x = λ ∗ T A x + s ∗ T x ≥ λ ∗ T A x = λ ∗ T A x ∗ = c T x ∗ c^{T}x=(A^{T}\lambda_{*}+s_{*})^{T}x=\lambda_{*}^TAx+s_{*}^Tx\geq\lambda ^{T}_{*}Ax=\lambda_{*}^{T}Ax_{*}=c^{T}x_{*} cTx=(ATλ+s)Tx=λTAx+sTxλTAx=λTAx=cTx

A = A m × n A=A_{m\times n} A=Am×n,其中 m ≤ n m\leq n mn。我们必须假设这个约束集没有重复约束,也就是说 r ( A ) = m r\left({A}\right) = m r(A)=m。于是该约束给出了一个 n − m n-m nm 维超平面。根据高中所学的线性规划知识,我们知道线性规划问题的最优值总是在可行域的某一个顶点上取到。下面我们希望证明这一点。在此之前,我们希望给顶点一个代数刻画。由于上述区域一定是凸的,于是顶点的等价刻画为:
i f : x = α y + ( 1 − α ) z , α ∈ ( 0 , 1 )    ⟹    x = y = z if:x=\alpha y+(1-\alpha)z,\alpha \in(0,1)\implies x=y=z if:x=αy+(1α)z,α(0,1)x=y=z

定义. 一个点 x x x 被称作基本可行点,如果它是可行的,并且存在一个索引集 { 1 , ⋯   , n } \{1, \cdots, n\} {1,,n} 的子集 B \mathcal{B} B,使得:

  • B \mathcal{B} B 包含 m m m 个索引 (m来源于 A m × n A_{m\times n} Am×n)。
  • 对于所有 i ∉ B i \notin \mathcal{B} i/B,有 x i = 0 x_i = 0 xi=0(只有当 i ∈ B i \in \mathcal{B} iB 时, x i ≥ 0 x_i \geq 0 xi0 才可能不为零)。
  • 矩阵 B = [ A i ] i ∈ B B = [A_i]_{i \in \mathcal{B}} B=[Ai]iB 是满秩的,其中 A i A_i Ai 是矩阵 A A A 的第 i i i 列。

定理:一个基本可行点一定是顶点,反之亦然。

证明:不失一般性,设 B : = { 1 , 2 , … , m } \mathcal{B}:=\{ 1,2,\dots,m \} B:={1,2,,m}。于是 x m + i = 0 , n − m ≥ i ≥ 1 x_{m+i}=0,n-m\geq i\geq 1 xm+i=0,nmi1。而:
b = A x = ∑ i = 1 m A i x i b=Ax=\sum_{i=1}^{m}A_{i}x_{i} b=Ax=i=1mAixi
如果存在: x = α y + ( 1 − α ) z , α ∈ ( 0 , 1 ) x=\alpha y+(1-\alpha)z,\alpha \in(0,1) x=αy+(1α)z,α(0,1),对于 m + i {m+i} m+i 项, y , z y,z y,z肯定都是0。下面看前 m 项。于是,由 y , z y,z y,z可行:
b = ∑ i = 1 m y i A i = ∑ i = 1 m z i A i b = \sum_{i=1}^{m}y_{i}A_{i} = \sum_{i=1}^{m}z_{i}A_{i} b=i=1myiAi=i=1mziAi
由于这时是满秩线性组合,可知组合系数唯一。于是 x=y=z。从而可知 x 一定是顶点。

下面证明 x 是顶点,则其为一个基本可行点。设顶点 x x x p p p 个分量非零,不失一般性设 i ≤ p i\leq p ip 的分量非零。下证 B = [ A i ] i ≤ p B = [A_i]_{i \leq p} B=[Ai]ip满秩。

如果不满秩,则 A p = ∑ i = 1 p − 1 z i A i A_{p}=\sum_{i=1}^{p-1}z_{i}A_{i} Ap=i=1p1ziAi。对于可行点 x x x,令微扰 x ( ε ) : = x + ε ( z 1 … z p − 1 − 1 ) x(\varepsilon):=x+\varepsilon \begin{pmatrix} z_{1} \\ \dots \\ z_{p-1} \\ -1 \end{pmatrix} x(ε):=x+ε z1zp11
于是 A x ( ε ) = A x = b Ax(\varepsilon)=Ax=b Ax(ε)=Ax=b。而 x i > 0 x_{i}>0 xi>0,当 ε \varepsilon ε 足够小时, x i + ε z i x_{i}+\varepsilon z_{i} xi+εzi仍然大于零。于是 x ( ε ) , x ( − ε ) x(\varepsilon),x(-\varepsilon) x(ε),x(ε)都是可行点,两者组合中点就是x,与顶点的定义矛盾。

于是 p ≤ m p\leq m pm。而如果 p < m pp<m,可以随意再加入 m − p m-p mp 个列构成满秩方阵。这就完成了定理的证明。

定义 基本最优点:基本最优点是指作为解的基本可行点。
定理:如果可行,则必有基本可行点;如果有解,则必有基本最优点。
证明:先证明前半句话。如果有可行点,则设可行域为 D ≠ ∅ D\neq\emptyset D=. 取其中某一个拥有最少非零分量数的点 x x x,设其非零分量数为 p p p。下证其为基本可行点。如果p=0,则显然可以任取 A i A_{i} Ai 构成一个满秩方阵,所以令 p ≥ 1 p\geq 1 p1 。不妨设 x 1 , x 2 , … , x p x_{1},x_{2},\dots,x_{p} x1,x2,,xp 非零。则 A 1 , A 2 , … , A p A_{1},A_{2},\dots,A_{p} A1,A2,,Ap 独立。否则 A p = ∑ i = 1 p − 1 z i A i A_{p}=\sum_{i=1}^{p-1}z_{i}A_{i} Ap=i=1p1ziAi。仍按照上面一个定理的证明中定义 x ( ε ) x(\varepsilon) x(ε),当 ε \varepsilon ε 慢慢变大时,至少 p p p 位置上的 x p x_{p} xp 可以被清零。这与 x x x 是非零分量最少的点矛盾。于是前半句话得证。

接下来证明后半句话。同样找到非零分量数最少的解 x x x,下证明其为基本可行点。设其非零分量数为 p p p,不妨设 x 1 , x 2 , … , x p x_{1},x_{2},\dots,x_{p} x1,x2,,xp 非零。对于可行点 x x x,令微扰 x ( ε ) : = x + ε ( z 1 … z p − 1 − 1 ) x(\varepsilon):=x+\varepsilon \begin{pmatrix} z_{1} \\ \dots \\ z_{p-1} \\ -1 \end{pmatrix} x(ε):=x+ε z1zp11
由于 x x x 是最优点,于是:
c T x ≤ c T x ( ε )    ⟹    c T ( z 1 … z p − 1 − 1 ) = 0 c^{T}x\leq c^{T}x(\varepsilon)\implies c^{T}\begin{pmatrix} z_{1} \\ \dots \\ z_{p-1} \\ -1 \end{pmatrix}=0 cTxcTx(ε)cT z1zp11 =0
于是 c T x = c T x ( ε ) c^{T}x=c^{T}x(\varepsilon) cTx=cTx(ε) 。从而在 ( − ε 0 , ε 0 ) (-\varepsilon_{0},\varepsilon_{0}) (ε0,ε0) x ( ε ) x(\varepsilon) x(ε) 都是最优点。经过和上半个证明一样的过程,就得到了一个非零分量更少的解,矛盾。于是得证。

线性规划求解

上面一个定理告诉我们,可以从顶点中去搜索最优值。但是如果采用构造 B \mathcal{B} B 的方法来构造顶点,需要 ( n m ) \begin{pmatrix}n\\m\end{pmatrix} (nm)次才能搜索完全部的顶点。这显然是无法接受的。

我们换一个视角来看问题。上述约束构成了一个凸多面体,目标函数的梯度负方向 − c -c c 可以视作重力方向。我们在该多面体表面上滴一滴水珠,让其在重力的作用下运动。最后他必然会滑到某一个解上。如果我们限制他运动的方向是顶点到顶点,那么就找到了基本最优点。

先介绍退化(degenerate)情况。如果对应基 B \mathcal{B} B的解 x x x中在 B \mathcal{B} B对应的索引内也有为0的分量,则称为退化的情况, B \mathcal{B} B此时被称为退化的基。线性规划问题被称为退化的,如果有至少一个的退化的基。

下面我们发展从一个基本可行点找基本最优点的方法。这种方法被称为单纯性法(simplex method)。关键的思想就是相邻的两个顶点的基只有一个分量的差别。于是,通过加减基中的index,就完成了从一个顶点移动到另一个顶点的操作。

KKT条件为:
c = A T λ + s , A x = b , x ≥ 0 , s ≥ 0 , x i s i = 0 , 1 ≤ i ≤ n . \begin{aligned} &c^{}=A^T\lambda+s, \\ &Ax=b,x\geq0, \\ &\begin{aligned}s\geq0, x_is_i=0,1\leq i\leq n.\end{aligned} \end{aligned} c=ATλ+s,Ax=b,x0,s0,xisi=0,1in.
令:
N : = { 1 , 2 , … , n } / B   ,   B : = [ A i ] i ∈ B   ,   N : = [ A i ] i ∈ N   ,   s B = ( s i ) i ∈ B   ,   s N : = ( s i ) i ∈ N \mathcal{N}:=\left\{{1,2,\dots,n}\right\}/\mathcal{B}\:,\:B:=\left[{A_{i}}\right]_{i \in\mathcal{B}}\:,\:N:=\left[{A_{i}}\right]_{i\in \mathcal{N}}\:,\:s_{B}=\left({s_{i}}\right)_{i\in\mathcal{B}}\:,\:s_{N}:=\left({s_{i}}\right)_{i\in \mathcal{N}} N:={1,2,,n}/B,B:=[Ai]iB,N:=[Ai]iN,sB=(si)iB,sN:=(si)iN
于是:
x B = B − 1 b x_{B} = B^{-1}b xB=B1b
KKT条件中唯一可能不被满足的就是 s T x = 0 s^{T}x=0 sTx=0一条。不妨设 s B = 0 s_{B}=0 sB=0,于是:
[ c B c N ] = [ B T λ N T λ ] + [ s B s N ] \begin{bmatrix} c_{B} \\ c_{N} \end{bmatrix} = \begin{bmatrix} B^{T}\lambda \\ N^{T}\lambda \end{bmatrix}+\begin{bmatrix} s_{B} \\ s_{N} \end{bmatrix} [cBcN]=[BTλNTλ]+[sBsN]
可以解得:
λ = B − T c B , s N = c N − ( B − 1 N ) T c B \lambda = B^{-T}c_{B}, \quad s_{N} = c_{N} - \left({B^{-1}N}\right)^Tc_{B} λ=BTcB,sN=cN(B1N)TcB
此时,如果 c N ≥ 0 c_{N}\geq0 cN0,则KKT条件被满足,最优值达到。反之,则必然存在 q ∈ N , s q < 0 q\in\mathcal{N},s_{q}<0 qN,sq<0

我们希望通过增大 x q x_{q} xq的方式,使得最终 s q = 0 s_{q}=0 sq=0。设改变后的变量为:
x + = ( x B + , 0 , 0 , … , x q + , 0 , … , 0 ) x^{+} = \left({x_{B}^{+},0,0,\dots,x_{q}^{+},0,\dots,0}\right) x+=(xB+,0,0,,xq+,0,,0)
为了满足约束条件,我们有:
B x B + + A q x q + = b = B x B Bx_B^++A_qx_q^+=b=Bx_B BxB++Aqxq+=b=BxB
x B + = x B − B − 1 A q x q + . x_B^+=x_B-B^{-1}A_qx_q^+. xB+=xBB1Aqxq+.
不断增大 x q + x_{q}^{+} xq+,使得 x B + x_{B}^{+} xB+中有某一个分量减少到0。这个操作的合法性来源是该线性规划问题是非退化的这一前提,否则可能出现无法增大 x q x_{q} xq的情况。令 B − 1 A q = ( d 1 , d 2 , … , d m ) T B^{-1}A_{q} = \left({d_{1},d_{2},\dots,d_{m}}\right)^{T} B1Aq=(d1,d2,,dm)T。比例 x B i / d i x_{B_{i}}/d_{i} xBi/di最小的正数项就是那个被减为0的分量。

在这样的改变之后,我们可以证明目标函数的值确实变小了:
c T x + = c B T x B + + c q x q + = c B T x B − c B T B − 1 A q x q + + c q x q + = c B T x B − λ T A q x q + + c q x q + = c B T x B − ( c q − s q ) x q + + c q x q + = c T x + s q x q + . \begin{aligned}c^Tx^+&=c_B^Tx_B^++c_qx_q^+=c_B^Tx_B-c_B^TB^{-1}A_qx_q^++c_qx_q^+\\&=c_B^Tx_B-\lambda^TA_qx_q^++c_qx_q^+=c_B^Tx_B-(c_q-s_q)x_q^++c_qx_q^+\\&=c^Tx+s_qx_q^+.\end{aligned} cTx+=cBTxB++cqxq+=cBTxBcBTB1Aqxq++cqxq+=cBTxBλTAqxq++cqxq+=cBTxB(cqsq)xq++cqxq+=cTx+sqxq+.

一些讨论

如何开始线性规划问题

我们希望找到一个起始的可行迭代点。我们会看到,这个问题几乎和求解线性规划问题本身一样困难。

随意找一组基 B \mathcal{B} B,点 x B = B − 1 b x_{B}=B^{-1}b xB=B1b可能存在小于零的分量,因此不是一个可行点。我们采用[[04:对偶理论]]一节中的理论来求解起始点。考虑问题:
min ⁡ 0 s . t . A x = b , x ≥ 0 \begin{array} {ll}\min & 0 \\ \mathrm{s.t.} & Ax= b,x\geq 0 \end{array} mins.t.0Ax=b,x0
拉格朗日函数为:
L ( x , λ , ν ) = − λ T ( A x − b ) − s T x L(x,\lambda,\nu) =-\lambda ^{T}\left({Ax-b}\right)-s ^{T}x L(x,λ,ν)=λT(Axb)sTx
其中 ν ≥ 0 \nu\geq 0 ν0。于是对偶问题为:
max ⁡   λ T b s . t . A T λ + s = 0 , s ≥ 0 \begin{array} {ll}\max\: & \lambda ^{T}b \\ \mathrm{s.t.} & A^{T}\lambda+s = 0,s\geq 0 \end{array} maxs.t.λTbATλ+s=0,s0
这显然也是一个线性规划问题。由于prime-dual问题的最优值由强对偶性保证同时取到,并且由KKT的充要性可知该解一定满足KKT条件,于是求解第二个问题得到的 ν \nu ν,满足 ν T x = 0 \nu ^{T}x = 0 νTx=0。这也就帮我们选定了基。而且,对偶问题的初始点是可以直接得到的,只需要令 ν 0 = λ 0 = 0 \nu_{0} =\lambda_{0}= 0 ν0=λ0=0即可。于是,我们就通过求解对偶问题来求得了原问题的初始可行点。

单纯性法的表格形式

c T x + z = 0 c^{T}x+z=0 cTx+z=0。于是:
[ 1 c T 0 0 [ B   ∣   N ] b ] \begin{bmatrix} 1 & c^{T} & 0 \\ 0 & [B\:|\:N] & b \end{bmatrix} [10cT[BN]0b]
是方程的增广矩阵。

对第二行乘以一个 B − 1 B^{-1} B1:
[ 1 c T 0 0 [ I m   ∣   D ] x B ] \begin{bmatrix} 1 & c^{T} & 0 \\ 0 & [\mathcal{I}_{m}\:|\:D] & x_{B} \end{bmatrix} [10cT[ImD]0xB]
由于:
s N = c N − ( B − 1 N ) T c B s_{N} = c_{N} - \left({B^{-1}N}\right)^Tc_{B} sN=cN(B1N)TcB
可以化为:
[ 1 [ 0   ∣   s N T ] z B 0 [ I m   ∣   D ] x B ] \begin{bmatrix} 1 & \left[{0\:|\: s_{N}^{T}}\right] & z_{B} \\ 0 & [\mathcal{I}_{m}\:|\:D] & x_{B} \end{bmatrix} [10[0sNT][ImD]zBxB]

你可能感兴趣的:(算法)