The Simplex Method
Optimality conditions
Definition
假设是polyhedron 的一个元素. 假设满足, 是一个正标量, 那么我们称为可行方向(feasible direction)
我们假设是线性规划的basic feasible solution, 设是basic variable的索引, 设basic matrix . 特别的, 对于nonbasic variable有, 对于basic variables有, 满足
我们考虑通过一个nonbasic variable(), 并将其数值增加到positive value , 同时保持其他的nonbasic variable仍为, 从而将. 此时从代数上而言, 而其他nonbasic variable对应的, 而basic variable对应的变量.
由于我们只关注feasible solution, 因此我们希望有, 由于可行解, 因此有. 其中,
由于是可逆的, 因此有
其中被称为第个基准方向(basic direction). 这个条件下我们一定能满足active constrains. 对于这个约束, nonbasic只有上升了, 其他的都还是, 因此只有basic variable是可能有negative的.
而对于basic variable, 有两种可能:
- basic feasible solution如果不是degeneracy的, 那么足够小时, 是一个feasible direction
- basic feasible solution如果是degeneracy的, 那么会被引向infeasible solution
现在研究在方向上移动对cost function的影响. 假设是第个basic direction, 那么由给出, 其中
Definition
- 假设basic solution , basic matrix , 是basic variable的成本向量. 对于每一个都有, 定义为缩减成本(reduced cost)
- 若basic matrix 满足 1. . 2. , 那么我们称为最优的
Theorem
假设basic feasible solution 对应的basic matrix , 有对应的reduced cost , 那么
- , 那么是optimal的
- 若是optimal且没有degeneracy的, 那么
Implementations of the simplex method
字典序
按照顺序对vector逐元素比较.
e.g. 因为第一个元素
Bland Rule
enter basis后是目标值减小的variable中, 选择指标最小的enter
exit basis后保持feasible的variable中, 选择指标最小的exit
实现
对于maximize的问题, 我们首先需要转换成minimize的问题, 然后再求解
求解流程:
我们一般将non basic variable组成一个basis, 因为他们是Identity Matrix(见initial tableau)
- 将一般形式的LP转换成standard form
- 写出一个initial simplex tableau
- 选择一个basic variable, 作为enter basis(Bland Rule) 选取方法: 找到negative的, 并选择最小(最负)的那一个:
- 选择一个nonbasic variable, 作为exit basis
选取方法:
- 如果这一列都是negative or zero, 那么停止, 最值无界
- 找到比值最小的一个:
- 注意, 如果有比值相等的情况, 使用字典序找到最小的那一个.
- 消元(或者说叫做转轴)
- 重复上述操作, 直到没有negative为止.
e.g.
Solution:
Turn into standard form:
then we can generate the simplex initial tableau:
Tip
我们选择这个是因为:
- 选择, 即在中选择了最小的那个
- 选择, 即中选择了最小的
- 使用消元法进行消元
- 注意更新了左侧的basis, 从变成了
after update:
Tip
同理, 因为这里只有一个是negative, 因此只能是
然后, 我们选择, 即中选择最小的
消元, 更新左侧的basis, 从变成了
after update:
Tip
当中不存在任何的negative的时候, 我们认为求解已经结束.
右侧的数字和左侧的basis对应, 就是最后的解. 这个时候, 下方的的应该正好和左侧的basis对的上, 否则就是一个degeneracy的solution.