怎麼理解SQP演算法?

時間 2021-05-31 02:23:07

1樓:劉敏

個人是十分喜歡SQP(sequential quadratic programming) 這個名字的,所以試著強答一波。

先說結論,要形象的理解SQP,其實只要形象的理解牛頓迭代法就可以了, 也就是下面的這張圖:

也就是說,我們要求解

那我們就定義一組數列 , 作為初始值,

當然這裡假定上述式子是定義良好的。那我們將會得到 區域性quadratic。

首先說一下為什麼喜歡這個名字,因為基本上一看到這個名字就大體知道這個方法是怎麼使用的,大體上就是將乙個優化問題拆解為quadratic optimal problem。

其實這個方法的本質上是基於KKT條件的,我們舉乙個Newton Lagrange SQP。

比如說我們現在有乙個優化問題

那其實優化問題,在本質上就是尋找乙個合適的descent direction。所謂的SQP其實就是在每一步迭代的時候,都將尋找descent direction轉化為乙個quadratic optimal problem, 也就是求出下面這個問題的最優解

這裡函式L 就是拉格朗日函式, 也就是

上面這個quadratic optimal problem的解d就是第k步的descent direction, 或者換句話說,第k+1步的點應該為

.那方法講完了,我們就要想,為什麼下乙個點要被定義成這個樣子呢,這個就要回到上面提到的牛頓法。

我們現在假設 是最開始的那個優化問題的解,那我們考慮他的必要條件,或者KKT條件(這裡我們假設h,g 滿足CQ),也就是存在 使得

那我們現在定義乙個新的函式F轉寫一下乙個問題

那我們就把上述問題轉換為求函式F的根,也就是解

那我們這裡如果用牛頓迭代法的話就是定義乙個數列 , 為初始值,然後 是下面這個線性方程組的解

如果我們將上面這個式子展開的話,就會得到

如果現在我們定義 , 那上面這個式子就是下面這個優化問題解的充要條件

也就是我們在SQP方法中使用的quadratic optimal probelm.

通過這個方法,我們就把乙個非線性的問題轉化為乙個線性的問題,解上述線性問題就比如可以使用active set方法。

然後在某些條件下,我們將會得到SQP的收斂是等於牛頓迭代法的收斂的。

怎麼理解全排列演算法的原理?

兼有朗月耀 參見 100 個數,如何遍歷得到所有全排列?兼有朗月耀的回答 知乎 https www. 神秘的什錦飯 我的理解是這樣的,首先這個全排列應該是越到後面 就越是大的數在前吧,譬如說 123 的排列,就是 123,132,213,231,312,321 那麼如果想變大,那就要把大的數放到前面...

如何理解Kosaraju演算法?

柯西洗襪子 推薦閱讀 1 的中3.4節,思路很清晰,解釋得非常直觀.我大概寫一下我的閱後總結 首先,你得熟悉有向圖 digraph 的深度優先搜尋 DFS 前序 preorder 後序 postorder 逆後序 reverse postorder 有向圖的逆 transpose graph 如果把...

如何理解 Johnson Trotter 演算法來生成全排列?

Frank D 先佔坑.之前處理Mesh 頂點關係 的時候接觸過.首先是直觀地思想說明 不難 每次讓其中的 可移動元素 交換一下.如何定義可移動元素?每個數都有移動方向 不是一成不變的 如果該數的方向指向的相鄰數比該數小的話則稱該數是可移動數。如何移動?一開始為每乙個數字指定乙個方向 這個方向不是一...