钢管订购和运输论文.docx
- 文档编号:29774149
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:20
- 大小:57.28KB
钢管订购和运输论文.docx
《钢管订购和运输论文.docx》由会员分享,可在线阅读,更多相关《钢管订购和运输论文.docx(20页珍藏版)》请在冰豆网上搜索。
钢管订购和运输论文
承诺书
我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与本队以外的任何人(包括指导教师)研究、讨论与赛题有关的问题。
我们知道,抄袭别人的成果是违反竞赛规则的,如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。
我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。
如有违反竞赛规则的行为,我们愿意承担由此引起的一切后果。
我们的参赛(报名)队号为:
32
参赛组别(研究生或本科):
本科
参赛队员:
兰潇根、柳达强、汪锡平
钢管订购和运输
摘要:
本文拟建立一个最合理的钢管运输与铺设方案模型。
利用离散数学和数据结构中图论相关知识,应用最短路径的floyd算法和灵敏度分析法建立一个以总费用为目标函数的非线性规划模型,对于钢管订购和运输的总费用,分为三部分:
购买钢管费用,由钢厂运送到站点的费用以及由站点开始铺设的费用,对于由钢厂运送到站点的费用,用Floyd算法,求出铁路网和公路网的最短路径,然后转化为最少运输费用,之后利用Lingo软件编程,求解分析,解决问题。
关键词:
Floyd算法,非线性规划,Lingo
一问题重述
要铺设一条
的输送天然气的主管道,如题图一所示。
经筛选后可以生产这种主管道钢管的钢厂有
。
图中粗线表示铁路,单细线表示公路,双细线表示要铺设的管道(假设沿管道或者原来有公路,或者建有施工公路),圆圈表示火车站,每段铁路、公路和管道旁的阿拉伯数字表示里程(单位km)。
为方便计,1km主管道钢管称为1单位钢管。
一个钢厂如果承担制造这种钢管,至少需要生产500个单位。
钢厂
在指定期限内能生产该钢管的最大数量为
个单位,钢管出厂销价1单位钢管为
万元,如下表:
1
2
3
4
5
6
7
800
800
1000
2000
2000
2000
3000
160
155
155
160
155
150
160
1单位钢管的铁路运价如下表:
里程(km)
≤300
301~350
351~400
401~450
451~500
运价(万元)
20
23
26
29
32
里程(km)
501~600
601~700
701~800
801~900
901~1000
运价(万元)
37
44
50
55
60
1000km以上每增加1至100km运价增加5万元。
公路运输费用为1单位钢管每公里0.1万元(不足整公里部分按整公里计算)。
钢管可由铁路、公路运往铺设地点(不只是运到点
,而是管道全线)。
(1)请制定一个主管道钢管的订购和运输计划,使总费用最小(给出总费用)。
(2)请就
(1)的模型分析:
哪个钢厂钢管的销价的变化对购运计划和总费用影响最大,哪个钢厂钢管的产量的上限的变化对购运计划和总费用的影响最大,并给出相应的数字结果。
(3)如果要铺设的管道不是一条线,而是一个树形图,铁路、公路和管道构成网络,请就这种更一般的情形给出一种解决办法,并对题图二按
(1)的要求给出模型和结果。
二问题分析
1.问题一
所有的钢管必须通过铁路运送到铺设线路上的站点
,之后再通过公路运输向左或右铺设。
因此,总的费用由三部分组成:
一部分为购买所有主管道钢管的总费用,一部分为由钢管厂运送到各个站点时的铁路运费和公路运费的总和,最后一部分为由站点向左右两边铺设时的运输费用。
对于从钢管厂到各个站点的最小运费,由于在铁路和公路上的运费计算方法不同,所以,可以先用Floyd算法,求出钢管厂到铁路上任意结点的最小距离和路线,得到相应的单位钢管运费,同理再求出各个站点到公路上任意结点的最小距离和路线,得到相应的单位钢管运费,再将两运费求和求出最小值,于是就得到从某钢厂到某铺设地点运输单位钢管的最少运输费用。
2.问题二
题目中“哪个钢厂钢管的销价的变化对购运计划和总费用影响最大,哪个钢厂钢管的产量的上限的变化对购运计划和总费用的影响最大”可以理解为,当该模型达到最优解时,钢管销价或者产量上限变化一个单位时,对购运计划和总费用的影响的大小问题。
可以利用Lingo编程运行得到结果。
3.问题三
要铺设的管道是一个树形图,是题图一的一种延拓,通过观察可知,只有9、11、17站点的铺设方向有三个,其它站点的铺设方向只有左右,因此,可以沿用问题一里的思路,在问题一的基础上再增加一个变量middle(j),用于表示向第三方向铺设的钢管数量。
三模型的假设与符号说明
1、模型的假设
⑴.沿管道或者原来有公路或者建有施工公路。
⑵钢管全部由这7个钢厂生产,一个钢厂如果承担制造这种钢管,至少需要生产500个单位。
⑶公路运输费用为1单位钢管每公里0.1万元(不足整公里部分按整公里计算)。
⑷由于公路运输费中,不足整公里部分按整公里计算,因此,从站点向左右两边运送钢管时,不应该是边运送边卸下钢管,这样也不符合实际,应当是走一个单位的公路,卸下一个单位的钢管。
2、符号说明
符号
说明
钢厂
在指定期限内能生产该钢管的最大数量
钢厂
的钢管出厂单位销价(单位:
万元)
cost(i,j)
单位钢管从钢厂
运到
的最小费用(单位:
万元)
l(j)
从
到
之间的距离(单位:
千米)
n(i,j)
从钢厂
运到
的钢管数量
left(j)
运到
站点向左铺设的钢管数量
right(j)
运到
地的钢管向右铺设的钢管数量
middle(j)
运到
站点的钢管向第三方向铺设的钢管数量
c(i)=0
钢厂
不提供钢管
c(i)=1
钢厂
提供钢管
四模型的建立与求解
(一)、问题一的模型:
采用Floyd算法,用matlab编程可以求出单位钢管从
运输到
的最小运输费用,数据如下表:
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
A15
S1
170.7
160.3
140.2
98.6
38
20.5
3.1
21.2
64.2
92
96
106
121.2
128
142
S2
215.7
205.3
190.2
171.6
111
95.5
86
71.2
114.2
142
146
156
171.2
178
192
S3
230.7
220.3
200.2
181.6
121
105.5
96
86.2
48.2
82
86
96
111.2
118
132
S4
260.7
250.3
235.2
216.6
156
140.5
131
116.2
84.2
62
51
61
76.2
83
97
S5
255.7
245.3
225.2
206.6
146
130.5
121
111.2
79.2
57
33
51
71.2
73
87
S6
265.7
255.3
235.2
216.6
156
140.5
131
121.2
84.2
62
51
45
26.2
11
28
S7
275.7
265.3
245.2
226.6
166
150.5
141
131.2
99.2
76
66
56
38.2
26
2
目标函数为总费用W,包括三个部分,购买所有主管道钢管的费用
,将钢管从钢厂运到各个站点的费用
,将钢管从站点运到铺设地点的费用
W=
+
+
其中
则目标函数:
minW=
+
+
约束条件:
1.钢厂的钢管产量:
2.运到各个站点的钢管刚好用完:
(j=1,2…15)
3.
与
之间的钢管:
(j=1,2,…,14)
4.钢管数量的非负性:
n(i,j)≥0,left(j)≥0,right(j)≥0
(i=1,2,…,7,j=1,2,…,15)
5°钢管数量的整数性:
n(i,j)∈N
运用数学软件Lingo编程求解
问题一的结果
最优最小费用
(万元)
(二)、问题二的模型:
用Lingo对问题一求解后,即可根据Lingo的结果对问题二进行解答。
各钢厂销价的变化:
p
(1)
p
(2)
p(3)
p(4)
p(5)
p(6)
p(7)
对偶价格
-800
-800
-1000
0
-1320
-1250.99
0
对偶价格表示,在最优解的情况下,各钢厂钢管销价减少一个单位时,对总费用的影响。
根据表中的数据,S(5)钢厂钢管的销价对购运计划和总费用影响最大。
产量上限:
s
(1)
s
(2)
s(3)
s(4)
s(5)
s(6)
s(7)
对偶价格
103
35
25
3.33
0
0
16
对偶价格表示,在最优解的情况下,各钢厂钢管生产上限每增加一个单位时,对总费用的影响。
根据表中的数据,得S
(1)钢厂钢管的产量上限的变化对购运计划和总费用的影响最大。
(三)、问题三的模型:
采用Floyd算法,用matlab编程求出单位钢管从
运输到
的最小运输费用,数据如下表:
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
S1
170.7
160.3
140.2
98.6
38
20.5
3.1
21.2
64.2
92
S2
215.7
205.3
190.2
171.6
111
95.5
86
71.2
114.2
142
S3
230.7
220.3
200.2
181.6
121
105.5
96
86.2
48.2
82
S4
260.7
250.3
235.2
216.6
156
140.5
131
116.2
84.2
62
S5
255.7
245.3
225.2
206.6
146
130.5
121
111.2
79.2
57
S6
260.7
250.3
235.2
216.6
156
140.5
128.1
116.2
84.2
61
S7
275.7
265.3
245.2
226.6
166
150.5
141
131.2
99.2
76
(续表)
A11
A12
A13
A14
A15
A16
A17
A18
A19
A20
A21
S1
96
106
121.2
128
142
60
95
100
105
115
125
S2
146
156
171.2
178
192
110
145
150
155
165
175
S3
86
96
111.2
118
132
44
85
90
95
105
115
S4
51
61
76.2
83
97
80
50
55
60
70
80
S5
33
51
71.2
73
87
75
32
45
50
65
75
S6
47
37
16.2
11
28
80
46
33
36
10
0
S7
64
56
38.2
26
2
95
63
50
55
32
26
由于树形图的出现,发现在站点9、11、17处出现了3条支路的情况。
则模型一中模型的变量left(j),right(j)不再适用,此时可考虑增加一个支路变量middle(j),相应的增加约束条件,在目标函数中增加相应的从站点运到铺设地点的费用。
目标函数:
约束条件:
1.钢厂的钢管产量:
2.运到各个站点的钢管刚好用完:
(j=1,…,21且j≠9,11,17)
(j=9,11,17)
3.
与
之间的钢管:
(j=1,2,…,14)
middle(9)+left(16)=42middle(11)+middle(17)=10left(17)+left(18)=130
right(17)+left(19)=190right(19)+left(20)=260right(20)+left(21)=100
4.钢管数量的非负性:
n(i,j)≥0,left(j)≥0,
right(j)≥0,middle(j)≥0,(i=1,2,…,7,j=1,2,…,21)
5.钢管数量的整数性:
n(i,j)∈N
运用数学软件Lingo编程求出
问题三的结果:
最优最小费用
(万元)
五模型优缺点
1.该模型通过简化运输网络,采用Floyd算法,具有技巧性和理论的保障。
2.模型的所有运算均由计算机程序完成,误差只由计算机产生,具有精度高的特点。
3.一般的图均可在该模型的基础上完善得出结果,故该模型具有较好的推广性。
六参考文献
[1]姜启源、谢金星《数学模型》(第三版)高等教育出版社2003
[2]《Floyd最短路算法的MATLAB程序》5a
七附录
问题一:
利用Floyd算法求解各钢管厂到各站点的最小费用路线的matlab程序:
钢厂到铁路网结点的最短距离:
n=24;a=zeros(n);
a(1,2)=450;a(2,3)=80;a(2,4)=1150;a(4,8)=1100;a(5,6)=360;a(6,7)=195;a(7,18)=20;a(8,9)=720;
a(8,18)=202;a(8,19)=1200;a(9,10)=520;a(9,20)=690;a(10,11)=170;a(11,12)=88;a(11,13)=160;
a(11,21)=690;a(12,22)=462;a(13,14)=70;a(13,15)=320;a(15,16)=160;a(16,17)=290;a(16,24)=70;
a(17,24)=30;
a=a+a';M=max(max(a))*n^2;%M为充分大的正实数
a=a+((a==0)-eye(n))*M;
path=zeros(n);
fork=1:
n
fori=1:
n
forj=1:
n
ifa(i,j)>a(i,k)+a(k,j)
a(i,j)=a(i,k)+a(k,j);
path(i,j)=k;
end
end
end
end
a,path
站点到公路网结点的最短距离:
n=32;b=zeros(n);
b(1,2)=104;b(2,3)=301;b(2,16)=3;b(3,4)=750;b(3,17)=2;b(4,5)=606;b(4,18)=600;b(5,6)=194;b(5,19)=10;b(6,7)=205;
b(6,20)=5;b(7,21)=10;b(7,22)=31;b(8,23)=12;b(8,9)=680;b(9,10)=480;b(9,24)=42;b(10,11)=300;b(10,25)=70;b(11,26)=10;
b(12,27)=10;b(13,28)=62;b(14,29)=110;b(14,30)=30;b(15,31)=20;b(15,24)=20;
b=b+b';M=mbx(mbx(b))*n^2;%M为充分大的正实数
b=b+((b==0)-eye(n))*M;
path=zeros(n);
fork=1:
n
fori=1:
n
forj=1:
n
ifb(i,j)>b(i,k)+b(k,j)
b(i,j)=b(i,k)+b(k,j);
path(i,j)=k;
end
end
end
end
b,path
将最短路程换算成运输费用的程序:
b=b*0.1;
fork=1:
300
m1(k)={k};
end
fork=1:
50
m2(k)={300+k};
m3(k)={350+k};
m4(k)={400+k};
m5(k)={450+k};
end
fork=1:
100
m6(k)={500+k};
m7(k)={600+k};
m8(k)={700+k};
m9(k)={800+k};
m0(k)={900+k};
end
fori=1:
24
forj=1:
24
switchD(i,j)
case0
a(i,j)=0;
casem1
a(i,j)=20;
casem2
a(i,j)=23;
casem3
a(i,j)=26;
casem4
a(i,j)=29;
casem5
a(i,j)=32;
casem6
a(i,j)=37;
casem7
a(i,j)=44;
casem8
a(i,j)=50;
casem9
a(i,j)=55;
casem0
a(i,j)=60;
otherwise
a(i,j)=ceil((a(i,j)-1000)/100)*5+60;
end
end
end
各个钢厂到各个站点的最少运输费用的程序
fori=1:
7
fork=1:
15
forj=8:
24
ifc(i,k)>a(i,j)+b(k,j+8)
c(i,k)=a(i,j)+b(k,j+8);
end
end
end
end
fori=1:
7
fork=1:
15
ifc(i,k)>a(i,1)+b(k,33)
c(i,k)=a(i,1)+b(k,33);
end
ifc(i,k)>a(i,6)+b(k,34)
c(i,k)=a(i,6)+b(k,34);
end
ifc(i,k)>a(i,7)+b(k,35)
c(i,k)=a(i,7)+b(k,35);
end
end
end
Lingo程序:
model:
sets:
!
七个生产厂c表示是否运输,p表示单位钢管的售价,s表示规定期限内的最大生产能力;
sch/1..7/:
p,s,c;
!
十五个站点,left表示某站点向左运输的量,right表示某站点向右运输的量,l表示相邻两个站点的距离;
zd/1..15/:
left,right,l;
!
cost表示最小单位运输费用,x表示某厂到某一处站点的运输量;
link(sch,zd):
cost,n;
endsets
data:
s=@file('data.txt');
cost=@file('data.txt');
l=@file('data.txt');
enddata
!
目标函数;
min=@sum(link(i,j):
n(i,j)*p(i)+n(i,j)*cost(i,j))+0.05*@sum(zd(j):
left(j)^2+left(j)+right(j)^2+right(j));
!
约束条件;
!
在第一个和第十五个站点分别不能向左和右铺设;
left
(1)=0;
right(15)=0;
!
c为0-1约束条件;
@for(sch(i):
@bin(c(i)));
!
运输量为整数约束;
@gin(@sum(link(i,j):
n(i,j)));
!
总生产量为铺设管道的长度;
@sum(link(i,j):
n(i,j))=5171;
!
若生产最低产量为500单位或者不生产,c(i,j)为1,n(i,j)不小于500,c(i,j)为0,n(i,j)为0;
@for(sch(i):
@sum(zd(j):
n(i,j))>=500*c(i));
!
各厂最大产量的约束;
@for(sch(i):
@sum(zd(j):
n(i,j))<=s(i)*c(i));
!
相邻两站点间管道的铺设量为站点间距;
@for(zd(j)|j#le#14:
right(j)+left(j+1)=l(j));
!
在某站点的运输量为左右铺设量的总和;
@for(zd(j):
@sum(sch(i):
n(i,j))=left(j)+right(j));
p
(1)=160;p
(2)=155;p(3)=155;p(4)=160;p(5)=155;p(6)=150;p(7)=160;
end
data.txt中的数据:
800,800,1000,2000,2000,2000,3000~
170.7160.3140.298.638.020.53.121.264.292.096.0106.0121.2128.0142.0
215.7205.3190.2171.6111.095.586.071.2114.2142.0146.0156.0171.2178.0192.0
230.7220.3200.2181.6121.0105.596.086.248.282.086.096.0111.2118.0132.0
260.7250.3235.2216.6156.0140.5131.0116.284.262.051.061.076.283.097.0
255.7245.3225.2206.6146.0130.5121.0111.279.257.033.051.071.273.087.0
265.7255.3235.2216.6156.0140.5131.0121.284.262.051.045.026.211.028.0
275.7265.3245.2226.6166.0150.5141.0131.299.277.066.056.038.226.02.0~
104,301,750,606,194,205,201,680,480,300,220,210,420,500,0~
问题三:
用Floyd算法求铁路最短距离和公路最短距离,matlab编程与问题一相同,再调用程序转化成费用,求出最小值。
Lingo程序:
model:
sets:
!
七个生产厂c表示是否运输,p表示单位钢管的售价,s表示规定期限内的最大生产能力;
sch/1..7/:
p,s,c;
!
十五个站点,left表示某站点向左运输的量,right表示某站点向右运输的量,middle表示第三个铺设方向,l表示相邻两个站点的距离;
zd/1..21/:
left,right,middle,l;
!
cost表示最小单位运输费用,x表示某厂到某一处站点的运输量;
link(sch,zd):
cost,n;
endsets
data:
p=@file('d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 钢管 订购 运输 论文