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