04第四章线性规划的求解法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章 线性规划的求解法
当线性规划的变量和约束条件比较多,而初始基本可行解又不知道时,是不容易用尝试的方法得到初始基本可行解的,何况有可能基本可行解根本就不存在。
在此时,大M 法可能是应付此类情况的一个行之有效的算法。
§4.1 大M 法的原理
当初始基本可行解不知道时,则1.,2.两个特点不能兼得,即下列两条件不能兼得: 1. 中心部位具有单位子块; 2. 右列元素非负;
这时可以先用容许的运算使由列为非负,然后在中心部位人为添加一个单位子块。
如下例所述: 例4.1
123
123123123min 32..323624,,0
z x x x s t
x x x x x x x x x =-+++-=-+-=-≥ (4.1.1)
列成表格:
上述第三张表中人工增加了两个变量45,x x ,称为人工变量,即把原来的约束条件改为:
12341235123
45..3236
24,,,,0
s t
x x x x x x x x x x x x x +-+=-
++=≥ (4.1.2) 式(4.1)和(4.2)的约束方程组并不同解,但(4.1)的解和(4.2)中450x x ==的解是相对应的。
只要找到以(4.2)为约束条件,且人工变量45,x x 均为自由变量的基本可行解,也就找到了(4.1)的基本可行解,于是,要设法迫使450x x ==。
以上途径通过修改(4.1)的目标函数来实现。
具体修改为:
12345min 32z x x x Mx Mx =-++++ (4.1.3)
其中M 为足够大的正数,然后以(4.2)为约束条件,求(4.3)的最小值。
只要45,x x 不为零,就一定为正数,于是目标函数的值就会增加它们和的M 倍。
由于M 为足够大的正数,所以只要原问题有基本可行解,就不会在45,x x 取正值时达到最小值。
本例中把表改为:
通过运算使它具备第三个特点:底行相应于单位子块位置的元素为0,然后再严格按照单纯形法的步骤求解:
由于M 为足够大的正数,所以-3-4M 应视为负数,故选它。
经过一次迭代:
再经过一次迭代:
这时表已经具备四个特点,且人工变量45,x x 亦已成为自由变量,所以从表上可直接读出(4.1)的最优解:1233,0,1x x x ===,且450x x ==。
把引进的自由变量略去,则最
优解为*(3,0,1)=T
x ,最优值为*
7z =-。
§4.2 两阶段法的原理
使用单纯形方法,需要给定一个初始基本可行解,以便从这个基本可行解出发,求改进的基本可行解,最终达到最优解。
下面介绍如何求出一个初始基本可行解,设标准形式的线性规划问题
min ..0
T z s t ==≥c x
Ax b x (4.2.1)
其中A 是m n ⨯矩阵,0≥b 。
若A 中含有m 阶单位矩阵,则初始基本可行解立即可得。
比如:[][],,m ==A I N B N ,那么
B N ⎡⎤⎡⎤==⎢⎥⎢⎥⎣⎦
⎣⎦x b x x 0
就是一个基本可行解。
若A 中不包含m 阶单位矩阵,则可从两阶段法入手,先求得一个初始基本可行解。
先引入人工变量的概念。
设A 中不包含m 阶单位矩阵,为了使约束方程的系数矩阵中含有m 阶单位矩阵,把每一个方程增加一个非负变量,令
0,0
a a +=≥≥Ax x
b x x (4.2.2)
即
(,)0,0
m a a ⎡⎤
=⎢⎥⎣⎦
≥≥x A I b
x x x (4.2.3) 显然
a ⎡⎤⎡⎤=⎢⎥⎢⎥⎣⎦
⎣⎦x 0x b 是(4.2.3)的一个基本可行解。
当然式子(4.2.3)已经不是原来的约束,构造(4.2.3)式的意义在于,若从(4.2.3)式的已知的基本可行解出发,能够求出一个使得0a =x 的基本可行解,那么也就可以得到(4.2.1)式的一个基本可行解。
向量0a ≥x 是人为引进的,它的每个分量称为人工变量。
人工变量与前面介绍的松弛变量是两个不同的概念。
松弛变量的作用是把不等式约束改写为等式约束,改写前后的两个问题是等价的。
松弛变量的取值能够表达现行的可行点是在可行域的内部还是在其边界。
也就是说,在此可行解处,原来的约束是严格不等式成立还是等式成立的区别。
因此松弛变量是“合法”的变量。
而人工变量的引进,改变了原来的约束条件,从这个意义上讲,它们是
“不合法”的变量。
两阶段法的第一阶段是用单纯形法消去人工变量,即把人工变量都变换成非基变量,求出原问题的一个基本可行解。
min ..0,0
T a
a a f e s t =+=≥≥x Ax x
b x x (4.2.4)
其中(1,1,...,1)T e =是分量全是1的m 维列向量,1(,...,)T a n n m x x ++=x 是人工变量构成的m 维列向量。
由于,a ==x 0x b 是线性规划(4.2.4)的一个基本可行解,目标函数在可行域上有下界,因此问题(4.2.4)必存在最优基本可行解。
设最优基本可行解是(,)T T T a x x ,这时有三种情况。
1、a ≠x 0,这时线性规划(4.2.1)无可行解,因为如果线性规划(4.2.1)存在可行
解ˆx
,则
ˆa ⎡⎤⎡⎤=⎢⎥⎢⎥⎣⎦
⎣⎦x x
x 0 是线性规划(4.2.4)的可行解,在这一点上,问题(4.2.4)的目标函数的值
ˆT T a f e e =+<0x
0x 这和T a e x 是目标函数的最优值矛盾。
2、a =x 0且a x 的分量都是非基变量,这时m 个基变量都是原来的变量,又知:
ˆa ⎡⎤⎡⎤=⎢⎥⎢⎥⎣⎦
⎣⎦x x x 0 是线性规划(4.2.4)的基本可行解,因此,=x x 是线性规划(4.2.1)的一个基本可行解。
3、a =x 0且a x 的某些分量都是非基变量,这时可以用主元消去法,使原来变量中的某些非基变量进基,替换出基变量中的人工变量,再开始两阶段法的第二阶段。
应当指出,为替换出基变量中的人工变量而采用的主元消去法,并不要求遵守单纯形法确定的离基进基变量的规则。
两阶段法的第二阶段,用单纯形法求线性规划(4.2.1)的最优解,初始的基本可行解
就是从第一阶段所得到的基本可行解。
例4.2 用两阶段法求下列线性规划问题的最优解:
1212121
12max 2..2
13,0
z x x s t
x x x x x x x =-+≥-≥≤≥ (4.2.5) 先引进松弛变量345,,x x x ,把问题化为标准形式。
由于标准形式中约束方程的系数矩阵并不包含三阶单位矩阵,因此还要引进人工变量67,x x 。
下面先求解第一阶段的问题:
671236124
71
5
1234567min ..213
,,,,,,0
x x s t
x x x x x x x x x x x x x x x x x ++-+=--+=+=≥
用表格形式表示:
为了满足单纯形法的第三个特点:底行相应于单位子块位置的元素为0,对上表做初等变换,使67,x x 所对应的底行单位子块位置的元素为0。
得:
由单纯形法(或主元消去法),得:
再进行一次:
这时已经满足单纯形法的全部条件,达到最优解。
在第一阶段的最优解中,人工变量
67,x x 都是非基变量,这样得到初始基本可行解为:
1234531
3(,,,,),,0,0,22
2x x x x x ⎛⎫= ⎪⎝⎭
第一阶段结束后,修改最后的单纯形表,去掉人工变量67,x x 下面的列,然后开始第二阶段的迭代,即求目标函数12min 2f x x =-+。
同理,为了满足单纯形法的第三个特点:底行相应于单位子块位置的元素为0,对上表做初等变换,使12,x x 所对应的底行单位子块位置的元素为0。
得:
上表已经具备单纯形法的三个特点,于是在底行中任选一个负元素,
再进行一次迭代,得:
上表已满足单纯形法的四个特点,从而得到线性规划(4.2.5)的最优解12(,)(3,0)x x =,目标函数的最优值max 6f =。
§4.3 灵敏度分析
通过一个案例来理解灵敏度的问题。
例4.3 设某厂在资源甲、乙的限制下,考虑制定能使总利润达到最大的三种产品A 、B 、C 的生产计划,其有关数据如下:
解 以123,,x x x 分别表示A 、B 、C 的产量,则问题的数学模型为:
123
123123123max 34..6354534530,,0
z x x x s t
x x x x x x x x x =++++≤++≤≥ (4.3.1)
化为标准形式:
123
12341
23512345min 34..6354534530,,,,0
f x x x s t
x x x x x
x x x x x x x x =---+++=+++=≥ (4.3.2)
其中4,x x 分别是关于资源甲、乙而引进的松弛变量,列成表格:
用单纯形法经过两次迭代即可终止,得
读出的最优解为:123455,0,3,0,0x x x x x =====,标准形的最优值为f = -27,即原问题的最大利润为z = 27。
最优解为*
(5,0,3)=T
x ,即产品A 生产5吨,产品B 生产0吨,产品C 生产3吨,这时的综合利润最大,为27千元。
在此基础上进一步考虑一些问题,例如
1、 两种资源中哪种资源的拥有量是制约利润进一步提高的因素? 以1235,0,3x x x ===代入(4.4)约束:
123123..63545()34530()
s t
x x x x x x ++≤++≤资源甲的约束资源乙的约束
我们发现,约束条件中的不等式全部变成了等式,这说明在此生产计划下的两种资源均已用尽,故两种资源的拥有量均是制约利润进一步提高的因素。
关于最后的解是否使得不等式变成等式,可以简单地以相应的松弛变量是否取值为0加以判断。
在本例中,450x x ==说明两个约束都达到了极限,都成为制约利润进一步提高的因素。
2、 若在市场上能按比正常价贵0.5千元的单价买到资源甲、乙,问为了进一步提高利润是否应买?
我们从最后的一张表中可以看出原问题等价于在原有的约束条件下求:
24513max 255
z x x x =---
注意到其中45,x x 分别表示资源甲、乙的数量,由此可以看出在最优生产计划的水平下,资源甲的数量每变化一个单位对总利润z 的影响是1/5千元,相应的资源乙的数量每变化一个单位对总利润z 的影响是3/5千元,在经济学上分别称1/5千元、3/5千元为资源甲、乙的影子价格。
对于目前所提的问题,由于单位利润是在正常价格下计算的,所以若在市场上按高于正常价格购买资源甲、乙,则净利润就要在总利润中减去高出的部分。
资源甲在当前的计划生产水平下,每投入1吨甲资源对总利润的贡献为1/5=0.2千元,而购买成本要高出0.5千元,因此不合算;同样的理由,每投入1吨乙资源对总利润的贡献为3/5=0.6千元,扣除高出的0.5千元的成本,还有0.1千元的利润可赚,因此资源甲不应购买、资源乙可以买。
3、 若通过提高售价来提高B 产品的单位利润,问B 产品的单位利润要提高多少千元,才能仍在追求最大利润的目标下考虑生产B 产品?
解:设B 产品的单位利润要增加C 千元才考虑生产B 产品。
则(4.5)式改为:
在底行的第二个系数上增加-C ,经过两次迭代,得:
可以这样分析,底行中若2≤C ,则上表已经具有四个特点,运算终止,最优解不变,2x 仍为0,只有当2>C ,上表不具备第四个特点,需要继续运算,才能让2x 作基变量,即2x 的取值才可以不为0,所以本问题的回答是2>C 。
习题 4.1 用大M 法计算以下线性规划
12312312323min 357..28
23220480,1,2,3
j f x x x s t x x x x x x x x x j =++-+≥++≤-=≥= (习题4.1)
解:
列成表格:
上述第一张表中,先引进一个剩余变量4x ,一个松弛变量5x ,将问题化为标准型,变成第二张表,其形式为:
1231234123
523
min 357..28
2322048
0,1,2,3,4,5
j f x x x s t
x x x x x x x x x x x j =++-+-=+++=-=≥= (习题4.2)
松弛变量5x 可以作为初始基本变量,但是第二张表中没有单位子阵,因而人工再增加两个变量67,x x ,称为人工变量,即把原问题改为:
=>
1236712346123
5
23
7min 357..28
2322048
0,1,2,3,4,5,6,7
j f x x x Mx Mx s t
x x x x x x x x x x x x x j =++++-+-+=+++=-+=≥= (习题4.3) 式(习题4.1)和(习题4.3)的约束方程组并不同解,但(习题4.1)的解和(习题4.3)中45670x x x x ====的解是相对应的。
只要找到以(习题4.3)为约束条件,且人工变量4567,,,x x x x 均为自由变量的基本可行解,也就找到了(习题4.3)的基本可行解,于是,要设法迫使45670x x x x ====。
以上途径通过修改(习题4.1)的目标函数来实现。
具体修改为:
12367min 357f x x x Mx Mx =++++ (习题4.4)
其中M 为足够大的正数,然后以(习题4.3)为约束条件,求(习题4.3)的最小值。
只要67,x x 不为零,就一定为正数,于是目标函数的值就会增加它们和的M 倍。
由于M 为足够大的正数,所以只要原问题有基本可行解,就不会在67,x x 取正值时达到最小值。
本例中把表改为:
通过运算使它具备第三个特点:底行相应于单位子块位置的元素为0,然后再严格按照单纯形法的步骤求解:
由于M 为足够大的正数,所以3-2M 和5-3M 都应视为负数,从中任选一个,例如选3-2M ,即第一列,从该列的正元素中计算:
820min 0min ,422k i ij i i kj ij b b a a a ⎧⎫⎪⎪⎧⎫
=>==⎨⎬⎨⎬⎩⎭⎪⎪⎩⎭
得1k b =,经迭代得到下表。
底行中只有一个为负数:13/2-4 M ,因此就选该列。
4 - 11
得3b ,再经迭代得到下表:
这时表已经具备四个特点,且人工变量67,x x 亦已成为自由变量,所以从表上可直接读出(习题 4.1)的最优解:1235,2,0x x x ===,且45670x x x x ====。
把引进的自由变量略去,则最优解为*(5,2,0)=T x ,最优值为*25f =。