第10讲 线性规划与单纯形法(关于检测数与退化的讨论)
对单纯形表中一些列的理解
主要注意的是,在如上图所示的单纯形表中, b b b列和填 a i , j a_{i,j} ai,j的列中本质上填的应该是 B − 1 b B^{-1}b B−1b和 B − 1 A B^{-1}A B−1A,只是在之前的情况下中 B B B是单位矩阵。
对检测数的讨论
检验数的计算方法为 σ i = c i − c B B − 1 p i = c i − z i \sigma_{i}=c_{i}-c_{B} B^{-1} p_{i}=c_{i}-z_{i} σi=ci−cBB−1pi=ci−zi。而对于其他教材可能将 σ i \sigma_{i} σi定义为 σ i \sigma_{i} σi = z i − c i =z_{i}-c_{i} =zi−ci,但其本质上是一样的,只是判断 σ i \sigma_{i} σi符号和大小时恰好相反。同时如果要求解的最优化问题是对目标函数求 m i n min min,也只需要在判断 σ i \sigma_{i} σi时,用符号和大小相反的规则即可。简要来说取得最优解时对检验数的正负性要求如下表所示:
m a x Z maxZ maxZ | m i n Z minZ minZ | |
---|---|---|
c i − z i c_{i}-z_{i} ci−zi | ≤ 0 \le0 ≤0 | ≥ 0 \ge0 ≥0 |
z i − c i z_{i}-c_{i} zi−ci | ≥ 0 \ge0 ≥0 | ≤ 0 \le0 ≤0 |
如果在某轮迭代,有两个及以上相同的最大的检验数,则其给目标函数带来的收益相同,可以选择其对应的任意一个向量作为入基向量。
对 θ \theta θ的讨论
如果在某轮迭代,有两个及以上相同的最小的 θ \theta θ,出现“退化”情况,大部分情况下可以选择其对应的任意一个向量作为出基向量,但是有些时候会出现循环运算。
当标准型中 b i = 0 b_i=0 bi=0时,可能出现“退化”情况。
解决方法: 在相同的最小的 θ \theta θ中,选择下标最小的决策变量作为出基变量,就不会出现循环运算。
总结
在单纯形表中, b b b列和填 a i , j a_{i,j} ai,j的列中本质上填的应该是 B − 1 b B^{-1}b B−1b和 B − 1 A B^{-1}A B−1A。
对于不同检验数的定义和求 m i n min min或 m a x max max的不同,对检验数的判断法则也不同。
如果在某轮迭代,有两个及以上相同的最大的检验数,则其给目标函数带来的收益相同,可以选择其对应的任意一个向量作为入基向量。
如果在某轮迭代,有两个及以上相同的最小的 θ \theta θ,则选择下标最小的决策变量作为出基变量,就不会出现循环运算。