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, 有两种可能:

  1. basic feasible solution如果不是degeneracy的, 那么足够小时, 是一个feasible direction
  2. basic feasible solution如果是degeneracy的, 那么会被引向infeasible solution

现在研究在方向上移动对cost function的影响. 假设是第个basic direction, 那么给出, 其中

Definition

  1. 假设basic solution , basic matrix , 是basic variable的成本向量. 对于每一个都有, 定义为缩减成本(reduced cost)
  2. 若basic matrix 满足 1. . 2. , 那么我们称为最优的

Theorem

假设basic feasible solution 对应的basic matrix , 有对应的reduced cost , 那么

  1. , 那么是optimal的
  2. 是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)

  1. 将一般形式的LP转换成standard form
  2. 写出一个initial simplex tableau
  3. 选择一个basic variable, 作为enter basis(Bland Rule) 选取方法: 找到negative的, 并选择最小(最负)的那一个:
  4. 选择一个nonbasic variable, 作为exit basis 选取方法:
    • 如果这一列都是negative or zero, 那么停止, 最值无界
    • 找到比值最小的一个:
    • 注意, 如果有比值相等的情况, 使用字典序找到最小的那一个.
  5. 消元(或者说叫做转轴)
  6. 重复上述操作, 直到没有negative为止.

e.g.

Solution:

Turn into standard form:

then we can generate the simplex initial tableau:

Tip

我们选择这个是因为:

  1. 选择, 即在中选择了最小的那个
  2. 选择, 即中选择了最小的
  3. 使用消元法进行消元
  4. 注意更新了左侧的basis, 从变成了

after update:

Tip

同理, 因为这里只有一个是negative, 因此只能是

然后, 我们选择, 即中选择最小的

消元, 更新左侧的basis, 从变成了

after update:

Tip

中不存在任何的negative的时候, 我们认为求解已经结束.

右侧的数字和左侧的basis对应, 就是最后的解. 这个时候, 下方的应该正好和左侧的basis对的上, 否则就是一个degeneracy的solution.

Convergence and Degeneracy