考慮標准型問題
及它的對偶問題
在這一部分,我們研究最優值和最優解與\(A\), \(b\)以及\(c\)的關系。
局部敏感性分析
假設已知最優基矩陣\(B\)以及對應的最優解\(x^*\),然后我們考慮改變\(A\), \(b\)以及\(c\),或者加入新的約束,又或者添加新的變量。首先觀察在何種情況下現在的基矩陣維持最優性。如果它不再是最優基矩陣,考慮在原始解的基礎上如何得到新的最優解。
已知\(B\)是原問題的最優基矩陣,那么下面的約束滿足:
當問題變化時,我們考慮這兩個約束會如何變化(為什么是這兩個約束呢,可回看單純形法(一))。
添加一個新變量
假設引入新變量\(x_{n+1}\),以及相對應的列\(A_{n+1}\),得到新問題
然后我們確定目前的基矩陣\(B\)是否仍然是最優的。
注意,\((x,x_{n+1})=(x^*,0)\) 是新問題的一個以\(B\)為基矩陣的基本可行解,因此我們僅需要考慮\(B\)是否仍然滿足最優性,也即是否滿足(由於\(B\)是原問題的最優基矩陣,因此僅需考慮變量\(x_{n+1}\)的判斷數是否非負)
若上述條件滿足,則\((x^*,0)\)就是新問題的一個最優解;若不滿足,則在單純形表中加以列,以基矩陣為\(B\)開始應用原始單純形法,最終得到新問題的最優解。一般來說這樣的求解方式比直接求解新問題快。
添加新的不等式約束
加入新約束\(a^T_{m+1}x\geq b_{m+1}\).若原問題的最優解\(x^*\)滿足這個新約束,那么\(x^*\)也是這個新問題的最優解。如果新約束不滿足,我們引入一個非負的松弛變量\(x_{n+1}\),改寫新約束為
那么將得到一個標准形式的問題,其中矩陣\(A\)變為
記\(B\)為原問題的最優解,我們利用原問題的基本解以及變量\(x_{n+1}\)構造新問題的基矩陣\(\overline B\):
其中\(a^T\)包含\(a^T_{m+1}\)中原基本解對應列的元素。注意,這個新矩陣的行列式值為\(-|B|\),也即非0,說明這個新矩陣可逆。\(\overline B\)所對應的基本解為\((x^*,a^T_{m+1}x^*-b_{m+1})\),但注意這個解是不可行的,因為我們假設\(x^*\)不滿足新約束。另外利用分塊矩陣求逆公式可得
記\(c_B\)為原問題中基本變量所對應的m維損失向量,那么新基矩陣\(\overline B\)所對應的判斷數為:
由於\(B\)是原問題的最優基矩陣,因此上式非負。此時,我們可以使用對偶單純形法,從基矩陣是\(\overline B\)開始。
添加新的等式約束
假設添加一個等式約束\(a^T_{m+1}x=b_{m+1}\),並且假設新的約束使得原問題最優解\(x^*\)不再可行。考慮新問題的對偶問題:
其中\(p_{m+1}\)是新約束所對應的對偶變量。令\(p^*\)是原對偶問題的最優基本可行解。那么\((p^*,0)\)是新對偶問題的一個可行解。記\(p\)的維度為m。由於\(p^*\)是原對偶問題的一個基本可行解,那么約束\((p^*)^TA\leq c^T\)中存在m個約束有效。但是,我們並不知道\((p^*,0)\)是否會使得新對偶問題中\(m+1\)個約束有效,也就是說我們並不能確定\((p^*,0)\)是否是一個基本解。因此這並不能為我們使用對偶單純形法提供初始解。
下面,不妨假設\(a_{m+1}^Tx^*>b_{m+1}\),然后引入一個輔助問題:
其中\(M\)是一個很大的正常數。這個輔助問題的基本變量選取為原問題基本變量再加上\(x_{n+1}\)。那么這就與上一節的內容類似,不同的是上一節\(\overline B\)是對偶可行基矩陣,而這里是原問題可行基矩陣(總可以通過改變變量\(x_{n+1}\)的值使其滿足)。因此,我們可以使用原始單純形法求得這個輔助問題的最優解。
如果加入新約束的問題可行且\(M\)足夠大的話,如果有輔助問題的最優解滿足\(x_{n+1}=0\),那么約束\(a^T_{m+1}x=b_{m+1}\)滿足並且我們得到了加入約束后的新問題的最優解。
改變\(b\)
假設\(b\)中的元素\(b_i\)變為\(b_i+\delta\)。也就相當於是\(b\)變為了\(b+\delta e_i\),其中\(e_i\)是第i個元素為1其余元素為0的列向量。我們這里想要知道\(\delta\)在什么范圍內變化不會改變基矩陣的最優性。注意,最優性條件並不會因為\(b\)的變化而變化。因此,我們僅需要考慮可行性條件是否滿足,也即
是否仍然成立。
令\(g=(\beta_{1i},\beta_{2i},\cdots,\beta_{mi})\)為\(B^{-1}\)的第i列。那么上面的條件變為
或者
等價的有
這說明當\(\delta\)在這個范圍內時,最優值為\(c^T_BB^{-1}(b+\delta e_i)=p^Tb+\delta p_i\),其中\(p^T=c^T_BB^{-1}\)是對偶問題在基\(B\)下的最優解。
如果\(\delta\)出了這個范圍,則說明目前的解滿足原問題最優性(也等價於對偶可行性),但是不滿足原始可行性,那么就可以使用對偶單純形法從這個解開始求得新問題的最優解。
改變\(c\)
假設\(c_j\)變為了\(c_j+\delta\),並未影響原始可行性條件。因此,需要判斷下面的最優性條件是否仍然滿足:
如果\(c_j\)相對應的\(x_j\)是一個非基本變量,那么\(c_B\)並未改變,因此上面約束中變化的僅為\(x_j\)的判斷數,也即我們想要
或者
如果上述條件滿足,那么基矩陣\(B\)維持最優性;反之,我們可以從當前解開始應用原始單純形法得到新問題最優解。
如果\(c_j\)是第\(l\)個基本變量多對應的系數,也即\(j=B(l)\),那么此時\(c_B\)變為了\(c_B+\delta e_l\),所有的最優性條件都會被影響。新問題的最優性條件就變成了
注:\(i\not= j\)是因為\(x_j\)為基本變量,它的判斷數為0並不需要判斷。
上式等價於
其中\(q_{li}\)為\(B^{-1}A_i\)的第\(l\)個元素。這個不等式給出保持基矩陣最優的\(\delta\)的范圍。
\(A\)中一非基本列變化
假設矩陣\(A\)中第\(j\)列\(A_j\)中的元素\(a_{ij}\)變為\(a_{ij}+\delta\)。我們仍然想要得到能夠使基矩陣最優性保持的\(\delta\)的變化范圍。
由於列\(A_j\)不是基本列,因此基矩陣\(B\)無變化,這說明原始問題的可行性並未受影響。另外,僅有第\(j\)列的判斷數變化了,若最優性維持需要滿足
或者
其中\(p^T=c^T_BB^{-1}\)。若上述約束不滿足,則說明列\(A_j\)可以進入基矩陣,然后繼續使用單純形法即可。
\(A\)中一基本列變化
如果基本列\(A_j\)一個元素變化,則原問題的可行性和最優性都受到了變化。
假設基本列\(A_j\)變為\(A_j+\delta e_i\),其中\(e_i\)是第i個單位向量(第i個元素為1,其余全維0)。假設原問題和對偶問題分別有唯一的非退化最優解\(x^*\)和\(p\)。記\(x^*(\delta)\)為新問題的最優解。這里給出一個結論(過程稍有些復雜),對於很小的\(\delta\),有
參考文獻: Introduction to Linear Optimization by Dimitris Bertsimas & John N. Tsitsiklis.