20. 敏感性分析(一)局部敏感性分析


考慮標准型問題

\[\begin{align*} \min\quad c^Tx& \\ \text{s.t.}\quad Ax&=b \\ x&\geq 0, \end{align*} \]

及它的對偶問題

\[\begin{align*} \min\quad p^Tb& \\ \text{s.t.}\quad p^TA&=c^T. \end{align*} \]

在這一部分,我們研究最優值和最優解與\(A\), \(b\)以及\(c\)的關系。

局部敏感性分析

假設已知最優基矩陣\(B\)以及對應的最優解\(x^*\),然后我們考慮改變\(A\), \(b\)以及\(c\),或者加入新的約束,又或者添加新的變量。首先觀察在何種情況下現在的基矩陣維持最優性。如果它不再是最優基矩陣,考慮在原始解的基礎上如何得到新的最優解。

已知\(B\)是原問題的最優基矩陣,那么下面的約束滿足:

\[\begin{align*} B^{-1}b\geq &0,\quad \text{(可行性)} \\ c^T-c^T_BB^{-1}A \geq &0^T,\ \text{(最優性)} \end{align*} \]

當問題變化時,我們考慮這兩個約束會如何變化(為什么是這兩個約束呢,可回看單純形法(一))。

添加一個新變量

假設引入新變量\(x_{n+1}\),以及相對應的列\(A_{n+1}\),得到新問題

\[\begin{align*} \min\quad c^Tx+c_{n+1}x_{n+1}& \\ \text{s.t.}\quad Ax+A_{n+1}x_{n+1}&=b \\ x\geq 0,\,x\geq 0.\ \ & \end{align*} \]

然后我們確定目前的基矩陣\(B\)是否仍然是最優的。

注意,\((x,x_{n+1})=(x^*,0)\) 是新問題的一個以\(B\)為基矩陣的基本可行解,因此我們僅需要考慮\(B\)是否仍然滿足最優性,也即是否滿足(由於\(B\)是原問題的最優基矩陣,因此僅需考慮變量\(x_{n+1}\)的判斷數是否非負)

\[\bar c_{n+1}=c_{n+1}-c^T_BB^{-1}A_{n+1}\geq 0. \]

若上述條件滿足,則\((x^*,0)\)就是新問題的一個最優解;若不滿足,則在單純形表中加以列,以基矩陣為\(B\)開始應用原始單純形法,最終得到新問題的最優解。一般來說這樣的求解方式比直接求解新問題快。

添加新的不等式約束

加入新約束\(a^T_{m+1}x\geq b_{m+1}\).若原問題的最優解\(x^*\)滿足這個新約束,那么\(x^*\)也是這個新問題的最優解。如果新約束不滿足,我們引入一個非負的松弛變量\(x_{n+1}\),改寫新約束為

\[a^T_{m+1}x-x_{n+1}=b_{m+1}. \]

那么將得到一個標准形式的問題,其中矩陣\(A\)變為

\[\begin{bmatrix} A &0\\ a^T_{m+1} &-1 \end{bmatrix}. \]

\(B\)為原問題的最優解,我們利用原問題的基本解以及變量\(x_{n+1}\)構造新問題的基矩陣\(\overline B\):

\[\overline B= \begin{bmatrix} B &0\\ a^T &-1 \end{bmatrix}. \]

其中\(a^T\)包含\(a^T_{m+1}\)中原基本解對應列的元素。注意,這個新矩陣的行列式值為\(-|B|\),也即非0,說明這個新矩陣可逆。\(\overline B\)所對應的基本解為\((x^*,a^T_{m+1}x^*-b_{m+1})\),但注意這個解是不可行的,因為我們假設\(x^*\)不滿足新約束。另外利用分塊矩陣求逆公式可得

\[\overline B^{-1}= \begin{bmatrix} B^{-1} &0\\ a^TB^{-1} &-1 \end{bmatrix}. \]

\(c_B\)為原問題中基本變量所對應的m維損失向量,那么新基矩陣\(\overline B\)所對應的判斷數為:

