考虑标准型问题
及它的对偶问题
在这一部分,我们研究最优值和最优解与\(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.