1 等式約束優化問題
等式約束問題如下:
求解方法包括:消元法、拉格朗日乘子法。
1、消元法
通過等式約束條件消去一個變量,得到其他變量關於該變量的表達式代入目標函數,轉化為無約束的極值求解問題,具體過程如下:
得到無約束的極值問題即可通過:一階導數=0求駐點,Hession矩陣判定極值點。
2、拉格朗日乘子法
消元法大部分情況下很難適用,比如等式約束為高次耦合非線性,難以消去其中一個變量。拉格朗日乘子法適用於多維、高次、非線性約束方程。
拉格朗日乘子法(二維問題):
三個方程三個未知數,聯立該方程即可求解最優的。
拉格朗日乘子法(多維問題):
得到的方程組,方程個數與未知變量個數相同,可以求解得出。
2 不等式約束優化問題與KKT條件
求解思路是對非線性約束條件引入松弛變量,轉化為等式約束,二維問題如下:
注意,引入松弛變量是為了確保非負,這樣滿足約束函數小於等於0的條件。
多維問題如下:
引入松弛變量的作用是為了將不等式約束轉化為等式約束,原理是:松弛變量是等高線負值,將不等式約束的取值面改為等式約束的取值曲線,但要滿足不等式約束條件。
KKT條件:上述方法問題在於求解出來的解可能不滿足原不等式約束條件,即解落於參數區域外。下面介紹通用的KKT條件:
KKT條件給出了不等式約束條件的優化問題,存在極值點的必要條件,即通過判定該條件來判定解是否存在,並利用KKT條件求解極值。必要條件如下:
KKT條件證明:
KKT條件應用說明:
3 拉格朗日乘子法證明
如果極值點存在,則極值點滿足目標函數在約束曲線的切線方向方向導數為0,如下:
為什么?因為方向導數代表了曲面梯度在曲線切向方向的分量,梯度是曲面在該點上升的方向,如果曲面梯度與曲線切線向量乘積不為0,即梯度與曲線切線不垂直,則在該曲線上,沿着負梯度方向走,必然能找見更小的點。
同時易得:極值點滿足約束函數再約束曲線切線方向的導數為0(二維函數),如下:
則對比上述兩個方程切線矢量的系數可以得到:
4 KKT計算實例
對於如下非線性規划問題: