您的当前位置:首页正文

钢管的订购与运输模型

2024-02-06 来源:客趣旅游网
题目:钢管订购与运输问题

摘要

当今社会,运输是实现人和物空间位置变化的活动,与人类的生产生活息息相关。因此可以说运输与人类的历史同样悠久。本文针对钢管订购和运输的一般特点和要求,主要采用了floyd算法,利用matlab软件编程求出最短路径,在此基础上,建立整数非线性规划模型,并利用lingo软件进行求解。

由于铁路、公路运输费用函数具有不可加性,不能直接用现有的最短路径算法来求解铁路和公路交通网中任意两点间最小费用问题。故本文求解时进行分类,进行分步计算,然后再用floyd算法进行编程计算,巧妙解决了这一问题。

针对问题一,在整数非线性规划模型中,将管道铺设分为两个过程。先将钢管从钢管厂运到管道与道路交叉口,再从交叉口铺设到管道线上。这样总的运输费用就化为两个过程的运输费用之和。然后运用floyd算法,求出最小运输费用矩阵Cij。本模型是以总费用为目标函数的非线性规划模型,利用Lingo软件,求出问题一的总费用最优解为1278373万元和最优钢管订购运输方案。

针对问题二,要求对模型一进行分析,本文采取的方法是先将某个钢厂的生产上限或销价,以百分率增加,其余钢厂生产上限或销价不变,依次进行。将所得数据输入表格,进行系统的分析,由此确定了S3钢厂的销价的变化对购运计划和总费用的影响最大,确定S1钢厂的生产上限的变化对物运计划和总费用的影响最大。

针对问题三,不同之处在于问题三中的钢管铺设路线变成了树形,因此我们仍然采用问题一的建模思路,对于特殊之处进行修改。仍采用图论中的floyd算法,求得总体最小运输费用矩阵Cij。然后用lingo求解得到最优的钢管订购运输方案和总费用最优解1362301万元。

当然,由于模型局限性,建立的模型与实际情况会出现一些偏差,但并不代表该模型不可用。解决的办法是合理设置假设条件,尽量使问题简单化,使之可以运用该模型。

关键词:floyd算法 整数非线性规划 最优路径

一.问题重述

要铺设一条A1A2A15的输送天然气的主管道, 如图一所示(见下页)。经筛选后可以生产这种主管道钢管的钢厂有S1,S2,S7。图中粗线表示铁路,单细线表示公路,双细线表示要铺设的管道(假设沿管道或者原来有公路,或者建有施工公路),圆圈表示火车站,每段铁路、公路和管道旁的阿拉伯数字表示里程(单位km)。

为方便计,1km主管道钢管称为1单位钢管。

一个钢厂如果承担制造这种钢管,至少需要生产500个单位。钢厂

Si在指定期

sp限内能生产该钢管的最大数量为i个单位,钢管出厂销价1单位钢管为i万元,如

下表: i si 1 800 160 2 800 155 3 1000 155 4 2000 160 5 2000 155 6 2000 150 7 3000 160 pi 1单位钢管的铁路运价如下表: 里程(km) 运价(万元) ≤300 20 301~350 23 351~400 26 401~450 29 451~500 32 里程(km) 运价(万元) 501~600 37 601~700 44 701~800 50 801~900 55 901~1000 60 1000km以上每增加1至100km运价增加5万元。

公路运输费用为1单位钢管每公里0.1万元(不足整公里部分按整公里计算)。 钢管可由铁路、公路运往铺设地点(不只是运到点

A1,A2,,A15,而是管道全线)。

(1)请制定一个主管道钢管的订购和运输计划,使总费用最小(给出总费用)。 (2)请就(1)的模型分析:哪个钢厂钢管的销价的变化对购运计划和总费用影响最大,哪个钢厂钢管的产量的上限的变化对购运计划和总费用的影响最大,并给出相应的数字结果。

(3)如果要铺设的管道不是一条线,而是一个树形图,铁路、公路和管道构成网络,请就这种更一般的情形给出一种解决办法,并对图二按(1)的要求给出模型和结果。

1

二.问题分析

该项整个铺设管道的工程看似复杂,其实就三个问题: 1. 各个钢厂生产一定数量的钢管;

2. 将钢厂生产的钢管运送到各个铺设地点的节点; 3. 将节点处的钢管运送到主管道的铺设地点。 2.1问题一分析

求钢管的运输计划使得总费用最小,其实就是寻找一条最优路径,使运输费尽可能的小。但是由于是铁路和公路运输,故应当考虑转运问题带来的影响。则假设钢管厂将钢管运输到各个铺设地点的节点后,再向主管道两头运输。

在寻找最优路径过程中,采取floyd算法[1],将钢管厂到每个铺设地点的最短路径求出。由于量纲不同,解决方案是求出铁路上每两点之间的单位钢管运输费用,其次将公路上每相邻两点之间的单位钢管运输费用求出,运用floyd算法求出每个钢厂到每个节点的最小费用。对订购费和运输费运用lingo软件进行求解,即求得钢厂到每个节点的最小费用和相应的最优路径。 2.2问题二分析

问题二是对问题一模型的敏感性分析,针对该问题,如若只是改变某个钢厂的钢管销价、钢厂的生产上限,其他钢厂相应量不变,以此类推,则可得到变化的总费用表,对总费用表进行分析,即可得到最终结果。 2.3问题三分析

建立这个模型的主要思想是:首先将钢管从各个钢厂运往各个节点,然后再从各个节点沿铺设线路向外运输,这样总费用就分为:各个节点向厂家定货费用、运到该节点的费用和从各个节点向外铺设管道的运输费。

三.模型准备

3.1模型假设

1.忽略汽车在铺设管道过程中所装钢管越来越少而造成的运输单价的下降,认为在铺设路段还是按装载时的单价计算;

2.假定运输到某路段的钢管材料正好满足该路段铺设的需求量 ;

3.在计算运费时,沿管道铺设路线上的公路与其它普通公路相同(1单位钢管每公里0.1万元); 4.订购的钢管数量刚好等于需要铺设的钢管数量;

5.管道可由铁路、公路运往铺设地点(不只是运到点A1,A2,…, A15,而是管道全线); 6.本问题只考虑在铁路和公路上运输的问题,而不考虑在其它路径上的情况;

2

7.每个钢管厂生产的钢管均满足铺设要求,不存在退货问题;

8.模型只考虑钢管订购费用和钢管从钢管厂运送到铺设点的运输费用,而不考虑其它费用,如贮存费、转运费用等;

9.销售价和运输价不受市场价格变化的影响。 3.2符号说明

Si:第i个钢厂 i=1,2,···,7;

si:钢厂Si在指定期限内能生产该钢管的最大数量; Cij:单位钢管由钢厂Si运到Aj的最小费用; Xij:钢管厂Si生产的钢管向Aj运输的钢管数;

pi:钢厂Si生产的单位钢管的出场销价;

aj:由钢厂运输到Aj后,向主管道Aj1运的钢管数; bj:由钢厂运输到Aj后,向主管道Aj1运的钢管数; a1(1):由钢厂运输到A9后,向A16铺设的钢管数量; a1(2):由钢厂运输到A11后,向A17铺设的钢管数量; a1(3):由钢厂运输到A17后,向A19铺设的钢管数量; b1(1):由钢厂运输到A16后,向A9铺设的钢管数量; b1(2):由钢厂运输到A17后,向A11铺设的钢管数量; b1(3):由钢厂运输到A19后,向A17铺设的钢管数量;

m:1单位钢管每公里公路运输费用;

qj:Aj到Aj1之间的距离;

3

fi:钢厂Si生产的钢管数量; yi:0—1变量;

四.模型建立与求解

4.1问题一 4.1.1模型建立:

对于本问题,实际上是制定一个订购与运输计划,使得总费用最小的优化问题。其总费用包括:钢管的订购费和运输费。由于铁路和公路运输费不同,且运输费和里程相关,故需要确定最优路线,使得运输费最小。由于运费不统一,故floyd算法,不适用。解决办法是:

1. 先将图进行编号1...39;

2. 求出铁路上每两点之间的单位钢管运输费用;

3. 其次对公路上每相邻两点之间的单位钢管运输费用求出权向量; 4. 运用floyd算法(见附录五)将最小费用求出,得出钢管厂到Aj的

最小费用(见附录一)。

由于在铺设管道时必须经过点两边运输。

第一步,钢管从Si经铁路、公路到Aj的费用:

运用floyd算法计算得出Cij,故最优路径下的由Si运输到Aj总的费用为

Z1CijXij

i1j1715A1,A2,A15,假设钢管运输到节点后再向主管道

第二步,钢管订购费用

钢管厂的出厂销价是每单位钢管为pi,钢管厂生产的产量为yi,故订购费用为:

Z2pifi

i17第三步,主管道钢管运输费用

4

要计算出钢管由站点运送到铺设地点的费用Z3,需知道钢管以何种方式进行铺设。假如钢管铺设是边走边铺设,即边走边将钢管放下,这与生活实际情况不符,所以假设两铺设地点的距离很小,进行积分,则由Si运输到Aj后,在向主管道Aj两边运输的费用为

Z3m(ajx)dxm(bjx)dxmj10j10j115aj15bj15a2j2mj115b2j2

故总费用为:

ZZ1Z2Z3CijXijpifimi1j1i1j1715715a2j2mj115b2j2

求解该模型,首先要求解钢管厂到站点的运输费C,求解该运输费C必须首

先将里程转化为费用,利用floyd算法,用matlab软件进行编程后,求解出各个钢

厂到各个站点的最小费用。则:

minzCijXijpifimi1j1i1j1715715a2j2mj115b2j2

500yifisiyiy{0,1}iajbj1qj15Xijfij1s.t7 Xijajbj1a150,b10aj0bj04.1.2模型求解

将以上程序输入lingo求解(lingo程序见附表三)得到订购计划及运输计划

的最小总费用为1278373万元。

由lingo软件求得全局变量结果,订购计划见下表

i si 1 800 2 800 3 1000 4 0 5 1250 6 1320 7 0 5

由结果可知S4和S7的订购量为0,故可直接视为未生产。对于相应的运输方案则可由lingo软件求解得到,经统计后得出结果(见下表,编号见附录二)。

钢厂 运输路线 运输的钢管数 287 47 200 266 179 125 196 300 75 181 80 664 308 292 235 415 116 86 333 621 165 s176529A4 S1 S1765A5 S176A6 S1A7 S210423A3 S2 S2108765A5 S210A8 S31210423A3 S3 S312108765A5A4 S312108765A5 S312A9 S51614131210423A3 S5 S516141312108765A5 S5161413A10 S516A11 S6161413A10 S62120181413A10 S6 S621201819A12 S62120A13 S6A14 S62123A15

由表可知:各个钢管厂按照定义的路线(见附录二:管道示意图)运送一定数量的钢管到个铺设地点。从而得到各个钢管厂的生产量。再将上述订购量求和得到订购总量为:5171个单位。

6

4.2问题二

针对问题一的模型,讨论钢厂钢管的销售价格变化对购运计划、总费用的影响和钢管产量的上限变化对购运计划、总费用的影响。

1、讨论钢厂钢管的销售价格变化对购运计划和总费用的影响

当钢厂钢管的销售价格变化时对购运计划和总费用会产生的影响,为了更好的观察到每个钢厂的销售价格变化所造成的影响,本文采取比较法,即只让一个钢管厂的销售价格变化,其他的钢管厂销售价格不变。

依次假设某个钢厂的销售价格增加20%,对应的其他钢厂销售价格不发生变化,将程序输入lingo软件求解得到如下结果:

钢管厂 原总费用 s1 s2 s3 s4 s5 s6 s7

根据该表,可以由此得到S3钢厂的钢管销售价格对总费用及订购计划的影响最大。

2.对钢厂钢管的产量上限变化对购运计划和总费用的影响分析

钢管的供给量是一个不可忽略的因素,钢管的供给量也是一个重要的因素,供给量上限的大小将间接影响着总费用和购运计划。在问题一模型的基础上,由于只有S1、S2、S3的钢管购运量达到了生产上限,其余各厂的购运量都离生产上限较远,因此能够对总费用和购运计划产生影响的只有S1、S2、S3三个钢厂。

依次现假定某个钢厂的产量上限增加10%单位,而对应的其他钢厂的产量上限不变,将程序录入lingo软件求解得到如下结果:

钢管厂 原总费用 s1 s2 s3 s4 s5 s6 s7

根据该表,可以由此得到S1钢厂的钢管产量上限对总费用及购运计划的影响最

7

1278373

1278373 1278373 1278373 1278373 1278373 1278373

变化后总费

用 1303973 1303173 1307177 1278373 1291681 1294700 1278373

变化量 25600 24800 28804 0 13308 16327 0

变化率 2.003% 1.940% 2.253% 0.000% 1.041% 1.277% 0.000%

1278373 1278373 1278373 1278373 1278373 1278373 1278373

变化后总费

用 1270133 1275573 1275873 1278373 1278373 1278373 1278373

变化量 -8240 -2800 -2500 0 0 0 0

变化率 -0.645% -0.219% -0.196% 0.000% 0.000% 0.000% 0.000%

大。 4.3问题三

本问题和问题一,都实际上是制定一个订购与运输计划,使得总费用最小的优化问题。其总费用包括:钢管的销价和运输费。由于铁路和公路运输费不同,运输费和里程相关,故需要确定最优路线,使得运输费最小。

然而由于运输费不统一,故floyd算法,不适用,为解决该问题,首先是先解决该问题。故解决办法是求出铁路上每两点之间的单位钢管运输费用,其次将公路上每相邻两点之间的单位钢管运输费用求出。其次假若树的两相邻节点之间既有铁路又有公路,比较它们之间的大小,将最小的作为权向量中的元素,运用floyd算法将最小费用求出。 4.3.1模型建立

该模型的建立与第一个模型建立相似。但还是有不同之处,由于节点增加到21个,故相应条件作出变化。其floyd算法程序作出相应变化(见附表六),其从钢管厂到Aj的最小费用(见附表二)也相应求出。故其总费用为

721721zCijXijpifimi1j1i1j1a2j2mj121b2j2mi13a1(2i)2mi132b1(i)2

故以最小费用为目标的目标函数为:

minzCijXijpifimi1j1i1j1721721a2j2mj121b2j2mi13a1(2i)2mi132b1(i)2

故其约束条件为:

8

500yifisiyiyi{0,1}ajbj1qj21fiXijj17Xijajbj,j9,11,17i1a1(1)b1(1)42a1(2)b1(2)10s.ta1(3)b1(3)1907x(i,9)a1(1)a(9)b(9)i17x(i,11)a1(2)a(11)b(11)i17x(i,17)a1(3)a(17)b(17)i1a210,a150,b10 aj0bj04.3.2模型求解

运用lingo求解(lingo程序见附表四)得到该主管道的订购和运输总费用最

小为1362301万元。

由lingo软件求得的订购计划见下表: S1 800 S2 800 S3 1000 S4 0 S5 1070 S6 2000 S7 0 由表上可以看出,只有S1、S2、S3、S6的钢管购运量达到了生产上限,其余的钢厂都还未达到上限,另外S4和S7都未有订购计划。

由lingo软件求解得到钢管运输路线及相应运输计划表(编号见附录三): 钢厂 钢管运输路线 运输的钢管数 149 185 200 9

S1765A5A4 S1 S1765A5 S176A6

S1A7 S210421A2 265 179 113.8 186.5 20.5 300 82.2 132.5 121.4 664 312 288 31 380 60 320 111 393 571 165 80 260 10

S210423A3 S2 S2108765A5A4 S2108765A5 S210A8 S3A1610423A3 S3A16108765A5A4 S3 S3A16108765A5 S3A16A9 S5A171413A1610423A3 S5A171413A16108765A5 S5 S5A171413A10 S5A17A11 S5A17 S6A20A181413A10 S6A20A19A12 S6A20A13 S6 S6A14 S62123A15 S6A20A18 S6A20

S6A21 100 由该表可知:各个钢管厂按照定义的路线(见附录二:管道示意图)运送一定数量的钢管到个铺设地点。从而得到各个钢管厂的生产量。

其次再将上述订购量求和得到订购总量为:5670个单位。

五.结果分析

由于总费用由订购费用和运输费两部分组成,运输费又由一般线路上的运输费和铺设管道上的运输费组成。我们将其分段求出局部最优,然后综合考虑,这种解法不容易得到全局最优解,经过多次优化,最终使结果趋于稳定。

另外,借助matlab软件及Lingo软件进行了求解,与此同时进行了图表分析,得出相应结论,使结果更具有说服力。

六.模型评价

6.1模型优点:

本文利用了邻接矩阵求加权图的最短路径,采用将公路和铁路路径统一转化为费用问题进行处理,使得求最短路径转化为求最小费用,利用floyd算法编程求解出最优答案。

在运用整数非线性整数规划求解最优值,引用了决策变量,思路清晰,易于理解。模型综合使用matlab,lingo软件计算出了优化数据,较准确可靠。

在讨论问题二的时候,采取使用变化率的方法,得出结论,使结果更具有说服力。而且建立了图表,使结果更直观。

在模型二中,作一般性讨论,使模型更具一般化。模型一可以进一步用图论的知识找出具体线路根据具体情况进一步改进,模型二在模型一的基础之上加之图二的具体情况建立一般性还有待优化,可以进一步优化树状图的思想使模型三的结果更优化。 6.2模型缺点

1.在求解钢厂钢管的销价变化对购运计划和总费用的影响,以及求解钢厂产量上限变化对购运计划和总费用影响过程中,取值不够多,造成结果偏差。 2.另外在引用决策变量时,造成程序运行过慢,求解全局变量时,运行时间过长,造成时间的浪费。

3.从公路上通过还要考虑到过路费的问题,这也需要考虑到总费用当中。 6.3模型改进:

1.在求解钢厂的钢管销价及产量上限对费用的影响过程中,多取几个点,取点尽量密集,尽量使结果误差减小;

11

2.引用的决策变量可以省去,用逻辑判断,将钢管的订购量限定在0或者大于500,这样程序运行速度将大大提高。

七.模型推广

管道运输在当今运输领域内已经占据一定的地位,管道运输以其自身独特的优势,在未来的交通运输领域中必将有更大的发展空间。该模型对管道路径的设置给出了一般性的解答,对于解决管道运输问题有一定的规范作用。管道的铺设与铁路运输轨道设计具有很相似的原理,所以该模型还可以推广到铁路运输方面。 当然,该模型在交通运输领域的应用领域十分广泛,在其他方面也有很好的利用价值,比如西气东输工程,当然实际情况远远要比该模型的情况要复杂的多,但并不代表该模型不适用,解决办法是合理的设置假设,使之能合理有效利用该模型解决问题,这必定会带来更多的经济利益。

八.参考文献

[1]百度百科[OL],http://baike.so.com/doc/5450540.html;

[2]姜启源,谢金星,叶俊,数学模型[M],北京:高等教育出版社,2010;

九.附录

附录一

模型一的钢管厂到Aj最短路径下的最低运费表 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 12

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 260.7 250.3 235.2 216.6 156 140.5 128.1 116.2 84.2 61 47 37 16.2 11 28 S7 275.7 265.3 245.2 226.6 166 150.5 141 131.2 99.2 76 64 56 38.2 26 2

附录二

模型二的钢管厂到Aj最短路径下的最低运费表 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 A16 A17 A18 A19 A20 A21 附录二

模型一管道示意图:

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 60 95 100 105 115 125 S2 215.7 205.3 190.2 171.6 111 95.5 86 71.2 114.2 142 146 156 171.2 178 192 110 145 150 155 165 175 S3 230.7 220.3 200.2 181.6 121 105.5 96 86.2 48.2 82 86 96 111.2 118 132 44 85 90 95 105 115 S4 260.7 250.3 235.2 216.6 156 140.5 131 116.2 84.2 62 51 61 76.2 83 97 80 50 55 60 70 80 S5 255.7 245.3 225.2 206.6 146 130.5 121 111.2 79.2 57 33 51 71.2 73 87 75 32 45 50 65 75 S6 260.7 250.3 235.2 216.6 156 140.5 128.1 116.2 84.2 61 47 37 16.2 11 28 80 46 33 36 10 0 S7 275.7 265.3 245.2 226.6 166 150.5 141 131.2 99.2 76 64 56 38.2 26 2 95 63 50 55 32 26 13

注:带 符号为运输路径标号。 附录三

模型二管道示意图

注:带 符号为运输路径标号。

14

附录三:

模型一lingo程序:

sets:

mill/1..7/:s,p,f,y; junction/1..15/:a,b,q; link(mill,junction):x,c; endsets data: m=0.1;

s=800 800 1000 2000 2000 2000 3000; p=160 155 155 160 155 150 160;

c=@ole('d:\\练习一1.2.xls','cc');

q=104 301 750 606 194 205 201 680 480 300 220 210 420 500 0; @ole('d:\\练习一1.2.xls','a')=x; @ole('d:\\练习一1.2.xls','b')=f; @ole('d:\\练习一1.2.xls','d')=a; @ole('d:\\练习一1.2.xls','e')=b; enddata

min=@sum(link(i,j):c(i,j)*x(i,j))+@sum(mill(i):p(i)*f(i))+@sum(junction(j):(a(j)^2)/2)*m+@sum(junction(j):(b(j)^2)/2)*m; a(15)=0; b(1)=0;

@for(mill(i):500*y(i)<=f(i)); @for(mill(i):f(i)<=s(i)*y(i));

@for(junction(j)|j#lt#15:a(j)+b(j+1)=q(j)); @for(mill(i):@sum(junction(j):x(i,j))=f(i)); @for(junction(j):@sum(mill(i):x(i,j))=a(j)+b(j)); @for(mill:@bin(y));

@for(junction(j):a(j)>=0); @for(junction(j):b(j)>=0); end

附录四:模型三lingo程序:

sets:

mill/1..7/:s,p,f,y; point/1..3/:a1,b1; junction/1..21/:a,b,q; link(mill,junction):x,c; endsets data: m=0.1;

s=800 800 1000 2000 2000 2000 3000; p=160 155 155 160 155 150 160;

15

c=@ole('d:\\练习一3.1.xls','cc');

q=104 301 750 606 194 205 201 680 480 300 220 210 420 500 0 0 130 0 260 100 0; enddata

min=@sum(link(i,j):c(i,j)*x(i,j))+@sum(mill(i):p(i)*f(i))+@sum(junction(j):(a(j)^2)/2)*m

+@sum(junction(j):(b(j)^2)/2)*m+@sum(point(k):(a1(k)^2)/2)*m+@sum(point(k):(b1(k)^2)/2)*m; a(21)=0; b(1)=0;

@for(mill(i):500*y(i)<=f(i)); @for(mill(i):f(i)<=s(i)*y(i));

@for(junction(j)|j#lt#21:a(j)+b(j+1)=q(j)); @for(mill(i):@sum(junction(j):x(i,j))=f(i));

@for(junction(j)|j#ne#9#and#(j#ne#11)#and#(j#ne#17):@sum(mill(i):x(i,j))=a(j)+b(j)); a1(1)+b1(1)=42; a1(2)+b1(2)=10; a1(3)+b1(3)=190;

@sum(mill(i):x(i,9))=a1(1)+a(9)+b(9); @sum(mill(i):x(i,11))=a1(2)+a(11)+b(11); @sum(mill(i):x(i,17))=a1(3)+b1(2)+a(17)+b(17); @for(mill:@bin(y));

@for(junction(j):a(j)>=0); @for(junction(j):b(j)>=0); end

附录五:模型一floyd算法matlab程序1

a=xlsread('d:\\练习一1.2.xls','sheet1','B2:AN40'); a(find(isnan(a)))=inf; D=a;n=length(D); for i=1:n for j=1:n R(i,j)=i; end end for k=1:n for i=1:n for j=1:n

if D(i,k)+D(k,j)16

end

D=D([8 9 11 15 17 22 24],25:39) R

xlswrite('d:\\练习一1.2.xls',D,'sheet2'); xlswrite('d:\\练习一1.2.xls',R,'sheet3');

附录六,模型一floyd算法matlab程序2

a=xlsread('d:\\练习一1.1.xls','sheet1','B2:Y25'); a(find(isnan(a)))=inf; D=a;n=length(D); for i=1:n for j=1:n R(i,j)=i; end end for k=1:n for i=1:n for j=1:n

if D(i,k)+D(k,j)elseif D(i,j)>300&&D(i,j)<=500 D(i,j)=20+ceil((D(i,j)-300)/50)*3; elseif D(i,j)>500&&D(i,j)<=600 D(i,j)=37;

elseif D(i,j)>600&&D(i,j)<=700 D(i,j)=44;

elseif D(i,j)>700&&D(i,j)<=800 D(i,j)=50; elseif D(i,j)>800

D(i,j)=50+ceil((D(i,j)-800)/100)*5; end end end

17

D

xlswrite('d:\\练习一1.1.xls',D,'sheet2'); xlswrite('d:\\练习一1.1.xls',R,'sheet3');

附录七:模型二floyd算法matlab程序

a=xlsread('d:\\练习一3.1.xls','sheet1','B2:AN40'); a(find(isnan(a)))=inf; D=a;n=length(D); for i=1:n for j=1:n R(i,j)=i; end end for k=1:n for i=1:n for j=1:n

if D(i,k)+D(k,j)A=D([8 9 11 15 17 22 24],25:39);

B=D([8 9 11 15 17 22 24],[12 16 18 19 20 22]); D=[A,B]; R

xlswrite('d:\\练习一3.1.xls',D,'sheet2'); xlswrite('d:\\练习一3.1.xls',R,'sheet3');

18

19

因篇幅问题不能全部显示,请点此查看更多更全内容