約束規劃問題的罰函數解法

本文中我們考慮如下有約束的一般優化問題的求解方法:
minf(x)s. t. ci(x)=0,iE={1,2,,l}ci(x)0,iI={l+1,l+2,,l+m}xRn\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} 其中,可行域 DD 記爲:
D={xci(x)=0,iE;ci(x)0,iI;xRn}D=\{x | c_{i}(x)=0, i\in E; c_{i}(x)\leq 0, i\in I; x\in\mathbb{R}^{n}\}

求解約束優化問題要比求解無約束優化問題複雜困難得多。一般來說,求解約束優化問題的方法大致分兩類:一類是此文中介紹的直接求解法,另一類是本文中即將介紹的罰函數法。

罰函數法是利用目標函數 f(x)f(x) 和約束函數 c(x)c(x),構造具有懲罰性質的函數 P(x)=Pˉ(f(x),c(x))P(x)=\bar{P}(f(x), c(x)) ,使得原約束優化問題轉化爲求 P(x)P(x) 最優解的無約束優化問題。以下討論中,我們假設所有函數都是連續的

外罰函數法

外罰函數是一類不可行點的方法,其基本思想是:在求解約束優化的問題時,通過對不可行的迭代點施加懲罰,並隨着迭代點的進展,增大懲罰量,迫使迭代點逐步向可行域靠近。

等式約束的優化問題

minf(x),xRns. t. ci(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}P~(x)=i=1lci(x)β,β1\tilde{P}(x)=\sum_{i=1}^{l}|c_{i}(x)|^{\beta},\quad \beta\geq 1定義如下形式的外罰函數P(x,σ)=f(x)+σP~(x)=f(x)+σi=1lci(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}其中 σ>0\sigma>0 是一個參數。顯然,當 xx 爲可行點時,P~(x)=0\tilde{P}(x)=0 ;當 xx 不是可行點時 P~(x)>0\tilde{P}(x)>0 ,於是 P(x,σ)>f(x)P(x,\sigma)>f(x) 。特別的,隨着 σ\sigma 增大,P(x)P(x) 也在增大。所以,要使 P(x,σ)P(x,\sigma) 取到極小值, P~(x)\tilde{P}(x) 應充分小,即 P(x,σ)P(x,\sigma) 的極小點應充分逼近可行域。於是,上述等式約束優化問題轉化爲無約束優化的問題
minx{P(x,σ)=f(x)+σP~(x)}\min_{x}\{P(x,\sigma)=f(x)+\sigma\tilde{P}(x) \}通常取β=2\beta=2

例 1:求解下列約束優化問題min{f(x)=x1+x2}s. t. c(x)=x2x12=0\begin{aligned}\min\{f(x)=x_{1}+x_{2}\}\\\text{s. t. } c(x)=x_{2}-x_{1}^{2} =0 \end{aligned}解:構造外罰函數P(x,σ)=x1+x2+σ(x2x12)2P(x,\sigma)=x_{1}+x_{2}+\sigma(x_{2}-x_{1}^{2})^{2} 利用解析法求解Px1=14σx1(x2x12),Px2=1+2σ(x2x12)\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})xP(x,σ)=0\nabla_{x}P(x,\sigma)=0得到x1(σ)=12,x2(σ)=1412σx_{1}(\sigma)=-\frac{1}{2}, x_{2}(\sigma)=\frac{1}{4}-\frac{1}{2\sigma}再令σ+\sigma\to+\inftyx(σ)=(12,14)T=xP(x(σ),σ)=14=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}

不等式約束的優化問題

我們考慮如下不等式約束的優化問題
minf(x),xRns. t. ci(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}P~(x)=i=1l[max(0,ci(x))]α,α1\tilde{P}(x)=\sum_{i=1}^{l}[\max(0, c_{i}(x))]^{\alpha},\quad \alpha\geq 1定義如下形式的外罰函數
P(x,σ)=f(x)+σi=1l[max(0,ci(x))]αα1P(x,\sigma)=f(x)+\sigma\sum_{i=1}^{l}[\max(0, c_{i}(x))]^{\alpha}\quad \alpha\geq 1此時的外罰函數性質與上一節類似,通常取 α=2\alpha=2

一般約束的優化問題

