大規模線性規划問題的求解極具挑戰性,在效率、存儲和數值穩定性等方面對算法都有很高的要求。但是這類問題常常非常稀疏且有特殊結構,能夠分解為若干個較小規模問題求解。
線性規划問題的目標函數和非負約束都可分離變量,即分成相互獨立的若干組。如果等式約束也可分離變量,則大規模問題就可分解為較小問題求解。
單純形法
注意:線性規划問題如果有最優解,必有一個頂點最優解。於是在可行域的頂點中尋找最優解就很自然了。可行域一般有無限多個點,但卻只有有限多個頂點(從n個不同元素中取出m個元素的組合數(用符號 C(n,m) 表示))。在頂點中尋找最優解就把尋找的范圍從可行域縮小到一個有限子集。
單純形法的基本思想:從一個頂點沿一條邊轉移到一個相鄰頂點,如此重復,直到抵達最優頂點。
單純形表
表1-表2
其中不僅提供約束系統一般解的顯式表示及相應的基本解,還給出了目標函數的一個簡化形式。具體地說,其右端列給出基本解:
x1=7/11,x2=14/11,x3=9/11,x4=x5=0
由於它滿足非負性條件,故為基本可行解,表格右下角數值的相反數35/11為其對應目標值。
表3
顯然,單純形表完全由基確定。
如果目標函數在該解處達到可行域上的最小值,則稱之為基本最優解,相應的表為最優(單純形)表。基本可行解和基本最優解分別為可行域的頂點和最優頂點。假若目標值在可行域上無下界,則稱線性規划問題無(下)界;此時也無最優解。
表格單純形法
高斯-若爾當消去法
該方法每步由兩個部分構成:在系數矩陣部分確定非0主元和對整個曾廣矩陣進行相應的消去運算。主元所在的列和行分別稱為主元列和主元行,其余的為非主元列和非主元行(不包含右端列)。每步確定主元后用初等變換將主元列化為主元位置為1的單位向量。
由全主元高斯-若爾當消去法得到的最終表稱為典式。顯然約束系統總存在典式。
定理:
系統有解的充分必要條件是r=m或r<m而右端列的非主元行分量全為0。若有解,則有無窮多解。→當r<m而右端列的非主元元素全為0時,可以踢除非主元行所代表的恆等式。在約束系統無解的情形,顯然原線性規划問題也無可行解,自然也無最優解。
系統等價
一個系統的解的全體稱為它的解集。如果幾個系統有相同的解集,則視其等價。
命題
- 用任一非0常數乘以任一方程所得到的系統與原系統等價
- 用任一常數乘以任一方程加到另一方程上去所得到的系統與原系統等價
上面的運算稱為系統的初等(行)變換,是系統最基本的等價變換。高斯-若爾當消去法通過一系列初等變換消去系統的某些項,將其化為易於求解的形式。
Dantzig-Wolfe分解算法
D-W分解法把約束條件分為兩個部分,將可行域表示定理用於其中一部分所對應問題的可行域,分別構造主問題和子問題。各次迭代的子問題僅目標函數不同,依其求解的結果判定已達成最優或者生成一個進基列,進而完成主問題的一次單純形迭代。原問題於是化成兩個較小問題的求解。如果原問題部分約束具可分離結構,相應的子問題還可進一步分解為更小的問題。
參考文獻:
潘平奇. 線性規划計算[M]. 科學出版社, 2012.