數值優化(Numerical Optimization)學習系列-線性規劃(Linear Programming)

概述

線性規劃問題是指目標和約束函數都是線性的最簡單的約束最優化問題,也是在實際中最長使用的模型之一。其求解算法也是相對成熟,各個代數軟件中都會有求解該問題的工具,本節主要介紹:
1. 線性規劃的基本形式已經對偶
2. 線性規劃兩類求解算法:單純形和內點法
3. 總結

線性規劃問題

標準形式

線性規劃的標準形式通常表示爲

min cTx,s.t Ax=b, x0
其中矩陣A是一個m*n的矩陣,通常情況下是行滿秩矩陣,否則可能解不存在或者唯一解。
對於其他形式都可以轉化爲標準形式,例如
min cTx,s.t Axb
可以採用鬆弛的方法進行轉換
min cTx,s.t Ax+z=b;z0
此時目標函數中的變量還不滿足非負數約束,可以採用x=x+x ,其中x+=max(x,0);x=max(x,0)
同理對於其他形式,均可以轉換
xu<=>x+w=u,w0
Axb<=>Axy=b;y0

線性規劃解的形式,根據約束的不同,該問題可能有唯一解、一條線、一個平面,無解(Infeasible)或者無界(Unbounded)
最後兩種情況都可以認爲無界,一個可行解爲空,一個可行解不可達
線性規劃主要考慮m<n ,即行滿秩,此時可能有多個解,其他都可能唯一解或者無界。

對偶問題

由於線性的關係,該問題滿足LICQ時,局部最優解就是全局最優解,因此原始問題和對偶問題的解一致。拉格朗日函數爲

L(x,λ,s)=cTxλT(Axb)sTx
其中拉格朗日因子λs 分別對應等式約束和非負約束,根據KKT條件有
ATλ+s=cAx=bx0s0xTs=0

1.對於該KKT條件對應的最優解(x,λ,s) 有如下一個性質,

cTx=(ATλ+s)x=(Ax)Tλ=bTλ
即目標函數轉換爲bTλ ,即對偶問題的目標
2.可以證明滿足該KKT條件的可行解,就是全局最優解。

對偶問題

max bTλs.t ATλc
轉換爲標準形式爲
max bTλs.t ATλ+s=c, s0
其中(λ,s) 叫做對偶變量。

性質

原始問題和對偶問題是對稱的,並且滿足強對偶條件,因此

  1. 如果原始或者對偶問題有解,則對應問題也有解
  2. 如果顏色或者對偶問題是無界的,則對應問題則爲無解。

線性規劃求解

概念

在介紹算法之前,有一個比較重要的概念(基矩陣和基礎可行解)介紹一下,在後續的介紹中會頻繁應用到。

基礎可行點,需要滿足如下條件
1. 指示集合B 包含m個下標
2. 當iBxi=0
3. 基矩陣B定義爲B=[Ai],iB

簡單示意如下圖
這裏寫圖片描述

單純形算法

單純形算法的基本策略遍歷線性規劃問題所有的基礎可行解,直到收斂到一個基礎最優解上,並且有定理證明當線性規劃有界並且有可行解時,肯定會收斂到基礎最優解上
定義N=(1,2,3...)B ,則單純形算法其中一步如下
這裏寫圖片描述
單純形算法需要解決如下幾個關鍵點

  1. 如何選取初始點,主要有兩類算法可以求解得到,都是轉換線性規劃本身進行求解,一是PhaseI 轉換爲
    min eTz,  s.t. Ax+Ez=b;  (x,z)0
    二是PhaseII 轉換爲
    min cTx  s.t Ax+z=b,x0, 0z0

    2.如何有效表示xN
  2. 如何計算離開下標
    詳細的單純形算法參考各類參考文獻

內點法

對於小規模線性規劃問題,單純形算法能很好的解決,但是大規模問題效率比較低,而內點法能夠很好的解決該問題。
內點法每一步驟計算比較昂貴但是能夠有效的解決最優解。
內點法的主要思路,逐漸尋找滿足KKT條件並且最小化某價值函數的解,根據KKT條件有

ATλ+s=cAx=b(x,s)0xTs=0

轉換爲矩陣表示爲
F(x,λ,s)=AT+scAXbXSe=0

問題轉換爲求解該方程,根據之前的學習,此時通過牛頓法進行求解,一般情況下還需要一個解的度量函數,一般定義爲u=xTsn
根據牛頓方法有
J(x,λ,s)ΔxΔλΔs=F(x,λ,s)

根據該方程求解搜索方向,一般情況下還要滿足非負約束(x,s)0 ,因此要求解一定步長,即下一個搜索點爲(x,λ,s)+α(Δx,Δλ,Δs)
但是大多數內點法不會直接求解上述方程,一般會進行一定縮放,即xTs=δu,即求解
F(x,λ,s)=AT+scAXbXSe+δue=0

因此一個相對完整的原始對偶內點法步驟爲
這裏寫圖片描述

中心路徑

中心路徑在內點法中是一個非常重要的概念,因爲每次迭代點都是中心路徑的點,中心路徑的選取非常關鍵,參數選擇太大或者太小都會影響計算複雜度。
某個點屬於中心路徑,即(xτ,λτ,sτ)C 則滿足

ATλ+s=cAx=b(x,s)0xTs=τ
該KKT條件也對應某個最優化問題(對數障礙問題),也是內點法求解其他非線性約束最優化問題的基礎。
min cTxτi=1...nlnxi,  Ax=b

此時只要逐漸改變τ0 的值,就能找到最優解,因此τ 如何改變非常重要,也是很多算法改進的關鍵點。

總結

通過本小節的學習,能夠瞭解到
1. 線性規劃的基本形式已經原始問題和對偶問題的關係
2. 單純形和內點法如何求解線性規劃問題

詳細的單純形算法網上介紹的非常多,經典的可以參考wiki

發佈了59 篇原創文章 · 獲贊 123 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章