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