Zoutendijk线性约束的容许方向法
求解带线性约束问题: m i n f ( x ⃗ ) {\rm min}f(\vec{x}) minf(x) s . t . { A x ⃗ ≥ b ⃗ C x ⃗ = d ⃗ s.t.\left\{ \begin{array}{c} A\vec{x}\geq \vec{b} \\ C\vec{x}=\vec{d} \\ \end{array} \right. s.t.{Ax≥bCx=d设已经迭代到第 k 步,得到 x ⃗ k \vec{x}_k xk
Step 1:得到准备条件
由 x ⃗ k \vec{x}_k xk 得到梯度 g ⃗ k = ∇ f ( x ⃗ ) \vec{g}_k=\nabla f(\vec{x}) gk=∇f(x),以及起作用的不等式约束序号集 I k I_k Ik
Step 2:分解矩阵 A A A 和向量 b ⃗ \vec{b} b
根据集合 I I I,将 A A A 分解为: A = [ A k ′ A k ′ ′ ] A=\begin{bmatrix} A_k^\prime \\\\ A_k^{\prime\prime} \end{bmatrix} A= Ak′Ak′′ ,将 b ⃗ \vec{b} b 分解为: b ⃗ = [ b ⃗ k ′ b ⃗ k ′ ′ ] \vec{b}=\begin{bmatrix} \vec{b}_k^\prime \\\\ \vec{b}_k^{\prime\prime} \end{bmatrix} b= bk′bk′′ ,使得满足 { A k ′ x ⃗ k = b ⃗ k ′ A k ′ ′ x ⃗ k > b ⃗ k ′ ′ \left\{ \begin{array}{c} A_k^\prime\vec{x}_k=\vec{b}_k^\prime \\ \\ A_k^{\prime\prime}\vec{x}_k>\vec{b}_k^{\prime\prime} \\ \end{array} \right. ⎩ ⎨ ⎧Ak′xk=bk′Ak′′xk>bk′′
Step 3:求解迭代方向
使用线性规划的方法求解: m i n g ⃗ k T p ⃗ k {\rm min}\vec{g}_k^{\rm T}\vec{p}_k mingkTpk s . t . { A k ′ p ⃗ k ≥ 0 ⃗ C p ⃗ k = 0 ⃗ − 1 ≤ p i ≤ 1 s.t.\left\{ \begin{array}{c} A_k^\prime\vec{p}_k\geq \vec{0} \\ \\ C\vec{p}_k=\vec{0} \\ \\ -1\leq p_i\leq1 \end{array} \right. s.t.⎩ ⎨ ⎧Ak′pk≥0Cpk=0−1≤pi≤1得到下降容许方向 p ⃗ k \vec{p}_k pk
Step 4:判定最优性
如果 g ⃗ k T p ⃗ k = 0 \vec{g}_k^{\rm T}\vec{p}_k=0 gkTpk=0,说明当前已经得到最优点 x ⃗ k \vec{x}_k xk,迭代结束
如果 g ⃗ k T p ⃗ k ≠ 0 \vec{g}_k^{\rm T}\vec{p}_k\neq 0 gkTpk=0,说明当前迭代点 x ⃗ k \vec{x}_k xk 不是最优点,需要继续迭代。如果不是最优点,则继续执行以下步骤:
Step5:获取步长搜索范围
令 u ⃗ k = A k ′ ′ x ⃗ k − b ⃗ k \vec{u}_k=A^{\prime\prime}_k\vec{x}_k-\vec{b}_k uk=Ak′′xk−bk v ⃗ k = A k ′ ′ p ⃗ k \vec{v}_k=A^{\prime\prime}_k\vec{p}_k vk=Ak′′pk则 t ˉ = m i n { − u i v i ∣ v i < 0 } \bar{t}={\rm min}\left\{-\frac{u_i}{v_i}\mid v_i<0\right\} tˉ=min{−viui∣vi<0}
Step6:求解最优步长并得到下一个迭代点
m i n ( t ) ϕ ( t ) = f ( x ⃗ k + t p ⃗ k ) {\rm min(t)\space}\phi(t)=f(\vec{x}_k+t\vec{p}_k) min(t) ϕ(t)=f(xk+tpk) s . t . 0 ≤ t ≤ t ˉ s.t. 0\leq t\leq\bar{t} s.t.0≤t≤tˉ于是: x ⃗ k + 1 = x ⃗ k + t ∗ p ⃗ k \vec{x}_{k+1}=\vec{x}_k+t^*\vec{p}_k xk+1=xk+t∗pk