概述
線性規劃問題是指目標和約束函數都是線性的最簡單的約束最優化問題,也是在實際中最長使用的模型之一。其求解算法也是相對成熟,各個代數軟件中都會有求解該問題的工具,本節主要介紹:
1. 線性規劃的基本形式已經對偶
2. 線性規劃兩類求解算法:單純形和內點法
3. 總結
線性規劃問題
標準形式
線性規劃的標準形式通常表示爲
對於其他形式都可以轉化爲標準形式,例如
同理對於其他形式,均可以轉換
線性規劃解的形式,根據約束的不同,該問題可能有唯一解、一條線、一個平面,無解(Infeasible)或者無界(Unbounded)
最後兩種情況都可以認爲無界,一個可行解爲空,一個可行解不可達
線性規劃主要考慮m<n的情況 ,即行滿秩,此時可能有多個解,其他都可能唯一解或者無界。
對偶問題
由於線性的關係,該問題滿足LICQ時,局部最優解就是全局最優解,因此原始問題和對偶問題的解一致。拉格朗日函數爲
1.對於該KKT條件對應的最優解
(x∗,λ∗,s∗) 有如下一個性質,即目標函數轉換爲cTx∗=(ATλ∗+s∗)x∗=(Ax∗)Tλ∗=bTλ∗ bTλ ,即對偶問題的目標
2.可以證明滿足該KKT條件的可行解,就是全局最優解。
對偶問題
性質
原始問題和對偶問題是對稱的,並且滿足強對偶條件,因此
- 如果原始或者對偶問題有解,則對應問題也有解
- 如果顏色或者對偶問題是無界的,則對應問題則爲無解。
線性規劃求解
概念
在介紹算法之前,有一個比較重要的概念(基矩陣和基礎可行解)介紹一下,在後續的介紹中會頻繁應用到。
基礎可行點,需要滿足如下條件
1. 指示集合B 包含m個下標
2. 當i∉B⇒xi=0
3. 基矩陣B定義爲B=[Ai],i∈B
簡單示意如下圖
單純形算法
單純形算法的基本策略遍歷線性規劃問題所有的基礎可行解,直到收斂到一個基礎最優解上,並且有定理證明當線性規劃有界並且有可行解時,肯定會收斂到基礎最優解上
定義
單純形算法需要解決如下幾個關鍵點
- 如何選取初始點,主要有兩類算法可以求解得到,都是轉換線性規劃本身進行求解,一是PhaseI 轉換爲
二是PhaseII 轉換爲min eTz, s.t. Ax+Ez=b; (x,z)≥0 min cTx s.t Ax+z=b,x≥0, 0≥z≥0
2.如何有效表示xN - 如何計算離開下標
詳細的單純形算法參考各類參考文獻。
內點法
對於小規模線性規劃問題,單純形算法能很好的解決,但是大規模問題效率比較低,而內點法能夠很好的解決該問題。
內點法每一步驟計算比較昂貴但是能夠有效的解決最優解。
內點法的主要思路,逐漸尋找滿足KKT條件並且最小化某價值函數的解,根據KKT條件有
轉換爲矩陣表示爲
問題轉換爲求解該方程,根據之前的學習,此時通過牛頓法進行求解,一般情況下還需要一個解的度量函數,一般定義爲
根據牛頓方法有
根據該方程求解搜索方向,一般情況下還要滿足非負約束
但是大多數內點法不會直接求解上述方程,一般會進行一定縮放,即
因此一個相對完整的原始對偶內點法步驟爲
中心路徑
中心路徑在內點法中是一個非常重要的概念,因爲每次迭代點都是中心路徑的點,中心路徑的選取非常關鍵,參數選擇太大或者太小都會影響計算複雜度。
某個點屬於中心路徑,即
此時只要逐漸改變
總結
通過本小節的學習,能夠瞭解到
1. 線性規劃的基本形式已經原始問題和對偶問題的關係
2. 單純形和內點法如何求解線性規劃問題
詳細的單純形算法網上介紹的非常多,經典的可以參考wiki