運籌優化(十二)--帶約束非線性規劃(NLP)

Eason.wxd發表於2019-01-18

線性約束的非線性規劃

許多可以被有效解決的大型非線性規劃中所有或者幾乎所有的約束,都是線性的。只是將目標函式擴充套件為非線性。相對來說容易解決。

下面四種規劃是特殊的NLP問題

凸規劃

若最優化問題的目標函式為凸函式,不等式約束函式也為凸函式,等式約束函式是仿射的,則稱該最優化問題為凸規劃。凸規劃的可行域為凸集,因而凸規劃的區域性最優解就是它的全域性最優解。當凸規劃的目標函式為嚴格凸函式時,若存在最優解,則這個最優解一定是唯一的最優解。

\begin{align} max/min && f(\mathbf x) \\ s.t. && g_i(x) \ge 0, && i=1, ... , m \\ && h_j(x) = 0, && j=1, ... , l \end{align}

設f(x)是凸函式, gi(x)是凸函式, hj(x)是線性函式. 
那麼這個問題的可行域S就是m+l個凸集的交, 還是凸集.

凸規劃容易處理,是因為其區域性最優解就是全域性最優解這個特性決定的。

可分離規劃

如果函式s(x) 可以表示為下列部分之和:

s(x1,x2,...,xn) 定義為:\sum_{j = 1}^{n}s_{j}(x_{j}),其中每個sn(xn)都是單變數函式,則函式s(x)是可分離的,也就是說,可分離規劃是指一個有約束的非線性規劃滿足目標函式和所有的約束函式都是可分離函式。

由於可分離規劃的這種可分離性,使其容易處理,我們可以對目標函式或者約束函式,用線性函式分段近似。然後,一個可分離規劃就符合凸規劃的定義,可以用線性規劃求解演算法計算每個分段的線性規劃問題,從而近似計算這個非線性規劃問題。

二次規劃

一類特殊的非線性規劃。它的目標函式是二次函式,約束條件是線性的。求解二次規劃的方法很多。較簡便易行的是沃爾夫法。它是依據庫恩·塔克條件,線上性規劃單純形法的基礎上加以修正而成的。此外還有萊姆基法、畢爾法、凱勒法等。

正向幾何規劃

一類特殊的非線性規劃。它的目標函式和約束函式都是正定多項式(或稱正項式)。幾何規劃本身一般不是凸規劃,但經適當變數替換,即可變為凸規劃。幾何規劃的區域性最優解必為整體最優解。求解幾何規劃的方法有兩類。一類是通過對偶規劃去求解;另一類是直接求解原規劃,這類演算法大多建立在根據幾何不等式將多項式轉化為單項式的思想上。

拉格朗日乘子法

在求取有約束條件的優化問題時,拉格朗日乘子法(Lagrange Multiplier) 和KKT條件是非常重要的兩個求取方法,對於等式約束的優化問題,可以應用拉格朗日乘子法去求取最優值;如果含有不等式約束,可以應用KKT條件去求取。當然,這兩個方法求得的結果只是必要條件,只有當是凸函式的情況下,才能保證是充分必要條件。KKT條件是拉格朗日乘子法的泛化。

一. 拉格朗日乘子法(Lagrange Multiplier) 和KKT條件

通常我們需要求解的最優化問題有如下幾類:

(i) 無約束優化問題,可以寫為:

                                      min f(x);  

(ii) 有等式約束的優化問題,可以寫為:

                                       min f(x), 

                                            s.t. h_i(x) = 0; i =1, ..., n 

(iii) 有不等式約束的優化問題,可以寫為:

                                      min f(x), 

                                            s.t. g_i(x) <= 0; i =1, ..., n

                                                  h_j(x) = 0; j =1, ..., m

對於第(i)類的優化問題,常常使用的方法就是Fermat定理,即使用求取f(x)的導數,然後令其為零,可以求得候選最優值,再在這些候選值中驗證;如果是凸函式,可以保證是最優解。

對於第(ii)類的優化問題,常常使用的方法就是拉格朗日乘子法(Lagrange Multiplier) ,即把等式約束h_i(x)用一個係數與f(x)寫為一個式子,稱為拉格朗日函式,而係數稱為拉格朗日乘子。通過拉格朗日函式對各個變數求導,令其為零,可以求得候選值集合,然後驗證求得最優值。拉格朗日乘子法必須保證約束只含等式。

對於第(iii)類的優化問題,常常使用的方法就是KKT條件。同樣地,我們把所有的等式、不等式約束與f(x)寫為一個式子,也叫拉格朗日函式,係數也稱拉格朗日乘子,通過一些條件,可以求出最優值的必要條件,這個條件稱為KKT條件。

(a) 拉格朗日乘子法(Lagrange Multiplier)

對於等式約束,我們可以通過一個拉格朗日系數a 把等式約束和目標函式組合成為一個式子L(a, x) = f(x) + a*h(x), 這裡把a和h(x)視為向量形式,a是橫向量,h(x)為列向量,然後求取最優值,可以通過對L(a,x)對各個引數求導取零(拉格朗日函式的駐點),聯立等式進行求取。

一開始,之所以構造拉格朗日函式,是因為它在所有的可行點上都和原始目標函式相同。對於任何固定的拉格朗日乘子v,鬆弛模型(就是帶約束轉換為無約束後的模型)的無約束最優解一定是一個駐點。如果x是拉格朗日函式L的一個駐點,而x又是L的無約束最優解,則x一定是原始帶等式約束的NLP的最優解。

(b) KKT條件

對於含有不等式約束的優化問題,如何求取最優值呢?常用的方法是KKT條件,同樣地,把所有的不等式約束、等式約束和目標函式全部寫為一個式子L(a, b, x)= f(x) + a*g(x)+b*h(x),KKT條件是說最優值必須滿足以下條件:

1. L(a, b, x)對x求導為零;

2. h(x) =0;

3. a*g(x) = 0;

求取這三個等式之後就能得到候選最優值。其中第三個式子非常有趣,因為g(x)<=0,如果要滿足這個等式,必須a=0或者g(x)=0. 這是SVM的很多重要性質的來源,如支援向量的概念。

也就是說,在區域性最優點上,對於每條不等式約束,要麼其作用,要麼其對應的拉格朗日乘子為0

懲罰與障礙法

這部分與線性規劃的內點法思想類似,將帶約束問題,轉換到無約束問題,通過懲罰函式的方式。

既約梯度法

既約梯度法(Reduced Gradient Method,1963),將線性規劃的單純形法推廣到具有非線性目標函式的問題.其基本思想是把變數分為基變數和非基變數,將基變數用非基變數表示,並從目標函式中消去基變數,得到以非基變數為自變數的簡化的目標函式,進而利用此函式的負梯度構造下降可行方向。簡化後的目標函式關於非基變數的梯度稱為目標函式的既約梯度。

相關文章