數值優化(Numerical Optimization)學習系列-序列二次規劃和內點法(SQP、Interior-Point)

概述

對於非線性約束最優化問題,序列二次規劃和內點法是兩類非常重要的算法,也是大規模問題的利器。序列二次規劃方法將原始問題分解爲一系列二次規劃問題逐步求解;內點法將將約束添加到目標函數中轉換爲一系列無約束問題逐步求解。兩類算法共同思想將原始問題轉換爲可求解問題。
1. 序列二次規劃概述
2. 內點法概述
3.總結

序列二次規劃(SQP)概述

序列二次規劃(Sequential Quadratic Programming)對於非線性約束最優化問題是一個非常有效的算法,將原始問題劃分爲一系列二次規劃的子問題進行求解。

本節中介紹的SQP都屬於激活集算法,有兩種類型的激活-SQP算法,一是IQP,將原始問題轉換爲一系列不等式約束二次規劃;二是EQP,將原始問題轉換爲一系列等式約束二次規劃問題。

大部分的SQP問題分爲兩個步驟進行求解,第一步通過局部方法尋找有效集;二是通過LineSearch或者TR進行最優化。

局部SQP方法

等式約束問題

問題描述如下

minf(x)s.tc(x)=0
其主要思想是根據當前點xk 尋找下一個優化點xk+1 通過轉換問題二次規劃問題。

思路1,KKT條件

原始問題的拉格朗日方程爲L(x,λ)=f(x)λTc(x) ,根據KKT條件有

F(x,λ)=[f(x)A(x)Tλc(x)]=0
其中A(x)=[c1(x),c2(x)...cm(x)]
對於等式方程問題可以採用牛頓方程進行求解,迭代步驟如下
[xk+1λk+1]=[xkλk]+[pkpλ]
其中pkpλ 通過牛頓KKT條件得到
[2LxAkATk0][pkpλ]=[fk+ATkλkck]
注:推導過程簡單,可以參考之前的章節。

思路2,根據當前點進行建模

對於當前點xk 進行二次泰勒展開,轉換爲

minpfk+fTkp+12pTL2ps.t.Akp+ck=0
展開方式爲目標函數進行二次泰勒展開,約束進行一次泰勒展開。根據KKT也有
2Lkpk+fkATklk=0Akpk+ck=0
通過轉換可以轉換爲上述求解步驟。

求解框架

這裏寫圖片描述

不等式約束問題

對於不等式約束,同理可以進行泰勒展開。

minpfk+fTkp+12pTL2ps.t.ci(xk)Tp+ci(xk)=0iEci(xk)Tp+ci(xk)0iI

IPQ 和 EPQ

  1. IPQ:顧名思義將原始轉換爲一系列帶有不等式約束的二次規劃問題,該方法在實際中效果非常好,問題是對於一般的二次規劃問題求解複雜度較高,雖然可以將該次的最優解作爲下一次子問題的初始解,仍然存在熱啓動問題。
  2. EPQ:每次只考慮激活集,即等式約束。相對於IPQ每個子問題相對比較容易求解。

其他

最優化步驟中可以通過線搜索或者信賴域方法進行求解。

內點法

內點法和SQP方法類似對於求解大規模非線性約束非常有效。另外內點法(Interior-Point)和障礙方法(barrier methods)具有相同含義。

兩類轉換思路

內點法可以求解的問題,可以轉換爲

minx,sf(x)s.t.cE(x)=0,cI(x)s=0,s0

連續方法(continuation methods)

根據KKT條件,上述問題可以轉換

f(x)ATE(x)yAI(x)Tz=0Szμe=0cE(x)=0ci(x)s=0
類似於之前做法,可以通過不斷改變參數μ 來搜尋一條中心路徑逐漸優化原始問題。

障礙方法(barrier methods)

問題可以轉換爲

minx,sf(x)μi=1...mlogsis.tcE(x)=0cI(x)s=0
其中參數μ 是正數,控制搜索過程。通過KKT條件求解該問題,會發現和上述轉換類似。
最原始的轉換方式,直接轉換爲
minf(x)μiIlogci(x)
該轉換可能帶來的問題是可能找不到最優解。

其他

  1. 內點法可以從對偶問題中獲取關鍵思路
  2. 可以結合線搜索和信賴域方法進行求解

總結

通過本節學習可以瞭解序列二次規劃和內點法求解非線性約束最優化問題的關鍵思路。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章