罚函数法求解约束问题最优解
問題描述:
約束問題的最優解可以描述為:
s.t.?minf(x)gi(x)≥0,i=1,?,mhj(x)=0,j=1,?,l
考慮約束問題: ,其中,f(x),gi(x),hj(x) 連續。
或者
其中, g(x)=(g1(x),?,gm(x))Th(x)=(h1(x),?,hl(x))T
令問題的可行域是:
D={x|gi(x)hj(x)≥0,i=1,?,m.≥0,j=1,?,l.} ,如何求解約束問題???
罰函數法是序列無約束問題算法的典型代表。罰函數法的基本思想是構造輔助函數F,把原來的約束問題轉化為求極小化輔助函數的無約束問題。
如何構造輔助函數,是求解問題首要問題。
一、外點罰函數法
基本思想:構造輔助函數Fμ:Rn→R???(μ>0) 。構造函數在可行域內部與原問題的取值相同,在可行域外部,其取值遠遠大于目標函數的取值。
1、對于約束問題:
可定義輔助函數:
F(x,μ)=f(x)+μ∑j=1lh2j(x)2、對于約束問題:
s.t.?minf(x)gi(x)≥0,i=1,?,m ,可定義輔助函數:
F(x,μ)=f(x)+μ∑i=1m(max{0,gj(x)})23、對于一般問題:
可定義輔助函數:
其中, P(x)=∑mi=1?(gi(x))+∑lj=1ψ(hj(x)), ?{=>0,y≥00,y<0, ψ{=>0,y≥00,y≠0,
典型的取法有: ?=(max{0,?gi(x)})α, ψ=|hj(x)|β???(α≥1,β≥1)
通過這些輔助函數,可以把約束問題轉換為無約束問題:
minF(x,μ)=f(x)+μQ(x)
其中 μ 是很大的數,通常取一個趨向于無窮大的嚴格遞增正數列 {μk},Q(x) 是連續函數。
具體步驟:
1、給定初始點、初始罰因子,放大系數,允許誤差 x(0),μ1,c>1,?>0,設 k=1
2、以 x(k?1)為初點,求解無約束問題: minF(x,μ)=f(x)+μkQ(x),得極小點 x(k)
3、若 μkQ(x(k))<?,停止,得極小點 x(k);否則,令 μk+1=cμk,置 K:=k+1,轉步驟(2)
二、內點罰函數法
基本思想:內點法產生的點列從可行域的內部逼近問題的解。構造輔助(光滑)函數,該函數在嚴格可行域外無窮大,且當自變量趨于可行域邊界時,函數值趨于無窮大。
適合類型:
s.t.?minf(x)gi(x)≥0,i=1,?,m ,定義域: S={x|gi(x)≥0,i=1,2,?,m}
當 μ→0時,無約束問題 minFμ=F(x,μ) 的解趨于原有約束問題的解。
定義障礙函數:
F(x,μ)=f(x)+μB(x)其中,當自變量趨于可行域邊界時,連續函數 B(x)→0,μ是很小的正數。
可通過求解:
minF(x,μ)s.t.x∈int?S 得到原問題的近似解。輔助函數:
B(x)=?∑log?gi(x)
具體步驟:
1、給定初始點、初始罰因子,縮小系數,允許誤差 x(0),μ1,β∈(0,1),?>0,設 k=1
2、以 x(k?1)為初點,求解無約束問題: minF(x,μ)=f(x)+μkB(x),得極小點 x(k)
3、若 μkB(x(k))<?,停止,得極小點 x(k);否則,令 μk+1=βμk,置 K:=k+1,轉步驟(2)
總結
以上是生活随笔為你收集整理的罚函数法求解约束问题最优解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 滑膜控制的基本原理
- 下一篇: ROS学习(四):安装 MoveIt!