-
1 知识内容
-
2 知识点检测
-
3 Python实现两阶段法
引入人工变量——大M法和两阶段法
我们已经注意到,只有当存在初始的标准基时,才能使单纯形法来求解线性规划问题。如果欲求解的线性规划不存在标准基,就应当想办法变换出一个标准基。不过要注意的是,在变换的过程中,
第一,应保持约束方程组的解集不变,即原问题的可行域不变,也就是说应当进行同解变换。
第二,在获得标准基的同时,应使约束方程组右边的资源向量保持非负,这样才能使用单纯形法求解。
一般来说,第一点要求是容易办到的,例如利用线性代数中关于行的初等变换就可以办到。然而,要同时做到这两点要求,常规的方法往往顾此失彼,很难满足要求。因此,应研究有效的办法来解决这个问题。下面介绍两种常见的方法。
一、大M法
大M法的基本思想是,如果将原问题标准化后的约束方程中仍无标准基,则可以在约束方程中添加人工变量,使之构成含有标准基的新问题,然后就可以用单纯形法求解新问题。显然,在新问题的某个解中,如果人工变量对应的分量是正数,则该解必不是原问题的可行解。因此,欲从新问题的解得到原问题的解,必须使新问题的可行解中的人工变量为零,而要达到这一点只须使人工变量全部成为非基变量即可。为达此目的,对极大化问题,可在原目标函数中加入绝对值充分大的负系数人工变量。这样,当对新问题用单纯形法求解时,在新目标函数的值逐步增大的迭代过程中,人工变量就会逐步退出基。
设原问题为
(1-17)
引入人工变量
可得含有标准基的大M法新问题:
(1-18)
其中,M是充分大的正数,I是m阶单位矩阵。
下面讨论新旧问题之间的关系。
首先要指出,新问题必有可行解,例如
就是新问题的一个可行解。于是,对新问题求解,其结果有两种可能:
1.新问题无最优解
此时可断言原问题无最优解。这是因为,此种条件下,意味着新问题存在可行点列(Xk,Yk),使得
且
注意到M为充分大正数,故上式表明必有
即Xk是原问题的可行点列,且其对应的目标函数值有
表明原问题没有最优解。
2.新问题有最优解
设为
则有:
(1)若
是原问题的一个可行解。现任取原问题的一个可行解X,显然(X,0)是新问题的可行解,且其对应的目标函数值为
于是有
表明,
是原问题的最优解。
(2)若存在某个
,则原问题没有可行解。因为此时新问题的最优值为
由
,M为充分大的正数,上式显然是不可能的。所以,原问题没有可行解。
例1.8 用大M法求解线性规划
解 原问题标准化为
引入两个人工变量
,原问题化为大M法问题:
此时,已拥有一个标准基,可用单纯形法求解,其计算过程及结果见表1-12。
在表1-12中,人工变量
全部出基,故原问题的最优解及最优值为
表1-12
cj
3
-1
-1
0
0
-M
-M
初
始
表
1
x1
x2
x3
x4
x5
y2
y3
1
-2
1
1
0
0
0
11
-4
1
2
0
-1
1
0
3
-2
0
(1)
0
0
0
1
1
-6M+3
M-1
3M-1
0
-M
0
0
4M
迭代表
2
3
-2
0
1
0
0
-1
10
0
(1)
0
0
-1
1
-2
1
-2
0
1
0
0
0
1
0
1
M-1
0
0
-M
0
1-3M
M+1
迭代表
3
(3)
0
0
1
-2
2
-5
12
0
1
0
0
-1
1
-2
1
-2
0
1
0
0
0
1
1
1
0
0
0
-1
1-M
-M-1
2
最优表
1
0
0
1/3
-2/3
2/3
-5/3
4
0
1
0
0
-1
1
-2
1
0
0
1
2/3
-4/3
4/3
-7/3
9
0
0
0
-1/3
-1/3
1/3-M
2/3-M
-2
二、两阶段单纯形法
两阶段单纯形法也是一种人工变量法,它的算法可分为两个阶段:
第一阶段,引入人工变量,构造一个具有标准基的新线性规划,求解这个新线性规划,其结果将有两种可能:或者将原问题的约束方程组化成具有标准基的形式,或者提供信息,表明原问题有可行解。
第二阶段,利用第一阶段所得的标准基,对原问题求解。
1.人工变量的引入
设原问题为
引入人工变量
,构造新规划
其中,
。
易知,新规划(LP)1,具有以下3个特点:
(1)(LP)1存在可行解,例如取Y=b,X=0,就得到一个可行解。
(2)(LP)1必有最优解。这是因为,由于(LP)1有可行解,且yi非负,故(LP)1的最大值上有界,不会超过零。
(3)(LP)1存在一个标准基。
基于以上几点,可以用单纯形法求解(LP)1,设其最优单纯形法为表1-13。
表1-13中,
的系数。
显然,所有的检验数
是最优值,故必有
若
,则可断言原问题(LP)1没有可行解。如果(LP)1有行解
,则有
那么,
则是(LP)1的一个可行解,且对应的目标值为
这与
是最优值相矛盾。
表1-13
b
例1.9 求解
解 将原问题标准化,再引入人工变量y,构造新规划:
其求解过程及结果见表1-14。
从表1-14可以看出,
,表明原问题无可行解。事实上,容易验证,当
均非负时,原问题的两个不等式约束是互不相容的。
若
注意目标函数的表达式,可知必有
全为零,可分两种情形讨论:
(1)人工变量
全部是非基变量。不失一般性,可设
是基变量,则表1-13等价于如下方程组:
对线性规划的可行域而言,单纯形法实质上是进行同解变换。因而上述方程组与原问题(LP)1的约束方程组的解集相同,且由于已有一个标准基,故可用它取代原问题(LP)1的约束方程组,再利用第四节中的单纯形法求解。
(2)某个人工变量ys还是基变量。这时,显然有
表1-13中第s行等价于如下方程:
(1-19)
对(1-19)式可分两种情形进行讨论:
1)(1-19)式中所有的
均为零。注意到所有的
都为零。(1-19)式实际上是恒等式
0=0
说明表1-13的第s行是多余的、无意义的,应从表1-13中删除掉,约束方程减为m-1个,最优表中出现一个m-1阶的单位矩阵,正好可作为初始标准基。
2)(1-19)式中的
不全为零,例如某个
非零。此式,可用
为主元,进行换基迭代,变量
入基,而人工变量
出基。由于有
此时将产生一个退化的基可行解。
表1-14
cj
-1
0
0
0
0
初
始
表
y
x1
x2
x3
x4
0
1
(1)
1
0
1
1
2
3
0
-1
6
0
2
3
0
-1
6
0
1
1
1
0
1
1
-1
0
-3
-1
3
0
-1
0
-3
-1
3
2.两阶段单纯形法的步骤
(1)第一阶段:首先将原问题标准化,得到(LP)1形式,再引入必要的人工变量
,构造新的线性规划(LP)1,并用单纯形法解新规划(LP)1,得到形如表(1-13)的最优单纯形表。若该表中的
,则表明原问题没有可行解,应停止计算;若
,表明已将原问题的约束方程组变换成了含有标准基的同解方程组,转(2)。
(2)第二阶段:用第一阶段所得的含标准基的约束方程组取代原问题的约束方程组,再用单纯形法求解。
例1.10 试用两阶段单纯形法求解
解 第一阶段:由于原问题只有两个约束,且系数矩阵又有一个单位向量,故只需再引入一个人工变量y就可以获得单位矩阵,构造新规划如下:
本阶段的计算过程及结果见表1-15,在表1-15中,
,人工变量全部为非基变量,原问题已得到标准基
。
表1-15
cj
-1
0
0
0
初
始
表
y
x1
x2
x3
b
1
(2)
1
0
4
0
1.5
1
1
7
0
2
1
0
4
最优表
0.5
1
0.5
0
2
-0.75
0
0.25
1
4
-1
0
0
0
0
第二阶段:去掉第一阶段结果中的人工变量y,剩余部分用以替换原问题的约束方程组,则可得原问题的等价形式为:
用单纯形法求解,其过程及结果见表1-16。从该表中,可以知道,原问题的最优解为
表1-16
cj
-1
1
-3
初
始
表
x1
x2
x3
b
1
(0.5)
0
2
0
0.25
1
4
0
2.25
0
14
最优表
2
1
0
4
-0.5
0
1
3
-4.5
0
0
5
例1.11 求解线性规划
注意前两个约束实际是同一约束,故其中之一是多余约束,试观察多余约束是如何在迭代计算过程中被除去的。
解: 引入人工变量
,构造新规划为
![]()
其计算过程及结果见表1-17。在表1-17中,
,且行中,
的系数以及
全为零,故原问题的约束方程组等价于:
![]()
与例1.10第一阶段的最后结果完全相同。转入第二阶段后,其过程与结果也应与表1-16相同。
表1-17
cj
-1
-1
0
0
0
初
始
表
y1
y1
x1
x2
x3
b
1
0
(4)
2
0
8
0
1
2
1
0
4
0
0
1.5
1
1
7
0
0
6
3
0
12
0.25
0
1
0.5
0
2
-0.5
1
0
0
0
0
-0.375
0
0
0.25
1
4
-1.5
0
0
0
0
0
















