两阶段法(two-phase method)是寻找
线性规划问题初始
基可行解的一种方法,把增加
人工变量的线性规划问题分为
两个阶段去求解。
大M法与两阶段法都是在原问题缺少初始
可行基的情况下利用引人人工变量构造人工基,以达到运用单纯形法求解原问题的目的。用
大M法处理人工变量,手工计算求解时不会碰到麻烦。但用电子
计算机求解时,对M就只能在计算机内输出一个机器最大字长的数字。如果
线性规划问题中的aij、bi或cj等
参数值与这个代表M的数比较接近,或远远小于这个数字,由
计算机计算时有可能使计算结果发生错误,从而使求解的最终结果与原问题真正的最优解不一致。为了克服这个困难,可以对添加人工变量后的线性规划问题分为
两个阶段来计算,而避免M的使用,这个方法称为两阶段法。
在
约束条件中加入人工变量y=(y1,y2,···,ym)T变为 ,人工变量设为xs也可。
第一阶段的就是求解这个
目标函数是只包含人工变量的
辅助问题。首先构造一个辅助的人工目标函数:令目标函数中其他变量的系数取零,人工变量的系数取某个正的常数(一般取1),在保持原问题约束不变的条件下求这个目标函数
极小化的解:
因为人工变量是虚拟的,在最优时它不应该有取值。如果原问题有
可行解,那么人工变量必定取零yi=0(i=1, 2, ···,m),那么辅助问题的
最优值一定为z=0。设
最优解目标函数值为z,第一阶段求解的结果有三种可能的情况:
(1)如果第一阶段求解结果为z≠0,说明最优解的
基变量中含有非零的人工变量,从而表明原问题无可行解,不必进行第二阶段,计算终止。
(3)如果第一阶段求解结果z=0,如果辅助问题的最优基变量中仍有为0的人工变量,这表明原问题有退化的情况,在辅助问题的最优的
单纯形表中有:
(i)若arj全为0,则人工变量所在行中
有原变量(现在是非基变量)下的元素都是0,这表明原问题的
约束方程中有多余的,将其去掉,转入第二阶段。
当第一阶段求解结果表明问题有可行解时,第二阶段是在原问题中去除人工变量,并由第一阶段得到的最优解出发,继续寻找原问题的最优解。即在第一阶段的最优单纯形表中去掉人工变量所在的行列,将
价值系数改换成原问题的价值系数,进一步迭代,求解原问题的最优解或者无穷多最优解。
鉴于两阶段法求解相对抽象复杂,这里我们用一个实例演示其求解过程。为了方便读者进行两阶段法和
大M法对比,这里我们采用和
大M法相同的算例进行演示。
这里我们加入了两个松弛变量 和 ,但是此时仍然没有一个m*m的
线性无关矩阵作为初始基底(此时m=3),于是我们看到 代表的列可以作为基底 ,于是我们再加入两个变量 和 ,从而能够构成一个基阵。这两个变量 和 即为人工变量。
在第一阶段的最终表中,去掉人工变量,将目标函数的系数换成原问题的目标函数系数,作为第二阶段计算初始表,用
单纯形法继续计算。