序列二次规划——SQP
本博客可能隨時刪除或隱藏,請關注微信公眾號,獲取永久內容。
微信搜索:編程筆記本。獲取更多干貨。
點擊上方藍字關注我,我們一起學編程
歡迎小伙伴們分享、轉載、私信、贊賞
因最近課業要求,又去把之前沒看懂的序列二次規劃(SQP)算法重新研究了一遍,終于明白一二了,記錄如下。
1. 序列二次規劃算法簡介
非線性規劃問題是目標函數或約束條件中包含非線性函數的規劃問題。一般說來,求解非線性規劃問題比求解線性規劃問題困難得多。而且,不像線性規劃有單純形法這一通用方法,非線性規劃目前還沒有適用于各種問題的一般算法,已有的各種方法都有其特定的適用范圍。
利用間接法求解最優化問題的途徑一般有兩種。一種是在可行域內使目標函數下降的迭代算法,如可行點法;另一種是利用目標函數和約束條件構造增廣目標函數,借此將約束最優化問題轉化為無約束最優化問題,如罰函數法、乘子法、序列二次規劃法等。
序列二次規劃算法是目前公認的求解約束非線性優化問題最有效的方法之一。與其他算法相比,序列二次規劃法的優點是收斂性好、計算效率高、邊界搜索能力強,因此受到了廣泛的重視及應用。**在序列二次規劃法的迭代過程中,每一步都需要求解一個或多個二次規劃(QP)子問題。**一般地,由于二次規劃子問題的求解難以利用原問題的稀疏性、對稱性等良好特性,隨著問題規模的擴大,其計算工作量和所需存儲量是非常大的。因此,目前的序列二次規劃算法一般只適用與中小規模問題。
2. 序列二次規劃算法的推導過程
序列二次規劃(SQP)算法是將復雜的非線性約束最優化問題轉化為比較簡單的二次規劃(QP)問題求解的算法。**所謂二次規劃問題,就是目標函數為二次函數,約束函數為線性函數的最優化問題。**為此規劃問題是最簡單的非線性約束最優化問題。
2.1 序列二次規劃算法思想
1-1
minf(X)s.t.gu(X)≤0(u=1,2,...,p)hv(X)=0(v=1,2,...,m)min \ f(X) \\ s.t. \ \ \ \ \ g_u(X) \leq 0 \ \ (u=1,2,...,p) \ \ \ \ \\ \ \ \ \ \ \ \ \ h_v(X) = 0 \ \ (v=1,2,...,m)min?f(X)s.t.?????gu?(X)≤0??(u=1,2,...,p)????????????hv?(X)=0??(v=1,2,...,m)
利用泰勒展開將非線性約束問題(1-1)的目標函數在迭代點 XkX^{k}Xk 處簡化成二次函數,將約束條件簡化成線性函數后得到如下二次規劃問題:
1-2
minf(X)=12[X?Xk]T?2f(Xk)[X?Xk]+?f(Xk)T[X?Xk]s.t.?gu(Xk)T[X?Xk]+gu(Xk)≤0(u=1,2,...,p)?hv(Xk)T[X?Xk]+hv(Xk)=0(v=1,2,...,m)min \ f(X)=\frac{1}{2}[X - X^k]^T \nabla ^2 f(X^k) [X - X^k] + \nabla f(X^k) ^T [X - X^k]\\ s.t. \ \ \ \ \ \nabla g_u(X^k) ^T [X - X^k]+g_u(X^k) \leq 0 \ \ (u=1,2,...,p)\\ \ \ \ \ \ \ \ \ \ \ \ \ \nabla h_v(X^k) ^T [X - X^k]+h_v(X^k) = 0 \ \ (v=1,2,...,m)min?f(X)=21?[X?Xk]T?2f(Xk)[X?Xk]+?f(Xk)T[X?Xk]s.t.??????gu?(Xk)T[X?Xk]+gu?(Xk)≤0??(u=1,2,...,p)?????????????hv?(Xk)T[X?Xk]+hv?(Xk)=0??(v=1,2,...,m)
此問題是原約束最優化問題的近似問題,但其解不一定是原問題的可行點。為此,令:
S=X?XkS=X-X^kS=X?Xk
將上述二次規劃問題變成關于變量 SSS 的問題,即:
1-3
minf(X)=12ST?2f(Xk)S+?f(Xk)TSs.t.?gu(Xk)TS+gu(Xk)<=0(u=1,2,...,p)?hv(Xk)TS+hv(Xk)=0(v=1,2,...,m)min \ f(X)=\frac{1}{2}S^T \nabla ^2 f(X^k) S + \nabla f(X^k) ^T S\\ s.t. \ \ \ \ \ \nabla g_u(X^k) ^T S+g_u(X^k) <= 0 \ \ (u=1,2,...,p)\\ \ \ \ \ \ \ \ \ \ \nabla h_v(X^k) ^T S+h_v(X^k) = 0 \ \ (v=1,2,...,m)min?f(X)=21?ST?2f(Xk)S+?f(Xk)TSs.t.??????gu?(Xk)TS+gu?(Xk)<=0??(u=1,2,...,p)??????????hv?(Xk)TS+hv?(Xk)=0??(v=1,2,...,m)
令:
1-4
H=?2f(Xk)C=?f(Xk)Aeq=[?h1(Xk),?h2(Xk),...,?hm(Xk)]TA=[?g1(Xk),?g2(Xk),...,?gp(Xk)]TBeq=[h1(Xk),h2(Xk),...,hm(Xk)]TB=[g1(Xk),g2(Xk),...,gp(Xk)]TH=\nabla ^2 f(X^k) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \\ C=\nabla f(X^k) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \\\ A_{eq} = [\nabla h_1(X^k),\nabla h_2(X^k),...,\nabla h_m(X^k)] ^T \\ A = [\nabla g_1(X^k),\nabla g_2(X^k),...,\nabla g_p(X^k)] ^T \ \ \ \ \ \\ B_{eq} = [h_1(X^k),h_2(X^k),...,h_m(X^k)] ^T \ \ \ \ \ \ \ \ \ \ \\ B = [g_1(X^k),g_2(X^k),...,g_p(X^k)] ^T\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ H=?2f(Xk)???????????????????????????????????????????????C=?f(Xk)?????????????????????????????????????????????????Aeq?=[?h1?(Xk),?h2?(Xk),...,?hm?(Xk)]TA=[?g1?(Xk),?g2?(Xk),...,?gp?(Xk)]T?????Beq?=[h1?(Xk),h2?(Xk),...,hm?(Xk)]T??????????B=[g1?(Xk),g2?(Xk),...,gp?(Xk)]T???????????????
將式(1-4)寫成二次規劃問題的一般形式,即:
1-5
min12STHS+CTSs.t.AS=?BAeqS=?Beqmin \ \frac{1}{2} S^THS + C^TS \\ s.t. \ \ \ \ \ AS = -B \ \ \ \ \ \ \ \ \ \ \\ \ \ \ \ \ \ A_{eq}S = -B_{eq}min?21?STHS+CTSs.t.?????AS=?B????????????????Aeq?S=?Beq?
求解此二次規劃問題,將其最優解 S?S^{*}S? 作為原問題的下一個搜索方向 SkS^{k}Sk,并在該方向上進行原約束問題目標函數的約束一維搜索,這樣就可以得到原約束問題的一個近似解 Xk+1X^{k+1}Xk+1 。反復這一過程,就可以得到原問題的最優解。
上述思想得以實現的關鍵在于如何計算函數的二階導數矩陣 HHH(DFP、BFGS),以及如何求解式(1-5)所示的二次規劃問題。
2.2 二次規劃問題的求解
二次規劃問題的求解分為一下兩種情況:等式約束二次規劃問題、一般約束二次規劃問題。
等式約束二次規劃問題:
1-6
min12STHS+CTSs.t.AeqS=?Beqmin \ \frac{1}{2} S^THS + C^TS \\ s.t. \ \ \ \ \ A_{eq}S = -B_{eq} min?21?STHS+CTSs.t.?????Aeq?S=?Beq?
其拉格朗日函數為:
minL(S,λ)=12STHS+CTS+λT(AeqS+Beq)min \ L(S,\lambda)=\frac{1}{2} S^THS + C^TS + \lambda ^T (A_{eq}S +B_{eq})min?L(S,λ)=21?STHS+CTS+λT(Aeq?S+Beq?)
由多元函數的極值條件 ?L(S,λ)=0\nabla L(S,\lambda)=0?L(S,λ)=0 可得:
HS+C+AeqTλ=0AeqS+Beq=0HS+C+A_{eq}^T\lambda=0 \\ A_{eq}S+B_{eq}=0HS+C+AeqT?λ=0Aeq?S+Beq?=0
寫成矩陣形式,即:
(HAeqTAeq0)(Sλ)=(?C?Beq)\begin{pmatrix} H & A_{eq}^T \\ A_{eq} & 0 \\ \end{pmatrix} \begin{pmatrix} S \\ \lambda \\ \end{pmatrix} = \begin{pmatrix} -C \\ -B_{eq} \\ \end{pmatrix} (HAeq??AeqT?0?)(Sλ?)=(?C?Beq??)
式(1-6)其實就是以 [S,λ]T[S,\lambda]^{T}[S,λ]T 為變量的線性方程組,而且變量數和方程數均為 n+mn+mn+m 。由線性代數可知,此方程要么無解,要么有唯一解。如果有解,利用消元變換可以方便地求出該方程地唯一解,記作 [Sk+1,λk+1]T[S^{k+1},\lambda^{k+1}]^{T}[Sk+1,λk+1]T 。根據 K?TK-TK?T 條件,若此解中的乘子向量 λk+1\lambda^{k+1}λk+1 不全為零,則 Sk+1S^{k+1}Sk+1 就是等式約束二次規劃問題(1-6)的最優解 S?S^{*}S? 。
一般約束二次規劃問題:
對于一般約束下的二次規劃問題(1-5),在不等式約束條件中找出在迭代點 XkX^{k}Xk 處起作用的約束,將等式約束和起作用的不等式約束組成新的約束條件,構成新的等式約束二次規劃問題:
minf(X)=12STHS+CTSs.t.∑i∈E?Ik∑j=1naijsj=?bjmin \ f(X)=\frac{1}{2} S^THS + C^TS \\ s.t. \ \ \ \ \ \sum_{i\in E \bigcup I_k}\sum_{j=1}^n a_{ij}s_{j}=-b_{j}min?f(X)=21?STHS+CTSs.t.?????i∈E?Ik?∑?j=1∑n?aij?sj?=?bj?
其中,EEE 代表等式約束下的集合,IkI_kIk? 代表不等式約束中起作用的約束的下標集合。
至此,一般約束二次規劃問題就轉化成了等式約束二次規劃問題,可以用同樣的方法求解。根據 K?TK-TK?T 條件,若解中對應于原等式約束條件的乘子不全為零,對應起作用的不等式約束條件的乘子大于等于零,則 Sk+1S^{k+1}Sk+1 就是等式約束二次規劃問題(1-5)的最優解 S?S^{*}S? 。
綜上所述,在迭代點 XkX^kXk 上先進行矩陣 HkH^kHk 的變更,再構造和求解相應的二次規劃子問題,并將該子問題最優解 S?S^*S? 作為下一次迭代的搜索方向 SkS^kSk 。然后在該方向上對原非線性約束最優化問題目標函數進行約束一維搜索,得到下一個迭代點 XkX^kXk ,并判斷收斂精度是否滿足。重復上述過程,直到迭代點 Xk+1X^{k+1}Xk+1 最終滿足終止準則,得到原非線性約束最優化問題的最優解為止。
2.3 序列二次規劃算法的迭代步驟
[1] 給定初始點 X0X^0X0 、收斂精度 ?\epsilon? ,令 H0=IH^0=IH0=I ,置 k=0k=0k=0 ;
[2] 將原問題在迭代點 XkX^kXk 處簡化成二次規劃問題(1-5);
[3] 求解上述二次規劃問題,并令 Sk=S?S^k=S^*Sk=S? ;
[4] 在方向 SkS^kSk 上對原問題目標函數進行約束一維搜索,得到下一個迭代點 Xk+1X^{k+1}Xk+1 ;
[5] 終止判斷:若 Xk+1X^{k+1}Xk+1 滿足給定精度的終止準則,則將 Xk+1X^{k+1}Xk+1 作為最優解,f(Xk+1)f(X^{k+1})f(Xk+1) 作為目標函數的最優代價,終止計算;否則,轉 [6] ;
[6] 按照 DFP 或 BFGS 法修正 Hk+1H^{k+1}Hk+1 ,令 k=k+1k=k+1k=k+1 ,轉 [2] 。
本博客可能隨時刪除或隱藏,請關注微信公眾號,獲取永久內容。
總結
以上是生活随笔為你收集整理的序列二次规划——SQP的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浅析dedecms织梦网站留言板提交时验
- 下一篇: 2017软件工程实践总结