运输问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

运输问题

摘要

本文根据运输公司提供的各个客户点间的路程矩阵,利用Dijkstra 算法、哈密尔顿回路以及贪婪算法求解最短路径问题。

问题一,运用Dijkstra 算法求出客户2到达客户10的最短路径,用matlab 编程求的客户2到达客户10的最短路径为238910V V V V V →→→→,最短距离为85公里。 问题二,先利用哈密尔顿回路法,求解从客户1出发给10个客户配送完货物后再回到客户1的最短行使路线。利用matlab 编程求出路径,根据所得结果利用枚举法进行改进,得到最优路径。距离为225公里,行驶路线:

157634891021V V V V V V V V V V V →→→→→→→→→→

问题三,由题意可得至少需要两辆货车送货。利用贪婪算法的思想,先满足局部最优,对结果进行逐步优化。在利用Dijkstra 算法求解返回客户1的最短路径。得到往返路线,货车一路程为135公里,配送货物量为48单位,路线图:

25153015201020

15234891(8)(7)(13)(6)(9)(5)V V V V V V V V −−→−−→−−→−−→−−→−−→−−→ 货车二线路图:3025352035

1769101(10)(15)(12)(9)V V V V V V −−

→−−→−−→−−→−−→ 路程为145公里,配送货物量为46单位。两辆货车总路程280公里。

问题四,由题意需要四辆小货车运货。首先,运用Dijkstra 算法,求解1V 到其它客户的最短距离。利用matlab 编程求得结果。其次,利用 对所得结果进行检验优

化,得到货车行驶路径。最后,根据四辆货车行驶距离,得到运输费用。 货车一:载货量20,路径1438V V V V →→→,距离80公里,耗费100+80=180。 货车二:载货量20,路径152V V V →→,距离40公里,耗费100+40=140。 货车三:载货量25,路径176V V V →→,距离55公里,耗费100+55=155。 货车四:载货量21,路径1910V V V →→,距离70公里,耗费100+70=170。 总路程为245公里,总耗费:400+245=645。

本文所用的算法具有完善的理论支持,所的结果比较优化。

关键词:Dijkstra 算法 哈密尔顿回路法 贪婪算法 枚举法

1.问题重述

某运输公司为10个客户配送货物,假定提货点就在客户1所在的位置,从第i 个客户到第j 个客户的路线距离(单位公里)用下面矩阵中的(,)i j (,1,,10)i j = 位置上的数表示(其中∞表示两个客户之间无直接的路线到达)。

123456789

10

1050402530502500303550603300153050256044015045305520406552515450601030556503030600255535730501025030456086025203055300109204015254502010352010452060300∞∞∞∞⎡⎢∞∞∞∞⎢⎢∞∞∞⎢∞⎢⎢∞∞⎢∞∞⎢⎢∞∞⎢∞∞⎢∞∞∞∞∞⎣⎤

⎥⎥

⎥⎥⎥⎥⎥⎥⎥⎥⎥⎢⎥⎢⎥⎢⎥⎦

1、运送员在给第二个客户卸货完成的时候,临时接到新的调度通知,让他先给客户10送货,已知送给客户10的货已在运送员的车上,请帮运送员设计一个到客户10的尽可能短的行使路线。

2、现运输公司派了一辆大的货车为这10个客户配送货物,假定这辆货车一次能装满10个客户所需要的全部货物,请问货车从提货点出发给10个客户配送完货物后再回到提货点所行使的尽可能短的行使路线?对所设计的算法进行分析。

3、现因资源紧张,运输公司没有大货车可以使用,改用两辆小的货车配送货物。每辆小货车的容量为50个单位,每个客户所需要的货物量分别为8,13,6,9,7,15,10,5,12,9个单位,请问两辆小货车应该分别给那几个客户配送货物以及行使怎样的路线使它们从提货点出发最后回到提货点所行使的距离之和尽可能短?对所设计的算法进行分析。

4、如果改用更小容量的车,每车容量为25个单位,但用车数量不限,每个客户所需要的货物量同第3问,并假设每出一辆车的出车费为100元,运货的价格为1元/公里(不考虑空车返回的费用),请问如何安排车辆才能使得运输公司运货的总费用最省?

2.问题假设

(1)假设矩阵中给出了所有可能的路线选择。 (2)假设每条路线都畅通。

(3)不考虑运输车出现故障或事故对其运输量的影响。

3.符号说明

V : 代表客户端

ij l : 第i 个客户到第j 个客户的距离

C : 哈密尔顿初始圈

ij C : 哈密尔顿改良圈

P : 永久性标号 T : 试探性标号

4.问题分析

4.1问题的背景的分析

在生产活动和日常生活中,人们常需要将某些物品(包括人们自身)由一个空间位置移动到另一个空间位置,这就产生了运输。随着经济的发展,“运输”变得越来越复杂,运输量有时非常巨大,科学组织运输就显得十分重要,才能使运输距离最短,费用最少。

4.2问题一的分析

该问主要研究了有关运输问题中运输距离最短的问题。当运输员给客户2送完货时,接到通知先将货物运往10号客户。为求出客户2到达客户10的最短路径,运用Dijkstra 算法,将客户2作为出发点用s v 表示,赋予永久性标号P ,()0s P v =,其余各点均给试探性标号T ,()i T v =+∞。用matlab 编程求解出客户2到其他客户的最短距离。 4.3问题二的分析

该问求从客户1出发给10个客户配送完货物后再回到客户1所行使的尽可能短的行使路线。先利用哈密尔顿回路法,以客户1为出发点任取一个Hamilton 圈C ,设为初始圈,然后对初始圈进行改良。用m a tla b 编程求解最短路程,对所的结果利用枚举法进行检验优化。 4.4问题三的分析

该问题是考虑如何将两辆小货车的货物运送给那些客户使往返距离最短。每辆小货车的容量为50个单位,送货总量为94单位,至少需要两辆货车运输货物。利用贪婪算法的思想,先满足局部最优。两辆小货车分别从客户1出发,选择出最近的两条路线。到达后,同样分别选择距离最短病的重复的路线,以此类推直至给10个客户配送完货物。利用Dijkstra 算法求解返回客户1的最短路径。并用枚举法进行检验。

相关文档
最新文档