\[\begin{align*} &[c^T\ 0]-[c^T_B\ 0]\begin{bmatrix} B^{-1} &0\\ a^TB^{-1} &-1 \end{bmatrix}. \begin{bmatrix} A &0\\ a^T_{m+1} &-1 \end{bmatrix} \\ =&[c^T-c^T_BB^{-1}A\ 0]. \end{align*} \]

由於\(B\)是原問題的最優基矩陣,因此上式非負。此時,我們可以使用對偶單純形法,從基矩陣是\(\overline B\)開始。

添加新的等式約束

假設添加一個等式約束\(a^T_{m+1}x=b_{m+1}\),並且假設新的約束使得原問題最優解\(x^*\)不再可行。考慮新問題的對偶問題:

\[\begin{align*} \max\quad &p^Tb+p_{m+1}b_{m+1} \\ \text{s.t.}\quad &[p^T\, p_{m+1}]\begin{bmatrix} A\\ a^T_{m+1}\leq c^T \end{bmatrix} \end{align*}, \]

其中\(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\)的變化而變化。因此,我們僅需要考慮可行性條件是否滿足,也即

\[B^{-1}(b+\delta e_i)\geq 0, \]

是否仍然成立。

\(g=(\beta_{1i},\beta_{2i},\cdots,\beta_{mi})\)\(B^{-1}\)的第i列。那么上面的條件變為

\[x_B+\delta g\geq 0, \]

或者

\[x_{B(j)}+\delta\beta_{ji}\geq 0,\quad j=1,\cdots,m. \]

等價的有

\[\max_{\{j\mid\beta_{ji}>0\}}\left(-\frac{x_{B(j)}}{\beta_{ji}}\right)\leq \delta\leq \min_{\{j\mid\beta_{ji}<0\}}\left(-\frac{x_{B(j)}}{\beta_{ji}}\right). \]

這說明當\(\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^T_BB^{-1}A\leq c^T. \]

如果\(c_j\)相對應的\(x_j\)是一個非基本變量,那么\(c_B\)並未改變,因此上面約束中變化的僅為\(x_j\)的判斷數,也即我們想要

\[c^T_BB^{-1}A\leq c_j+\delta , \]

或者

\[\delta\geq -\bar c_j. \]

如果上述條件滿足,那么基矩陣\(B\)維持最優性;反之,我們可以從當前解開始應用原始單純形法得到新問題最優解。

如果\(c_j\)是第\(l\)個基本變量多對應的系數,也即\(j=B(l)\),那么此時\(c_B\)變為了\(c_B+\delta e_l\),所有的最優性條件都會被影響。新問題的最優性條件就變成了

\[(c_B+\delta e_l)^TB^{-1}A_j\leq c_i,\quad \forall i\not= j, \]

注:\(i\not= j\)是因為\(x_j\)為基本變量,它的判斷數為0並不需要判斷。

上式等價於

\[\delta q_{li}\leq \bar c_i,\quad \forall i\not= j, \]

其中\(q_{li}\)\(B^{-1}A_i\)的第\(l\)個元素。這個不等式給出保持基矩陣最優的\(\delta\)的范圍。

\(A\)中一非基本列變化

假設矩陣\(A\)中第\(j\)\(A_j\)中的元素\(a_{ij}\)變為\(a_{ij}+\delta\)。我們仍然想要得到能夠使基矩陣最優性保持的\(\delta\)的變化范圍。

由於列\(A_j\)不是基本列,因此基矩陣\(B\)無變化,這說明原始問題的可行性並未受影響。另外,僅有第\(j\)列的判斷數變化了,若最優性維持需要滿足

\[c_j-p^T(A_j+\delta e_i)\geq 0, \]

或者

\[\bar c_j-\delta p_i\geq 0, \]

其中\(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\),有

\[c^Tx^*(\delta) =c^Tx^*-\delta x^*_jp_i+O(\delta ^2). \]

參考文獻: Introduction to Linear Optimization by Dimitris Bertsimas & John N. Tsitsiklis.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM