运筹学 第二章 运输问题.docx
《运筹学 第二章 运输问题.docx》由会员分享,可在线阅读,更多相关《运筹学 第二章 运输问题.docx(37页珍藏版)》请在冰豆网上搜索。
运筹学第二章运输问题
运筹学第二章运输问题
运筹学
第二章运输问题
XX大学经济与管理学院
教授、博士生导师
管理科学与工程系主任
第二章运输问题
前面讨论了一般线性规划问题的数学模型的建立和求解的方法,但在实际工作中,往往碰到有些线性规划问题,它们的约束条件的系数矩阵具有特殊的结构,这就使我们有可能找到比单纯形法更为简单的求解方法,从而节约大量的计算时间和费用。
本章所讨论的运输问题就是属于这样一类特殊的线性规划问题,它在实践中具有重要的作用,具有广泛的应用。
第一节运输问题的数学模型
在经济建设中,经常会遇到大宗物资调拨中的运输问题。
如煤炭、钢铁、木材、粮食等物资,在全国有若干生产基地,根据已有的交通网,应如何制定调运方案,将这些物资运到各消费地点,而使总运费最小。
这类问题可用以下数学语言来描述:
运输问题:
假设有m个生产地点,可以供应某种物资(以后称为产地),用Ai表示,i=1,2,?
?
?
?
?
?
m;有n个销售地,用Bj表示,j=1,2,?
?
?
?
?
?
n;产地的产量和销售地的销售量分别为ai,i=1,2,?
?
?
?
?
?
m和bjj=1,2,?
?
?
?
?
?
n,从Ai到Bj运输单位物资的运价为cij,这些数据可汇总于如下表2—1。
在假设产销平衡的条件下,即
要求得总运费最小的调运方案。
表2—1产销平衡表与单位运价表
销地
产地
8><#004699'>B1
<#004699'>B2
?
?
?
?
?
?
?
?
?
?
?
?
Bn
产量
A1
c11
c12
?
?
?
?
?
?
?
?
?
?
?
?
c1n
a1
A2
c21
c22
?
?
?
?
?
?
?
?
?
?
?
?
c2n
a2
?
?
?
?
?
?
?
?
?
?
?
?
Am
cm1
cm2
?
?
?
?
?
?
?
?
?
?
?
?
cmn
am
销量
<#004699'>b1
<#004699'>b2
?
?
?
?
?
?
?
?
?
?
?
?
bn
解:
假设xij表示从Ai到Bj的运量,则所求的数学模型为:
对于产销不平衡的情况,我们将另行处理。
这就是运输问题的数学模型,它包含m·n变量,m+n个约束条件。
如果用单纯形法求解,先得在各约束条件上加入一个人工变量(以便求出初始基可行解)。
因此,即使是m=3,n=4这样的简单问题,变量数就有19个之多,计算起来非常复杂。
因此,我们有必要针对运输问题的某些特点,来寻求更为简单方便的求解方法。
第二节表上作业法
1.表上作业法的基本概念与重要结论
针对运输问题的数学模型结构的特殊性,它的约束方程组的系数矩阵具有如下形式(具体见下一张幻灯片),该矩阵中,每列只有两个元素为1,其余都是0。
根据这个特点,在单纯形法的基础上,创造出一种专门用来求解运输问题的方法,这种方法我们称为表上作业法。
运输问题也是一个线性规划问题,当用单纯形法进行求解时,我们首先应当知道它的基变量的个数;其次,要知道这样一组基变量应当是由哪些变量来组成。
由运输问题系数矩阵的形式并结合第一章单纯形算法的讨论可以知道:
运输问题的每一组基变量应由m+n-1个变量组成。
(即基变量的个数=产地个数+销售地个数–1)进一步我们想知道,怎样的m+n-1个变量会构成一组基变量?
为此我们需要引入一些基本概念,通过对这些基本概念
的分析和讨论,结合单纯形算法的基本结果,便可得出
我们所需要的结论。
定义1:
例1:
设m=3,n=4,如表2—2所示。
表2—2
销地
产地
<#004699'>B1
<#004699'>B2
<#004699'>B3
<#004699'>B4
A1
x11
x12
A2
x21
x24
A3
x32
x34
x11、x12、x32、x34、x24、x21构成一个闭回路.这里有:
i1=1,i2=3,i3=2;j1=1,j2=2,j3=4.若把闭回路
的顶点在表中画出,并且把相邻两个变量用一条直线相连(今后就称这些直线为闭回路的边)。
而表2—3,即顶点为{x12、x13、x23、x22}和表2—4,即顶点为{x11、x12、x22、x24、x34、x31}也分别构成两个闭回路。
表2—3
销地
产地
<#004699'>B1
<#004699'>B2
<#004699'>B3
<#004699'>B4
A1
x12
x13
A2
x22
x23
A3
表2—4
销地
产地
<#004699'>B1
<#004699'>B2
<#004699'>B3
<#004699'>B4
A1
x11
x12
A2
x22
x24
A3
x31
x34
从上面的几个例子中不难看出,如果把一
个闭回路的所有顶点都在表中画出,并且把相
邻的顶点都用一条直线连接起来,就可以得到
一条封闭的折线,折线的每一条边或者是水平
的,或者是垂直的。
定理:
m+n-1个变量
构成基变量的充分和必要条件是它不包含有任何闭回路。
以上的结果给出了运输问题的基的一个特征,这个结
论是非常重要的,因为利用它来判断m+n-1个变量是否
构成基变量比直接判断这些变量所对应的系数列向量组
是否线性无关要简单和直观。
另外,在以后还将看到利
用基的这个特征可以导出求运输问题的第一个基本可行
解的一种简便的方法。
2.表上作业法
表上作业法是单纯形法在求解运输问题时的一种简化方法,其实质是单纯形算法。
只是具体计算和术语有所不同,可归纳为:
(1)找出初始基可行解,即在(m?
?
n)产销平衡表上给出m+n-1个有数字的格,这些有数字的格不能构成闭回路,且行和等于产量,列和等于销售量;
(2)求各非基变量的检验数,即在表上求空格的检验数,判别是否达到最优解。
如果达到最优解,则停止计算,否则转入下一步;
(3)确定换入变量和换出变量,找出新的基可行解,在表上用闭回路法进行调整。
(4)重复
(2)、(3)步,直到求得最优解为止。
以下我们就具体给出求解运输问题表上作业法的计算步骤。
2.1确定初始基可行解
确定初始基可行解即首先给出初始的调运方案,
方法很多,我们只介绍其中的两种方法:
1.方法一、最小元素法:
最小元素法的基本思想就是就近供应。
即从单位
运价表中最小的运价开始确定产销关系,依次类推,直
到给出初始方案为止。
举例如下:
例2:
某公司经销甲产品,它下设三个加工厂,每日
的产量分别为:
A1—7吨、A2—4吨、A3—9吨。
该公
司把这些产品分别运往四个销售点.各销售点每日销售
量为:
<#004699'>B1—3吨、<#004699'>B2—6吨、<#004699'>B3—5吨、<#004699'>B4—6吨。
已知
从各工厂到各销售点的单位产品的运价如表2—5所示。
问该公司应如何调运产品,在满足各销售点的需要量
的前提下,使总的运费为最小。
表2—5
5
10
4
7
A3
8
2
9
1
A2
10
3
11
3
A1
<#004699'>B4
<#004699'>B3
<#004699'>B2
<#004699'>B1
销地
产地
3
6
5
6
7
4
9
产量
销量
表2—6单位:
吨
销地
产地
<#004699'>B1
<#004699'>B2
<#004699'>B3
<#004699'>B4
产量
A1
7
A2
4
A3
9
销量
3
6
5
6
解:
先画出这个问题的产销平衡表2—6。
第一步:
从单位运价表中找出最小运价为1,这表示先将
A2的产品供应<#004699'>B1。
由于A2每天生产4吨,<#004699'>B1每天只需要
3吨,即A2除每日能满足<#004699'>B1的需要外还余1吨。
因此在产
销平衡表(A2,<#004699'>B1)交叉处填上3,表示A2调运3吨给<#004699'>B1,
再在单位运价表中将<#004699'>B1这一列运价划去,表示<#004699'>B1的需求
已满足,不需要继续调运(即x21=3=min(a2,<#004699'>b1)=min(4,3).
第二步:
从上述未划去的单位运价表的元素中找出最小的
运价2,即A2把剩余的产品供应给<#004699'>B3;<#004699'>B3每天需要5吨
,A2只剩余1吨,因此在上述产销平衡表的(A2,<#004699'>B3)交
叉处填上1,划去上述运价表中A2这一行运价,表示A2的产品已分配完毕。
销地
产地
<#004699'>B1
<#004699'>B2
<#004699'>B3
<#004699'>B4
产量
A1
4
3
7
A2
3
1
4
A3
6
3
9
销量
3
6
5
6
5
10
4
7
A3
8
2
9
1
A2
10
3
11
3
A1
<#004699'>B4
<#004699'>B3
<#004699'>B2
<#004699'>B1
表2—7
第三步:
从上述第二步所得的单位运价表未划去的元素中
找出最小元素为3。
这表示将A1的产品供应<#004699'>B3,A1每
天生产7吨,<#004699'>B3尚缺4吨,因此在产销平衡表的(A1,<#004699'>B3)
交叉处填上4,由于<#004699'>B3的需求已满足,将第二步的单位
运价表中的<#004699'>B3这一列运价划去。
如此,一步步进行下去,直到单位运价表中所有元素
都划去为止,最终在产销平衡表上就可以得到一个初始
调运方案。
这个方案的总运费为86元,如表2—7所示。
应当注意的是,在用最小元素法确定初始基可行解
的时候,有可能出现以下的两种特殊情况:
当在中间步骤的未划去的单位运价表中寻找最小元
素时,发现该元素所在行的剩余产量等于该元素所在列
的剩余销售量。
这时在产销平衡表相应的位置填上一个
数,而在单位运价表中就要同时划去一行和一列。
为了
使调运方案中有数字的格仍为(m+n–1)个,需要在同
时划去的行或列的任一空格位置添上一个“0”,这个“0”
表示该变量是基变量,只不过它取值为0,即此时的调运
方案是一个退化的基可行解。
见如下例4:
销地
产地
<#004699'>B1
<#004699'>B2
<#004699'>B3
<#004699'>B4
产量
A1
5
0
4
9
A2
3
1
4
A3
7
7
销量
3
5
8
4
7
5
10
20
A3
6
9
6
1
A2
4
10
3
5
A1
<#004699'>B4
<#004699'>B3
<#004699'>B2
<#004699'>B1
在这个例子中,当在填入第三数字的格(A1,<#004699'>B4)时,
在填入4之后,恰好产销平衡,就必须在单位运价表中
同时划去第一行和第四列。
为了使有数字的格不减少,
(有数字的格的总数应为m+n–1个)可以在空格(A1,<#004699'>B1)
、(A1,<#004699'>B3)、(A2,<#004699'>B4)、(A3,<#004699'>B4)中任选一个格添加一个
“0”;同样,这个添加的“0”格当作基变量,取值为0。
我
们这里是在(A1,<#004699'>B3)处填0(即初始调运方案是一个退化
的基可行解)。
2.方法二、伏格尔法:
最小元素法的缺点是,为了节省一处的费用,有时造成在其它地方要花多几倍的运费。
伏格尔法考虑到,一
产地的产品,假如不能按最小运费就近供应,就考虑次
小运费。
这就有一个差额,差额越大,说明不能按最小
运费调运时,运费增加就越多。
因此,对于差额最大处
,就优先采用最小运费调运。
我们还是用例1来说明伏
格尔法的具体实施过程,步骤如下:
第一步:
在单位运价表中增加一行和一列,列的格位置
相应填入该行的次小运费与最小运费之差,我们称之为
行差额。
行的格位置相应填入该列的次小运费与最小运
费之差,我们称之为列差额。
如此可得表2—8:
销地
产地
<#004699'>B1
<#004699'>B2
<#004699'>B3
<#004699'>B4
行差额
A1
3
11
3
10
0
A2
1
9
2
8
1
A3
7
4
10
5
1
列差额
2
5
1
3
表2—8
第二步:
从行差额和列差额中选出最大者,选择它所在
的行或列中的最小元素。
比较该元素所在的行和列的产
量,取它们最小者填入产销平衡表相应的位置。
同时在
单位运价表中划去一行或一列。
由于<#004699'>B2的列差额最大。
<#004699'>B2列中最小元素为4(即A3行),可确定A3产品优先供应<#004699'>B2。
比较它们的产量和销量,可知在单位运价表中划去<#004699'>B2列。
在产销平衡表的(A3,<#004699'>B2)空格处填入6。
第三步:
对上述未划去的元素再比较出各行、各列
的差额。
重复第一、二步的工作,直到给出初始解为止。
本问题利用伏格尔方法给出的初始调运方案如下表2—9
所示。
由以上可见:
伏格尔方法同最小元素法除在确定供求
关系的原则上不同外,其余步骤相同,因而给出的初始调运方案也是基可行解。
且一般来说,比用最小元素法
所求出的初始解更接近于最优解。
本例用伏格尔方法给
出的初始解,这个方案的总运费为85元。
表2—9
销地
产地
<#004699'>B1
<#004699'>B2
<#004699'>B3
<#004699'>B4
产量
A1
5
2
7
A2
3
1
4
A3
6
3
9
销量
3
6
5
6
2.2最优解的判别
判别的方法是计算非基变量即空格的检验数。
因运输
问题的目标函数是要求实现最小化,所以当所有的非基
变量检验数全都?
?
0时为最优解。
下面介绍两种求空格
检验数的方法。
1.闭回路法
在给出调运方案的计算表上,如表2—9,从每一空格
出发,找一条闭回路。
它是以空格为起点,用水平线或
垂直线向前划,每碰到一数字格就转90度后继续前进。
直到回到起始空格处为止。
(A1,<#004699'>B1)空格与(A1,<#004699'>B4)、(A2,<#004699'>B4)和(A2,<#004699'>B1)三个有数字的格构成一闭回路,如此
等等。
闭回路计算检验数的经济解释为:
在已给出初始解的
表2—7中,可以从任一空格出发,如从(A1,<#004699'>B1)出发,若
让A1的产品调1吨给<#004699'>B1,为了保持产销平衡,就要依次
作调整:
在(A1,<#004699'>B3)处减少1吨,(A2,<#004699'>B3)处增加1吨,
(A2,<#004699'>B1)处减少1吨,即构成了以(A1,<#004699'>B1)空格为起点,
其它为有数字的格的闭回路。
如表2—10中的直线所示,
在这表闭回路中,各顶点所在格的右上角的数字是单位
运价。
可见这一调整方案使运费增加了:
(+1)?
?
3+(-1)?
?
3+(+1)?
?
2+(-1)?
?
1=1(元)
这表明若这样调整运输方式将增加运费。
将“1”这个数填
入(A1,<#004699'>B1)格,这就是检验数。
表2—10
销地
产地
<#004699'>B1
<#004699'>B2
<#004699'>B3
<#004699'>B4
产量
A1
3
(+1)
43
(-1)
3
7
A2
31
(-1)
12
(+1)
4
A3
6
3
9
销量
3
6
5
6
按以上所述,就可以找出所有空格的检验数,见
如下表2—11。
这时检验数还存在负数,因为(A2,<#004699'>B4)空格的
检验数为–1,这说明原方案还不是最优解,还需
要进一步改进,改进方法见后面的2.3小节。
表2—11
空格
闭回路
检验数
(A1,<#004699'>B1)
(1,1)?
?
(1,3)?
?
(2,3)?
?
(2,1)?
?
(1,1)
1
(A1,<#004699'>B2)
(1,2)?
?
(1,4)?
?
(3,4)?
?
(3,2)?
?
(1,2)
2
(A2,<#004699'>B2)
(2,2)?
?
(2,3)?
?
(1,3)?
?
(1,4)?
?
(3,4)?
?
(3,2)?
?
(2,2)
1
(A2,<#004699'>B4)
(2,4)?
?
(2,3)?
?
(3,3)?
?
(1,4)?
?
(2,4)
-1
(A3,<#004699'>B1)
(3,1)?
?
(3,4)?
?
(1,4)?
?
(1,3)?
?
(2,3)?
?
(2,1)?
?
(3,1)
10
(A3,<#004699'>B3)
(3,3)?
?
(3,4)?
?
(1,4)?
?
(1,3)?
?
(3,3)
12
2.方法二:
位势法
用闭回路法求检验数时,需要给每一空格找一条闭
回路。
当产销点很多时,这种计算很费时。
下面介绍一
种较为简便的方法——位势法。
是一组基可行解,
现在引进m+n个未知量u1,···,um,v1,···,vn,由上述基
本可行解可构造如下一个方程组(2.1):
其中cij为单位运价。
方程组(2.1)共有m+n未知数和
m+n-1个方程。
(2.1)的解存在且恰有一个自由变量。
称
u1,···,um为行位势,v1,···,vn为列位势。
定理:
设已给了一组基本可行解,
则对每一个非基变量xij来说,它所对应的检验数为:
?
?
ij=cij–(ui+vj)(2.2)
下面,我们就以例子来说明这种方法的具体实施过程
仍以例2所给出的初始基可行解表2—7为例:
第一步:
由表2—7作表2—12,在对应表2—7的数字格
处填入单位运价如表2—12所示:
第二步:
在表2—12上增加一行和一列,列中填入行
位势ui,行中填入列位势vj的表2—13。
先令u1=0(行和列中基变量多的令为0),然后按ui+vj=cij(i,j)?
?
基变量指标集,相继确定ui、vj。
由表2—13可见,u1=0时,由u1+v3=c13=3可得v3=3,由u1+v4=c14=10可得v4=10;在v4=10时,由u3+v4=c34=5可得u3=-5。
以此类推可确定所有的ui、vj的值。
表2—12
<#004699'>B1
<#004699'>B2
<#004699'>B3
<#004699'>B4
A1
3
10
A2
1
2
A3
4
5
表2—13
销地
产地
<#004699'>B1
<#004699'>B2
<#004699'>B3
<#004699'>B4
行位势ui
A1
3
10
0
A2
1
2
-1
A3
4
5
-5
列位势vj
2
9
3
10
第三步:
按?
?
ij=cij–(ui+vj),(i,j)?
?
非基变量指标集,计算所有的空格检验数。
如:
?
?
11=c11–(u1+v1)=3–(0+2)=1
?
?
12=c12–(u1+v2)=11-(0+9)=2
这些计算可直接在表2—13上进行。
为了方便,特设计
计算表,如表2—14。
右上角框内的数为单位运价。
在表2—14中还有负的检验数,说明还未得到最优解,
还得进一步进行改进。
表2——14
销地
产地
<#004699'>B1
<#004699'>B2
<#004699'>B3
<#004699'>B4
行位势ui
A1
3
1
11
2
3
0
10
0
0
A2
1
0
9
1
2
0
8
-1
-1
A3
7
10
4
0
10
12
5
0
-5
列位势vj
2
9
3
10
2.3解改进的方法——闭回路调整法
当计算所有的空格检验数时,出现了负检验数,这表
明还未得到最优解。
若有两个或两个以上的检验数为负
时,一般选择其中最小的负检验数,以它对应的空格为
调入格。
即以它对应的非基变量为换入变量。
由表2—14
可知(A2,<#004699'>B4)为调入格(即以它对应的变量x24为换入变
量)。
以此格为出发点,作一闭回路,如表2—15所示。
(A2,<#004699'>B4)格的调入量?
?
是选择闭回路上具有(-1)的
数字格中的最小者。
即?
?
=min{1,3}=1(其原理与单纯
形法中按?
?
规则来确定的换出变量是相同),然后按闭回
路上的正、负号,加入和减去此值,得到调整方案如表2
—16所示。
对表2—16给出的解,再用闭回路法或位势法
求各空格的检验数,见表2—17,这时表中的所有检验数
全都?
?
0,所以表2—16所给出的解为最优解。
这时得到
的总运费的最小值是85元。
销地
产地
<#004699'>B1
<#004699'>B2
<#004699'>B3
<#004699'>B4
产量
A1
4(+1)
3(-1)
7
A2
3
1(-1)
1(+1)
4
A3
6
3
9
销量
3
6
5
6
表2—15
表2—16解的调整表
销地
产地
<#004699'>B1
<#004699'>B2
<#004699'>B3
<#004699'>B4
产量
A1
5
2
7
A2
3
1
4
A3
6
3
9
销量
3
6
5
6
表2—17检验数表