在primal simplex算法中,每轮迭代都需要选择most candidate的方向并移动到邻近的顶点上,那么,用什么来评估方向的好坏呢?我们知道,选择一个方向走下去对目标值的改善程度是由方向和步长决定的,对于标准型的线性规划问题而言,使目标值下降的方向是reduced cost $d_j <= 0$的那些非基变量,理论上来说,任意一个满足$d_j <= 0$条件的非基变量都可以作为入基,但是我们不是那么随便的人,肯定不会随便选,那要如何选择呢?
用一高一矮两个人来比喻,同样是走100步,你觉得是高的人走的远还是矮的人走得远呢(莫杠,正常场景)?同理,我这里当然是选择单位步长下能走更远的非基变量,当然,步长也是决定你能走多远的重要因素,这里暂且不论,就考虑最基本的dantzig的选基算法,即
选入基的法则非常简单对不对,那么假设你处在某一次迭代中,想要计算所有非基变量的reduced cost $d_j, j\in N$,难道需要用reduced cost的计算公式每次计算?
显然大家不会那么傻,就跟revised simplex的$B^{-1}$更新一样,两次迭代间的reduced cost也是有关联关系的,接下来就给大家推导一下,不感兴趣的可以直接跳到结论了哈。
对于一个genenal形式的LP问题:
通过增加结构变量的形式可以转成一般形式的LP问题:
注意到当前的$x$包含原始变量和结构变量,记为$x_c$和$x_r$。
假设primal feasible,由对偶问题性质$Ay+s=c$,那么对于任意迭代时刻,都有如下条件满足
其中$s_B, s_N$分别为对应基矩阵和非基矩阵的reduced costs。