考慮一般的約束優化問題
minf(x)s. t. ci(x)=0,iE={1,2,,l}ci(x)0,iI={L+1,l+2,,l+m}xRn\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}P~(x)=i=1lci(x)β+i=1l[max(0,ci(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,σ)=f(x)+σi=1lci(x)β+i=1l[max(0,ci(x))]α,α1,β1P(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上述罰函數性質與之前的討論類似。通常 α=β=2\alpha=\beta =2。可見,外罰函數的最優解在 σ+\sigma\to+\infty的過程中一直在可行域外部取點,直到趨近最優解 xx^{*}。所以之中方法爲外罰函數法,簡稱外點法P(x,σ)P(x,\sigma) 爲外罰函數,或叫增廣目標函數,σ\sigma爲懲罰因子,P~(x)\tilde{P}(x)爲懲罰項。

對於比較複雜的約束,通常採用迭代的方法:

  1. 給定初始點 x0x^{0},設ϵ>0,c>1\epsilon >0, c>1 爲給定實數,選擇序列 {σk}\{\sigma_{k}\},使得σk+\sigma_{k}\to+\infty,令 k=1k=1
  2. xk1x^{k-1} 爲初始點,求解無約束優化問題min{P(x,σk)=f(x)+σkP~(x)}\min\{P(x,\sigma_{k})=f(x)+\sigma_{k}\tilde{P}(x) \}得到最優解xkx^{k}
  3. σkP~(xk)<ϵ\sigma_{k}\tilde{P}(x^{k})<\epsilon,則停止迭代,xkx^{k} 作爲原問題的最優解;否則,令σk+1=cσk\sigma_{k+1}=c\sigma_{k}k:=k+1k:=k+1,轉至步驟2。

對於外罰函數的算法收斂性與外罰函數的病態性質這裏不作討論。 使用外罰函數法時,選取 σ1\sigma_{1}過大,或者 σk\sigma_{k}增長過快可以使算法快速收斂,但很難精確地求解相應的無約束極小問題;反之,可以使求得P(x,σk+1)P(x,\sigma_{k+1})的極小點變得容易,但收斂太慢。通常取 σk=0.1×2k1\sigma_{k}=0.1\times 2^{k-1}

內罰函數法

在外罰函數法中,近似最優解一般只能近似地滿足約束條件,對於某些實際問題這樣的近似最優解釋不可接受的。內罰函數法是一類保持嚴格可行性的方法。其基本思想是:嚴格要求迭代點在可行域內移動,當迭代點接近可行域邊界時,有無窮大的障礙,迫使迭代點返回可行域的內部。

考慮不等式約束的優化問題,可行域內部記爲:D0={xRnci(x)<0,i=1,2,,l}D^{0}=\{x\in\mathbb{R}^{n} | c_{i}(x)<0, i=1,2,\dots,l\}B(x)=i=1lln(ci(x))B(x)=-\sum_{i=1}^{l}\ln(-c_{i}(x)) 定義如下形式的內罰函數:
P(x,r)=f(x)+rB(x)=f(x)ri=1lln(ci(x))\begin{aligned}P(x,r) &=f(x)+rB(x)\\ &=f(x)-r\sum_{i=1}^{l}\ln(-c_{i}(x))\end{aligned}其中 r>0r>0 是一參數。

顯然,當 xx 在可行域內部,B(x)B(x)爲一正數,當 rr 趨近於 00 時, P(x,r)P(x,r) 的極小點就會趨近於優化問題的極小點。至少有一個 ci(x)c_{i}(x) 趨於 00 時,會導致 B(x)B(x) 劇烈增大,迫使極小點落在可行域的內部。於是,原優化問題就轉化爲一下形式的優化問題:
minP(x,r),xRns. t. ci(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} 注意使用內罰函數時,可行域由 DD 變成 D0D^{0} 。內罰函數法簡稱內點法,B(x)B(x) 爲對數障礙函數。(這裏不介紹倒數障礙函數,因其用得不多性質也不佳)

例 2:用內罰函數法求解約束問題min{f(x)=x12+2x22}s. t. x1+x210\begin{aligned} &\min\{f(x)=x_{1}^{2}+2x_{2}^{2}\} \\ \text{s. t. }& x_{1}+x_{2}-1\geq 0 \end{aligned} 解:構造內罰函數
P(x(r),r)=x12+2x22rln(x1+x21)P(x(r),r)=x_{1}^{2}+2x_{2}^{2}-r\ln(x_{1}+x_{2}-1)利用解析法:
xP(x(r),r)=(2x1rx1+x21,4x2rx1+x21)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(r)=(1+1+3r3,1+1+3r6)Tx(r)=\left( \frac{1+\sqrt{1+3r}}{3}, \frac{1+\sqrt{1+3r}}{6} \right)^{T}r0r\to 0 ,則
x(r)x=(23,13)T,P(x(r),r)f(x)=23x(r)\to x^{*}=\left(\frac{2}{3}, \frac{1}{3}\right)^{T}, P(x(r),r)\to f(x^{*})=\frac{2}{3}

下面給出內罰函數法的算法,此處同樣不討論其收斂性和病態性質。

  1. 給定初始點 x0D0x^{0}\in D^{0} ,設 ϵ>0,0<c<1\epsilon>0, 0<c<1爲給定實數,選擇正值序列 {rk}\{r_{k}\} 使 rk0r_{k}\to0,令 k=1k=1
  2. xk1x^{k-1} 爲初始點,求解約束優化問題min{P(x,rk)=f(x)+rkB(x)}s. t. xD0\begin{aligned} &\min \{P(x,r_{k})=f(x)+r_{k}B(x)\} \\ \text{s. t. }& x\in D^{0} \end{aligned}得到最優解 xkx^{k}
  3. rkB(xk)<ϵr_{k}B(x^{k})<\epsilon , 則停止迭代,xkx^{k} 作爲原問題的最優解;否則,令 rk+1=crkr_{k+1}=cr_{k} , k:=k+1k:=k+1,轉至步驟2。

注意由於可行域發生了變化,D0D^{0}不能爲空,因此內罰函數法不能處理等式約束問題

乘子法

內外罰函數法的主要缺點是當罰函數中的 σ+\sigma\to+\infty 或者 r0r\to0 時,其Hesse矩陣出現病態,給無約束問題的數值求解帶來很大困難。爲克服這一缺點,本節介紹乘子法。乘子法的原理與二階充分條件與Lagrange函數的性質有關,時間問題這裏不做詳細推導,僅給出定理。

等式約束問題的乘子法

定理
xx^{*}, λ\lambda^{*} 滿足約束問題
minf(x),xRns. t. ci(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}的二階充分條件,則存在 σ>0\sigma^{*}>0,使當 σσ\sigma\geq \sigma^{*} 時, xx^{*} 是無約束問題
min{ϕ(x,λ,σ)=f(x)+i=1lλici(x)+σ2i=1lci2(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) \}的嚴格局部解。反之,若 xkx^{k}ϕ(x,λ,σk)\phi(x,\lambda^{*},\sigma_{k}) 的極小點,並且 c(xk)=0c(x^{k})=0,則 xkx^{k} 是上述約束問題的最優解。

ϕ()\phi(\cdot) 被稱爲增廣Lagrange函數乘子罰函數λ\lambda^{*} 實際上是最優解 xx^{*} 處的Lagrange乘子。我們可以通過取一個適當大的 σ\sigma ,然後調整 λ\lambda 使它逐漸趨近於 λ\lambda^{*} ,就能得到約束問題的最優解,這是乘子法的基本思想。

下面給出具體迭代算法:

  1. 給定初始點 x0x^{0} ,設初始乘子 λ1\lambda^{1} ,精度要求爲 ϵ\epsilon ,放大係數爲 cc,選擇序列 {σk}\{\sigma_{k}\},使 σk+\sigma_{k}\to+\infty,令 k=1k=1
  2. xk1x^{k-1} 爲初始點,求解無約束優化問題 minxϕ(x,λk,σk)\min_{x}\phi(x,\lambda^{k},\sigma_{k})得到最優解 xkx^{k}
  3. [i=1lci2(xk)]12ϵ[\sum_{i=1}^{l}c_{i}^{2}(x_{k})]^{\frac{1}{2}}\leq \epsilon,則停止迭代,得到近似解 xkx^{k};否則,轉到步驟4。
  4. λik+1=λik+σkci(xk)\lambda_{i}^{k+1}=\lambda_{i}^{k}+\sigma_{k}c_{i}(x^{k})k:=k+1k:=k+1,轉到步驟2。

只有不等式約束時的乘子法

現在我們考慮只有不等式約束的問題:
minf(x),xRns. t. ci(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}利用等式約束的結果,引入鬆弛變量 ziz_{i},將上述問題轉化爲等式約束問題
minf(x),xRns. t. ci(x)+zi2=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}由於變量增加了,因此問題的維度由 n+ln+l 變成 nˉ+2l\bar{n}+2l 。這使得問題變得複雜。爲了克服此問題,我們可以先關於 zz 求極小 zˉ\bar{z},再將其代入原問題。此處同樣不討論具體細節。

下面給出具體算法:

  1. 給定初始點 x0x^{0} ,設初始乘子 λ1\lambda^{1} ,精度要求 ϵ\epsilon ,放大係數爲 cc ,選擇序列 {σk}\{\sigma_{k}\},使 σk+\sigma_{k}\to+\infty,令 k=1k=1
  2. xk1x^{k-1} 爲初始點,求解無約束規劃問題:minxϕ(x,λk,σk)\min_{x}\phi(x,\lambda^{k},\sigma_{k})得到最優解 xkx^{k}
  3. {i=1l[max(ci(xk),λikσk)]2}12ϵ\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,則停止迭代,得近似解 xkx^{k} ;否則,轉至步驟4。
  4. λik+1=max{0,λik+σkci(xk)},k:=k+1\lambda_{i}^{k+1}=\max\{0, \lambda_{i}^{k}+\sigma_{k}c_{i}(x^{k})\}, k:=k+1,轉至步驟2。

一般問題的乘子法求解

對於一般約束優化問題:
minf(x)s. t. ci(x)=0,iE={1,2,,l}ci(x)0,iI={l+1,l+2,,l+m}xRn\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} 乘子罰函數爲
ϕ(x,λ,σ)=f(x)+i=1lλici(x)+σ2i=1lci2(x)+12σi=l+1l+m{[max(0,λi+σci(x))]2λi2}\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}\}其乘子迭代公式爲:
λik+1=λik+σkci(xk),i=1,2,,lλik+1=max{0,λik+σkci(xk)},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=1lci2(xk)+i=l+1l+m[max(ci(xk),λikσk)]2}12ϵ\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

關於Lagrange乘子法更一般的介紹可參考此文

發佈了64 篇原創文章 · 獲贊 83 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章