本文中我們考慮如下有約束的一般優化問題的求解方法:
min f ( x ) s. t. c i ( x ) = 0 , i ∈ E = { 1 , 2 , … , l } c i ( x ) ≤ 0 , i ∈ I = { l + 1 , l + 2 , … , l + m } x ∈ R n \begin{aligned} &\min f(x) \\ \text{s. t. } &c_{i}(x) = 0, i\in E=\{1,2,\dots, l\}\\ & c_{i}(x)\leq 0, i\in I = \{l+1, l+2,\dots,l+m\} \\ & x\in \mathbb{R}^{n} \end{aligned} s. t. min f ( x ) c i ( x ) = 0 , i ∈ E = { 1 , 2 , … , l } c i ( x ) ≤ 0 , i ∈ I = { l + 1 , l + 2 , … , l + m } x ∈ R n 其中,可行域 D D D 記爲:
D = { x ∣ c i ( x ) = 0 , i ∈ E ; c i ( x ) ≤ 0 , i ∈ I ; x ∈ R n } D=\{x | c_{i}(x)=0, i\in E; c_{i}(x)\leq 0, i\in I; x\in\mathbb{R}^{n}\} D = { x ∣ c i ( x ) = 0 , i ∈ E ; c i ( x ) ≤ 0 , i ∈ I ; x ∈ R n }
求解約束優化問題要比求解無約束優化問題 複雜困難得多。一般來說,求解約束優化問題的方法大致分兩類:一類是此文 中介紹的直接求解法,另一類是本文中即將介紹的罰函數法。
罰函數法是利用目標函數 f ( x ) f(x) f ( x ) 和約束函數 c ( x ) c(x) c ( x ) ,構造具有懲罰性質的函數 P ( x ) = P ˉ ( f ( x ) , c ( x ) ) P(x)=\bar{P}(f(x), c(x)) P ( x ) = P ˉ ( f ( x ) , c ( x ) ) ,使得原約束優化問題轉化爲求 P ( x ) P(x) P ( x ) 最優解的無約束優化問題。以下討論中,我們假設所有函數都是連續的 。
外罰函數法
外罰函數是一類不可行點的方法,其基本思想是:在求解約束優化的問題時,通過對不可行的迭代點施加懲罰,並隨着迭代點的進展,增大懲罰量,迫使迭代點逐步向可行域靠近。
等式約束的優化問題
min f ( x ) , x ∈ R n s. t. c i ( x ) = 0 , i = 1 , 2 , … , l \begin{aligned} &\min f(x), x\in\mathbb{R}^{n} \\ \text{s. t. }& c_{i}(x)=0, i=1,2,\dots,l \end{aligned} s. t. min f ( x ) , x ∈ R n c i ( x ) = 0 , i = 1 , 2 , … , l 記P ~ ( x ) = ∑ i = 1 l ∣ c i ( x ) ∣ β , β ≥ 1 \tilde{P}(x)=\sum_{i=1}^{l}|c_{i}(x)|^{\beta},\quad \beta\geq 1 P ~ ( x ) = i = 1 ∑ l ∣ c i ( x ) ∣ β , β ≥ 1 定義如下形式的外罰函數P ( x , σ ) = f ( x ) + σ P ~ ( x ) = f ( x ) + σ ∑ i = 1 l ∣ c i ( x ) ∣ β , β ≥ 1 \begin{aligned} P(x,\sigma) &= f(x)+\sigma \tilde{P}(x) \\ &= f(x)+\sigma\sum_{i=1}^{l}|c_{i}(x)|^{\beta},\quad \beta\geq 1 \end{aligned} P ( x , σ ) = f ( x ) + σ P ~ ( x ) = f ( x ) + σ i = 1 ∑ l ∣ c i ( x ) ∣ β , β ≥ 1 其中 σ > 0 \sigma>0 σ > 0 是一個參數。顯然,當 x x x 爲可行點時,P ~ ( x ) = 0 \tilde{P}(x)=0 P ~ ( x ) = 0 ;當 x x x 不是可行點時 P ~ ( x ) > 0 \tilde{P}(x)>0 P ~ ( x ) > 0 ,於是 P ( x , σ ) > f ( x ) P(x,\sigma)>f(x) P ( x , σ ) > f ( x ) 。特別的,隨着 σ \sigma σ 增大,P ( x ) P(x) P ( x ) 也在增大。所以,要使 P ( x , σ ) P(x,\sigma) P ( x , σ ) 取到極小值, P ~ ( x ) \tilde{P}(x) P ~ ( x ) 應充分小,即 P ( x , σ ) P(x,\sigma) P ( x , σ ) 的極小點應充分逼近可行域。於是,上述等式約束優化問題轉化爲無約束優化的問題
min x { P ( x , σ ) = f ( x ) + σ P ~ ( x ) } \min_{x}\{P(x,\sigma)=f(x)+\sigma\tilde{P}(x) \} x min { P ( x , σ ) = f ( x ) + σ P ~ ( x ) } 通常取β = 2 \beta=2 β = 2 。
例 1 :求解下列約束優化問題min { f ( x ) = x 1 + x 2 } s. t. c ( x ) = x 2 − x 1 2 = 0 \begin{aligned}\min\{f(x)=x_{1}+x_{2}\}\\\text{s. t. } c(x)=x_{2}-x_{1}^{2} =0 \end{aligned} min { f ( x ) = x 1 + x 2 } s. t. c ( x ) = x 2 − x 1 2 = 0 解:構造外罰函數P ( x , σ ) = x 1 + x 2 + σ ( x 2 − x 1 2 ) 2 P(x,\sigma)=x_{1}+x_{2}+\sigma(x_{2}-x_{1}^{2})^{2} P ( x , σ ) = x 1 + x 2 + σ ( x 2 − x 1 2 ) 2 利用解析法求解∂ P ∂ x 1 = 1 − 4 σ x 1 ( x 2 − x 1 2 ) , ∂ P ∂ x 2 = 1 + 2 σ ( x 2 − x 1 2 ) \frac{\partial P}{\partial x_{1}}=1-4\sigma x_{1}(x_{2}-x_{1}^{2}), \frac{\partial P}{\partial x_{2}}=1+2\sigma(x_{2}-x_{1}^{2}) ∂ x 1 ∂ P = 1 − 4 σ x 1 ( x 2 − x 1 2 ) , ∂ x 2 ∂ P = 1 + 2 σ ( x 2 − x 1 2 ) 令∇ x P ( x , σ ) = 0 \nabla_{x}P(x,\sigma)=0 ∇ x P ( x , σ ) = 0 得到x 1 ( σ ) = − 1 2 , x 2 ( σ ) = 1 4 − 1 2 σ x_{1}(\sigma)=-\frac{1}{2}, x_{2}(\sigma)=\frac{1}{4}-\frac{1}{2\sigma} x 1 ( σ ) = − 2 1 , x 2 ( σ ) = 4 1 − 2 σ 1 再令σ → + ∞ \sigma\to+\infty σ → + ∞ 得x ( σ ) = ( − 1 2 , 1 4 ) T = x ∗ P ( x ( σ ) , σ ) = − 1 4 = f ( x ∗ ) \begin{aligned}x(\sigma)=\left(-\frac{1}{2}, \frac{1}{4} \right)^{T}=x^{*} \\ P(x(\sigma), \sigma)=-\frac{1}{4}=f(x^{*})\end{aligned} x ( σ ) = ( − 2 1 , 4 1 ) T = x ∗ P ( x ( σ ) , σ ) = − 4 1 = f ( x ∗ )
不等式約束的優化問題
我們考慮如下不等式約束的優化問題
min f ( x ) , x ∈ R n s. t. c i ( x ) ≤ 0 , i = 1 , 2 , … , l \begin{aligned} &\min f(x), x\in\mathbb{R}^{n} \\ \text{s. t. }& c_{i}(x)\leq 0, i=1,2,\dots,l \end{aligned} s. t. min f ( x ) , x ∈ R n c i ( x ) ≤ 0 , i = 1 , 2 , … , l 記P ~ ( x ) = ∑ i = 1 l [ max ( 0 , c i ( x ) ) ] α , α ≥ 1 \tilde{P}(x)=\sum_{i=1}^{l}[\max(0, c_{i}(x))]^{\alpha},\quad \alpha\geq 1 P ~ ( x ) = i = 1 ∑ l [ max ( 0 , c i ( x ) ) ] α , α ≥ 1 定義如下形式的外罰函數
P ( x , σ ) = f ( x ) + σ ∑ i = 1 l [ max ( 0 , c i ( x ) ) ] α α ≥ 1 P(x,\sigma)=f(x)+\sigma\sum_{i=1}^{l}[\max(0, c_{i}(x))]^{\alpha}\quad \alpha\geq 1 P ( x , σ ) = f ( x ) + σ i = 1 ∑ l [ max ( 0 , c i ( x ) ) ] α α ≥ 1 此時的外罰函數性質與上一節類似,通常取 α = 2 \alpha=2 α = 2 。
一般約束的優化問題
考慮一般的約束優化問題
min f ( x ) s. t. c i ( x ) = 0 , i ∈ E = { 1 , 2 , … , l } c i ( x ) ≤ 0 , i ∈ I = { L + 1 , l + 2 , … , l + m } x ∈ R n \begin{aligned} &\min f(x) \\ \text{s. t. } &c_{i}(x) = 0, i\in E=\{1,2,\dots, l\}\\ & c_{i}(x)\leq 0, i\in I = \{L+1, l+2,\dots,l+m\} \\ & x\in \mathbb{R}^{n} \end{aligned} s. t. min f ( x ) c i ( x ) = 0 , i ∈ E = { 1 , 2 , … , l } c i ( x ) ≤ 0 , i ∈ I = { L + 1 , l + 2 , … , l + m } x ∈ R n 記 P ~ ( x ) = ∑ i = 1 l ∣ c i ( x ) ∣ β + ∑ i = 1 l [ max ( 0 , c i ( x ) ) ] α , α ≥ 1 , β ≥ 1 \tilde{P}(x)=\sum_{i=1}^{l}|c_{i}(x)|^{\beta}+\sum_{i=1}^{l}[\max(0, c_{i}(x))]^{\alpha},\quad \alpha\geq 1,\beta\geq 1 P ~ ( x ) = i = 1 ∑ l ∣ c i ( x ) ∣ β + i = 1 ∑ l [ max ( 0 , c i ( x ) ) ] α , α ≥ 1 , β ≥ 1 類似地,定義如下形式的外罰函數P ( x , σ ) = f ( x ) + σ ∑ i = 1 l ∣ c i ( x ) ∣ β + ∑ i = 1 l [ max ( 0 , c i ( x ) ) ] α , α ≥ 1 , β ≥ 1 P(x,\sigma)=f(x)+\sigma\sum_{i=1}^{l}|c_{i}(x)|^{\beta}+\sum_{i=1}^{l}[\max(0, c_{i}(x))]^{\alpha},\quad \alpha\geq 1,\beta\geq 1 P ( x , σ ) = f ( x ) + σ i = 1 ∑ l ∣ c i ( x ) ∣ β + i = 1 ∑ l [ max ( 0 , c i ( x ) ) ] α , α ≥ 1 , β ≥ 1 上述罰函數性質與之前的討論類似。通常 α = β = 2 \alpha=\beta =2 α = β = 2 。可見,外罰函數的最優解在 σ → + ∞ \sigma\to+\infty σ → + ∞ 的過程中一直在可行域外部取點,直到趨近最優解 x ∗ x^{*} x ∗ 。所以之中方法爲外罰函數法,簡稱外點法 ;P ( x , σ ) P(x,\sigma) P ( x , σ ) 爲外罰函數,或叫增廣目標函數,σ \sigma σ 爲懲罰因子,P ~ ( x ) \tilde{P}(x) P ~ ( x ) 爲懲罰項。
對於比較複雜的約束,通常採用迭代的方法:
給定初始點 x 0 x^{0} x 0 ,設ϵ > 0 , c > 1 \epsilon >0, c>1 ϵ > 0 , c > 1 爲給定實數,選擇序列 { σ k } \{\sigma_{k}\} { σ k } ,使得σ k → + ∞ \sigma_{k}\to+\infty σ k → + ∞ ,令 k = 1 k=1 k = 1 ;
以 x k − 1 x^{k-1} x k − 1 爲初始點,求解無約束優化問題min { P ( x , σ k ) = f ( x ) + σ k P ~ ( x ) } \min\{P(x,\sigma_{k})=f(x)+\sigma_{k}\tilde{P}(x) \} min { P ( x , σ k ) = f ( x ) + σ k P ~ ( x ) } 得到最優解x k x^{k} x k 。
若σ k P ~ ( x k ) < ϵ \sigma_{k}\tilde{P}(x^{k})<\epsilon σ k P ~ ( x k ) < ϵ ,則停止迭代,x k x^{k} x k 作爲原問題的最優解;否則,令σ k + 1 = c σ k \sigma_{k+1}=c\sigma_{k} σ k + 1 = c σ k ,k : = k + 1 k:=k+1 k : = k + 1 ,轉至步驟2。
對於外罰函數的算法收斂性 與外罰函數的病態性質 這裏不作討論。 使用外罰函數法時,選取 σ 1 \sigma_{1} σ 1 過大,或者 σ k \sigma_{k} σ k 增長過快可以使算法快速收斂,但很難精確地求解相應的無約束極小問題;反之,可以使求得P ( x , σ k + 1 ) P(x,\sigma_{k+1}) P ( x , σ k + 1 ) 的極小點變得容易,但收斂太慢。通常取 σ k = 0.1 × 2 k − 1 \sigma_{k}=0.1\times 2^{k-1} σ k = 0 . 1 × 2 k − 1 。
內罰函數法
在外罰函數法中,近似最優解一般只能近似地滿足約束條件,對於某些實際問題這樣的近似最優解釋不可接受的。內罰函數法是一類保持嚴格可行性的方法。其基本思想是:嚴格要求迭代點在可行域內移動,當迭代點接近可行域邊界時,有無窮大的障礙,迫使迭代點返回可行域的內部。
考慮不等式約束的優化問題,可行域內部記爲:D 0 = { x ∈ R n ∣ c i ( x ) < 0 , i = 1 , 2 , … , l } D^{0}=\{x\in\mathbb{R}^{n} | c_{i}(x)<0, i=1,2,\dots,l\} D 0 = { x ∈ R n ∣ c i ( x ) < 0 , i = 1 , 2 , … , l } 記B ( x ) = − ∑ i = 1 l ln ( − c i ( x ) ) B(x)=-\sum_{i=1}^{l}\ln(-c_{i}(x)) B ( x ) = − i = 1 ∑ l ln ( − c i ( x ) ) 定義如下形式的內罰函數:
P ( x , r ) = f ( x ) + r B ( x ) = f ( x ) − r ∑ i = 1 l ln ( − c i ( x ) ) \begin{aligned}P(x,r) &=f(x)+rB(x)\\ &=f(x)-r\sum_{i=1}^{l}\ln(-c_{i}(x))\end{aligned} P ( x , r ) = f ( x ) + r B ( x ) = f ( x ) − r i = 1 ∑ l ln ( − c i ( x ) ) 其中 r > 0 r>0 r > 0 是一參數。
顯然,當 x x x 在可行域內部,B ( x ) B(x) B ( x ) 爲一正數,當 r r r 趨近於 0 0 0 時, P ( x , r ) P(x,r) P ( x , r ) 的極小點就會趨近於優化問題的極小點。至少有一個 c i ( x ) c_{i}(x) c i ( x ) 趨於 0 0 0 時,會導致 B ( x ) B(x) B ( x ) 劇烈增大,迫使極小點落在可行域的內部。於是,原優化問題就轉化爲一下形式的優化問題:
min P ( x , r ) , x ∈ R n s. t. c i ( x ) < 0 , i = 1 , 2 , … , l \begin{aligned} &\min P(x,r), x\in\mathbb{R}^{n}\\ \text{s. t. }& c_{i}(x)<0, i=1,2,\dots, l \end{aligned} s. t. min P ( x , r ) , x ∈ R n c i ( x ) < 0 , i = 1 , 2 , … , l 注意使用內罰函數時,可行域由 D D D 變成 D 0 D^{0} D 0 。內罰函數法簡稱內點法,B ( x ) B(x) B ( x ) 爲對數障礙函數。(這裏不介紹倒數障礙函數,因其用得不多性質也不佳)
例 2 :用內罰函數法求解約束問題min { f ( x ) = x 1 2 + 2 x 2 2 } s. t. x 1 + x 2 − 1 ≥ 0 \begin{aligned} &\min\{f(x)=x_{1}^{2}+2x_{2}^{2}\} \\ \text{s. t. }& x_{1}+x_{2}-1\geq 0 \end{aligned} s. t. min { f ( x ) = x 1 2 + 2 x 2 2 } x 1 + x 2 − 1 ≥ 0 解:構造內罰函數
P ( x ( r ) , r ) = x 1 2 + 2 x 2 2 − r ln ( x 1 + x 2 − 1 ) P(x(r),r)=x_{1}^{2}+2x_{2}^{2}-r\ln(x_{1}+x_{2}-1) P ( x ( r ) , r ) = x 1 2 + 2 x 2 2 − r ln ( x 1 + x 2 − 1 ) 利用解析法:
∇ x P ( x ( r ) , r ) = ( 2 x 1 − r x 1 + x 2 − 1 , 4 x 2 − r x 1 + x 2 − 1 ) T = 0 \nabla_{x}P(x(r),r)=\left( 2x_{1}-\frac{r}{x_{1}+x_{2}-1}, 4x_{2}-\frac{r}{x_{1}+x_{2}-1} \right)^{T}=0 ∇ x P ( x ( r ) , r ) = ( 2 x 1 − x 1 + x 2 − 1 r , 4 x 2 − x 1 + x 2 − 1 r ) T = 0 得
x ( r ) = ( 1 + 1 + 3 r 3 , 1 + 1 + 3 r 6 ) T x(r)=\left( \frac{1+\sqrt{1+3r}}{3}, \frac{1+\sqrt{1+3r}}{6} \right)^{T} x ( r ) = ( 3 1 + 1 + 3 r , 6 1 + 1 + 3 r ) T 令 r → 0 r\to 0 r → 0 ,則
x ( r ) → x ∗ = ( 2 3 , 1 3 ) T , P ( x ( r ) , r ) → f ( x ∗ ) = 2 3 x(r)\to x^{*}=\left(\frac{2}{3}, \frac{1}{3}\right)^{T}, P(x(r),r)\to f(x^{*})=\frac{2}{3} x ( r ) → x ∗ = ( 3 2 , 3 1 ) T , P ( x ( r ) , r ) → f ( x ∗ ) = 3 2
下面給出內罰函數法的算法,此處同樣不討論其收斂性和病態性質。
給定初始點 x 0 ∈ D 0 x^{0}\in D^{0} x 0 ∈ D 0 ,設 ϵ > 0 , 0 < c < 1 \epsilon>0, 0<c<1 ϵ > 0 , 0 < c < 1 爲給定實數,選擇正值序列 { r k } \{r_{k}\} { r k } 使 r k → 0 r_{k}\to0 r k → 0 ,令 k = 1 k=1 k = 1 。
以 x k − 1 x^{k-1} x k − 1 爲初始點,求解約束優化問題min { P ( x , r k ) = f ( x ) + r k B ( x ) } s. t. x ∈ D 0 \begin{aligned} &\min \{P(x,r_{k})=f(x)+r_{k}B(x)\} \\ \text{s. t. }& x\in D^{0} \end{aligned} s. t. min { P ( x , r k ) = f ( x ) + r k B ( x ) } x ∈ D 0 得到最優解 x k x^{k} x k 。
若 r k B ( x k ) < ϵ r_{k}B(x^{k})<\epsilon r k B ( x k ) < ϵ , 則停止迭代,x k x^{k} x k 作爲原問題的最優解;否則,令 r k + 1 = c r k r_{k+1}=cr_{k} r k + 1 = c r k , k : = k + 1 k:=k+1 k : = k + 1 ,轉至步驟2。
注意由於可行域發生了變化,D 0 D^{0} D 0 不能爲空,因此內罰函數法不能處理等式約束問題 。
乘子法
內外罰函數法的主要缺點是當罰函數中的 σ → + ∞ \sigma\to+\infty σ → + ∞ 或者 r → 0 r\to0 r → 0 時,其Hesse矩陣出現病態,給無約束問題的數值求解帶來很大困難。爲克服這一缺點,本節介紹乘子法。乘子法的原理與二階充分條件與Lagrange函數 的性質有關,時間問題這裏不做詳細推導,僅給出定理。
等式約束問題的乘子法
定理 :
設 x ∗ x^{*} x ∗ , λ ∗ \lambda^{*} λ ∗ 滿足約束問題
min f ( x ) , x ∈ R n s. t. c i ( x ) = 0 , i = 1 , 2 , … , l \begin{aligned} &\min f(x), x\in\mathbb{R}^{n} \\ \text{s. t. }& c_{i}(x)=0, i=1,2,\dots,l \end{aligned} s. t. min f ( x ) , x ∈ R n c i ( x ) = 0 , i = 1 , 2 , … , l 的二階充分條件,則存在 σ ∗ > 0 \sigma^{*}>0 σ ∗ > 0 ,使當 σ ≥ σ ∗ \sigma\geq \sigma^{*} σ ≥ σ ∗ 時, x ∗ x^{*} x ∗ 是無約束問題
min { ϕ ( x , λ ∗ , σ ) = f ( x ) + ∑ i = 1 l λ i ∗ c i ( x ) + σ 2 ∑ i = 1 l c i 2 ( x ) } \min\{\phi(x,\lambda^{*},\sigma) = f(x)+\sum_{i=1}^{l}\lambda_{i}^{*}c_{i}(x)+\frac{\sigma}{2}\sum_{i=1}^{l}c_{i}^{2}(x) \} min { ϕ ( x , λ ∗ , σ ) = f ( x ) + i = 1 ∑ l λ i ∗ c i ( x ) + 2 σ i = 1 ∑ l c i 2 ( x ) } 的嚴格局部解。反之,若 x k x^{k} x k 是 ϕ ( x , λ ∗ , σ k ) \phi(x,\lambda^{*},\sigma_{k}) ϕ ( x , λ ∗ , σ k ) 的極小點,並且 c ( x k ) = 0 c(x^{k})=0 c ( x k ) = 0 ,則 x k x^{k} x k 是上述約束問題的最優解。
ϕ ( ⋅ ) \phi(\cdot) ϕ ( ⋅ ) 被稱爲增廣Lagrange函數 或乘子罰函數 ,λ ∗ \lambda^{*} λ ∗ 實際上是最優解 x ∗ x^{*} x ∗ 處的Lagrange乘子。我們可以通過取一個適當大的 σ \sigma σ ,然後調整 λ \lambda λ 使它逐漸趨近於 λ ∗ \lambda^{*} λ ∗ ,就能得到約束問題的最優解,這是乘子法的基本思想。
下面給出具體迭代算法:
給定初始點 x 0 x^{0} x 0 ,設初始乘子 λ 1 \lambda^{1} λ 1 ,精度要求爲 ϵ \epsilon ϵ ,放大係數爲 c c c ,選擇序列 { σ k } \{\sigma_{k}\} { σ k } ,使 σ k → + ∞ \sigma_{k}\to+\infty σ k → + ∞ ,令 k = 1 k=1 k = 1 。
以 x k − 1 x^{k-1} x k − 1 爲初始點,求解無約束優化問題 min x ϕ ( x , λ k , σ k ) \min_{x}\phi(x,\lambda^{k},\sigma_{k}) x min ϕ ( x , λ k , σ k ) 得到最優解 x k x^{k} x k 。
若 [ ∑ i = 1 l c i 2 ( x k ) ] 1 2 ≤ ϵ [\sum_{i=1}^{l}c_{i}^{2}(x_{k})]^{\frac{1}{2}}\leq \epsilon [ ∑ i = 1 l c i 2 ( x k ) ] 2 1 ≤ ϵ ,則停止迭代,得到近似解 x k x^{k} x k ;否則,轉到步驟4。
令 λ i k + 1 = λ i k + σ k c i ( x k ) \lambda_{i}^{k+1}=\lambda_{i}^{k}+\sigma_{k}c_{i}(x^{k}) λ i k + 1 = λ i k + σ k c i ( x k ) ,k : = k + 1 k:=k+1 k : = k + 1 ,轉到步驟2。
只有不等式約束時的乘子法
現在我們考慮只有不等式約束的問題:
min f ( x ) , x ∈ R n s. t. c i ( x ) ≤ 0 , i = 1 , 2 , … , l \begin{aligned} &\min f(x), x\in\mathbb{R}^{n} \\ \text{s. t. }& c_{i}(x)\leq 0, i=1,2,\dots,l \end{aligned} s. t. min f ( x ) , x ∈ R n c i ( x ) ≤ 0 , i = 1 , 2 , … , l 利用等式約束的結果,引入鬆弛變量 z i z_{i} z i ,將上述問題轉化爲等式約束問題
min f ( x ) , x ∈ R n s. t. c i ( x ) + z i 2 = 0 , i = 1 , 2 , … , l \begin{aligned} &\min f(x), x\in\mathbb{R}^{n} \\ \text{s. t. }& c_{i}(x)+z_{i}^{2}= 0, i=1,2,\dots,l \end{aligned} s. t. min f ( x ) , x ∈ R n c i ( x ) + z i 2 = 0 , i = 1 , 2 , … , l 由於變量增加了,因此問題的維度由 n + l n+l n + l 變成 n ˉ + 2 l \bar{n}+2l n ˉ + 2 l 。這使得問題變得複雜。爲了克服此問題,我們可以先關於 z z z 求極小 z ˉ \bar{z} z ˉ ,再將其代入原問題。此處同樣不討論具體細節。
下面給出具體算法:
給定初始點 x 0 x^{0} x 0 ,設初始乘子 λ 1 \lambda^{1} λ 1 ,精度要求 ϵ \epsilon ϵ ,放大係數爲 c c c ,選擇序列 { σ k } \{\sigma_{k}\} { σ k } ,使 σ k → + ∞ \sigma_{k}\to+\infty σ k → + ∞ ,令 k = 1 k=1 k = 1 。
以 x k − 1 x^{k-1} x k − 1 爲初始點,求解無約束規劃問題:min x ϕ ( x , λ k , σ k ) \min_{x}\phi(x,\lambda^{k},\sigma_{k}) x min ϕ ( x , λ k , σ k ) 得到最優解 x k x^{k} x k 。
若 { ∑ i = 1 l [ max ( c i ( x k ) , − λ i k σ k ) ] 2 } 1 2 ≤ ϵ \left\{\sum_{i=1}^{l}\left[\max\left(c_{i}(x^{k}), -\frac{\lambda_{i}^{k}}{\sigma_{k}}\right)\right]^{2}\right\}^{\frac{1}{2}}\leq \epsilon { ∑ i = 1 l [ max ( c i ( x k ) , − σ k λ i k ) ] 2 } 2 1 ≤ ϵ ,則停止迭代,得近似解 x k x^{k} x k ;否則,轉至步驟4。
令 λ i k + 1 = max { 0 , λ i k + σ k c i ( x k ) } , k : = k + 1 \lambda_{i}^{k+1}=\max\{0, \lambda_{i}^{k}+\sigma_{k}c_{i}(x^{k})\}, k:=k+1 λ i k + 1 = max { 0 , λ i k + σ k c i ( x k ) } , k : = k + 1 ,轉至步驟2。
一般問題的乘子法求解
對於一般約束優化問題:
min f ( x ) s. t. c i ( x ) = 0 , i ∈ E = { 1 , 2 , … , l } c i ( x ) ≤ 0 , i ∈ I = { l + 1 , l + 2 , … , l + m } x ∈ R n \begin{aligned} &\min f(x) \\ \text{s. t. } &c_{i}(x) = 0, i\in E=\{1,2,\dots, l\}\\ & c_{i}(x)\leq 0, i\in I = \{l+1, l+2,\dots,l+m\} \\ & x\in \mathbb{R}^{n} \end{aligned} s. t. min f ( x ) c i ( x ) = 0 , i ∈ E = { 1 , 2 , … , l } c i ( x ) ≤ 0 , i ∈ I = { l + 1 , l + 2 , … , l + m } x ∈ R n 乘子罰函數爲
ϕ ( x , λ , σ ) = f ( x ) + ∑ i = 1 l λ i c i ( x ) + σ 2 ∑ i = 1 l c i 2 ( x ) + 1 2 σ ∑ i = l + 1 l + m { [ max ( 0 , λ i + σ c i ( x ) ) ] 2 − λ i 2 } \phi(x,\lambda,\sigma)=f(x)+\sum_{i=1}^{l}\lambda_{i}c_{i}(x)+\frac{\sigma}{2}\sum_{i=1}^{l}c_{i}^{2}(x)+\frac{1}{2\sigma}\sum_{i=l+1}^{l+m}\{[\max(0, \lambda_{i}+\sigma c_{i}(x))]^{2}-\lambda_{i}^{2}\} ϕ ( x , λ , σ ) = f ( x ) + i = 1 ∑ l λ i c i ( x ) + 2 σ i = 1 ∑ l c i 2 ( x ) + 2 σ 1 i = l + 1 ∑ l + m { [ max ( 0 , λ i + σ c i ( x ) ) ] 2 − λ i 2 } 其乘子迭代公式爲:
λ i k + 1 = λ i k + σ k c i ( x k ) , i = 1 , 2 , … , l λ i k + 1 = max { 0 , λ i k + σ k c i ( x k ) } , i = l + 1 , l + 2 , … , l + m \begin{aligned}&\lambda_{i}^{k+1}=\lambda_{i}^{k}+\sigma_{k}c_{i}(x^{k}),\quad &i=1,2,\dots,l\\&\lambda_{i}^{k+1}=\max\{0,\lambda_{i}^{k}+\sigma_{k}c_{i}(x^{k})\},\quad &i=l+1,l+2,\dots,l+m \end{aligned} λ i k + 1 = λ i k + σ k c i ( x k ) , λ i k + 1 = max { 0 , λ i k + σ k c i ( x k ) } , i = 1 , 2 , … , l i = l + 1 , l + 2 , … , l + m 終止準則爲:
{ ∑ i = 1 l c i 2 ( x k ) + ∑ i = l + 1 l + m [ max ( c i ( x k ) , − λ i k σ k ) ] 2 } 1 2 ≤ ϵ \left\{\sum_{i=1}^{l}c_{i}^{2}(x^{k})+\sum_{i=l+1}^{l+m}\left[\max\left(c_{i}(x^{k}), -\frac{\lambda_{i}^{k}}{\sigma_{k}}\right)\right]^{2}\right\}^{\frac{1}{2}}\leq\epsilon { i = 1 ∑ l c i 2 ( x k ) + i = l + 1 ∑ l + m [ max ( c i ( x k ) , − σ k λ i k ) ] 2 } 2 1 ≤ ϵ
關於Lagrange乘子法更一般的介紹可參考此文 。