系列笔记是本人在上最优化方法时整理的,参考书籍为经典的 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.aiTx≤bi,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:= a1Ta2T…amT ⋅x≤b
引入松弛变量 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*} (A−AI)⋅ x+x−z =b(x+x−z)T≥0
就化成了如下形式:
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,x≥0,
被称为标准形式。此后研究都采取该形式。
一个小小的问题是,当改变成标准形式后,我们似乎没有添加 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} (cT−cT)⋅(x+x−)保证了在取得最值时,两者中至多只有一者严格大于0。
更为复杂的转化问题包含了max和绝对值函数。考虑这样一个问题:
min max i ∣ a i T x − b i ∣ \min\: \max_{i}\: \lvert a_{i}^{T}x-b_{i}\rvert minimax∣aiTx−bi∣
可以转化为:
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.aiTx−t≤bi−aiTx−t≤−bi
关键就是引入松弛变量和取正部和负部。
先介绍一些术语:”不可行“指可行域为空集,“无界”是指在可行域内目标函数没有下界,“最小值点”也称作解。
线性规划的标准形式的拉格朗日函数为:
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(Ax−b)−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,x≥0,s≥0,xisi=0,1≤i≤n.
对于线性规划问题,我们总有 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+s∗Tx≥λ∗TAx=λ∗TAx∗=cTx∗
设 A = A m × n A=A_{m\times n} A=Am×n,其中 m ≤ n m\leq n m≤n。我们必须假设这个约束集没有重复约束,也就是说 r ( A ) = m r\left({A}\right) = m r(A)=m。于是该约束给出了一个 n − m n-m n−m 维超平面。根据高中所学的线性规划知识,我们知道线性规划问题的最优值总是在可行域的某一个顶点上取到。下面我们希望证明这一点。在此之前,我们希望给顶点一个代数刻画。由于上述区域一定是凸的,于是顶点的等价刻画为:
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 : = { 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,n−m≥i≥1。而:
b = A x = ∑ i = 1 m A i x i b=Ax=\sum_{i=1}^{m}A_{i}x_{i} b=Ax=i=1∑mAixi
如果存在: 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=1∑myiAi=i=1∑mziAi
由于这时是满秩线性组合,可知组合系数唯一。于是 x=y=z。从而可知 x 一定是顶点。
下面证明 x 是顶点,则其为一个基本可行点。设顶点 x x x 有 p p p 个分量非零,不失一般性设 i ≤ p i\leq p i≤p 的分量非零。下证 B = [ A i ] i ≤ p B = [A_i]_{i \leq p} B=[Ai]i≤p满秩。
如果不满秩,则 A p = ∑ i = 1 p − 1 z i A i A_{p}=\sum_{i=1}^{p-1}z_{i}A_{i} Ap=∑i=1p−1ziAi。对于可行点 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+ε z1…zp−1−1
于是 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 p≤m。而如果 p < m p
定义 基本最优点:基本最优点是指作为解的基本可行点。
定理:如果可行,则必有基本可行点;如果有解,则必有基本最优点。
证明:先证明前半句话。如果有可行点,则设可行域为 D ≠ ∅ D\neq\emptyset D=∅. 取其中某一个拥有最少非零分量数的点 x x x,设其非零分量数为 p p p。下证其为基本可行点。如果p=0,则显然可以任取 A i A_{i} Ai 构成一个满秩方阵,所以令 p ≥ 1 p\geq 1 p≥1 。不妨设 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=1p−1ziAi。仍按照上面一个定理的证明中定义 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+ε z1…zp−1−1
由于 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 cTx≤cTx(ε)⟹cT z1…zp−1−1 =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,x≥0,s≥0,xisi=0,1≤i≤n.
令:
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]i∈B,N:=[Ai]i∈N,sB=(si)i∈B,sN:=(si)i∈N
于是:
x B = B − 1 b x_{B} = B^{-1}b xB=B−1b
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} λ=B−TcB,sN=cN−(B−1N)TcB
此时,如果 c N ≥ 0 c_{N}\geq0 cN≥0,则KKT条件被满足,最优值达到。反之,则必然存在 q ∈ N , s q < 0 q\in\mathcal{N},s_{q}<0 q∈N,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+=xB−B−1Aqxq+.
不断增大 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} B−1Aq=(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+=cBTxB−cBTB−1Aqxq++cqxq+=cBTxB−λTAqxq++cqxq+=cBTxB−(cq−sq)xq++cqxq+=cTx+sqxq+.
我们希望找到一个起始的可行迭代点。我们会看到,这个问题几乎和求解线性规划问题本身一样困难。
随意找一组基 B \mathcal{B} B,点 x B = B − 1 b x_{B}=B^{-1}b xB=B−1b可能存在小于零的分量,因此不是一个可行点。我们采用[[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,x≥0
拉格朗日函数为:
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(Ax−b)−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,s≥0
这显然也是一个线性规划问题。由于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[B∣N]0b]
是方程的增广矩阵。
对第二行乘以一个 B − 1 B^{-1} B−1:
[ 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[Im∣D]0xB]
由于:
s N = c N − ( B − 1 N ) T c B s_{N} = c_{N} - \left({B^{-1}N}\right)^Tc_{B} sN=cN−(B−1N)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[0∣sNT][Im∣D]zBxB]