数学建模--运输问题

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

数学建模--运输问题

运输问题

摘要

本文主要研究的是货物运输的最短路径问题,利用图论中的Floyd算法、Kruskal算法,以及整数规划的方法建立相关问题的模型,通过matlab,lingo 编程求解出最终结果。

关于问题一,是一个两客户间最短路程的问题,因此本文利用Floyd算法对其进行分析。考虑到计算的方便性,首先,我们将两客户之间的距离输入到网络权矩阵中;然后,逐步分析出两客户间的最短距离;最后,利用Matlab软件对其进行编程求解,运行得到结果:2-3-8-9-10总路程为85公里。

关于问题二,运输公司分别要对10个客户供货,必须访问每个客户,实际上是一个旅行商问题。首先,不考虑送货员返回提货点的情形,本文利用最小生成树问题中的Kruskal算法,结合题中所给的邻接矩阵,很快可以得到回路的最短路线:1-5-7-6-3-4-8-9-10-2;然后利用问题一的Floyd算法编程,能求得从客户2到客户1(提货点)的最短路线是:2-1,路程为50公里。即最短路线为:1-5-7-6-3-4-8-9-10-2-1。但考虑到最小生成树法局限于顶点数较少的情形,不宜进一步推广,因此本文建立以路程最短为目标函数的整数规划模型;最后,利用LINGO软件对其进行编程求解,求解出的回路与Kruskal算法求出的回路一致。

关于问题三,是在每个客户所需固定货物量的情况下,使得行程之和最短。这样只要找出两条尽可能短的回路,并保证每条线路客户总需求量在50个单位以内即可。因此我们在问题二模型的基础上进行改进,以货车容量为限定条件,建立相应的规划模型并设计一个简单的寻路算法,对于模型求解出来的结果,本文利用Kruskal算法结合题中所给的邻接矩阵进行优化。得到优化结果为:第

一辆车:1-5-2-3-4-8-9-1,第二辆车:1-7-6-9-10-1,总路程为280公里。

关于问题四,在问题一的基础上我们首先用Matlab软件编程确定提货点到每个客户点间的最短路线,然后结合一些限定条件建立一个目标模型,设计一个较好的解决方案进行求解可得到一种很理想的运输方案。根据matlab运行结果分析得出4条最优路线分别为:1-5-2,1-4-3-8,1-7-6,1-9-10。最短总路线为245公里,最小总费用为645。

关键词: Floyd算法 Kruskal算法整数规划旅行商问题

一、问题重述

某运输公司为10个客户配送货物,假定提货点就在客户1所在的位置,从

第i 个客户到第j 个客户的路线距离(单位公里)用下面矩阵中的(,)i j (,1,,10)i j =位置上的数表示(其中∞表示两个客户之间无直接的路线到达)。

1

234567891010

5040253050250

03035506033001530502560440

150453055204065525154506010305565030306002555357305010250304560860252030553001092040152545020103520104520

60300∞∞∞∞⎡⎢∞∞∞∞⎢⎢∞∞∞⎢∞⎢⎢∞∞⎢∞

∞⎢⎢∞∞⎢∞

∞⎢∞∞∞∞∞⎣⎤⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎢⎥⎢⎥⎢⎥⎦

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元/公里(不考虑空车返回的费用),请问如何安排车辆才能使得运

输公司运货的总费用最省?

二、问题分析

关于问题一,是一个两客户间最短路程的问题,因此本文利用Floyd 算法

对其进行分析。考虑到计算的方便性,首先,我们将两客户之间的距离输入到

网络权矩阵中;然后,逐步分析出两客户间的最短距离;最后,利用Matlab 软件对其进行编程求解。

关于问题二,运输公司分别要对10个客户供货,必须访问每个客户,实际

上是寻找一条最短的行车路线。首先,不考虑送货员返回提货点的情形,本文

利用最小生成树问题中的Kruskal 算法,结合题中所给的邻接矩阵,很快可以

得到回路的最短路线:21098436751v v v v v v v v v v →→→→→→→→→;然后利用问题一的Floyd 算法和程序,能求得从客户2到客户1(提货点)的最短路线是:12v v →,路程为50公里。但考虑到最小生成树法局限于顶点数较少的情形,不宜进一步推广,因此本文又根据路程最短建立以路程最短为目标函数

的整数规划模型;最后,利用LINGO 软件对其进行编程求解。

关于问题三,是在每个客户所需固定货物量的情况下,使得行程之和最短。

这样只要找出两条尽可能短的回路,并保证每条线路客户总需求量在50个单位

以内即可。因此我们在问题二模型的基础上进行改进,以货车容量为限定条件,建立相应的规划模型并设计一个简单的寻路算法,对于模型求解出来的结果,

本文利用Kruskal 算法结合题中所给的邻接矩阵进行优化。

关于问题四,我们首先用Matlab 软件编程确定提货点到每个客户点间的最

短路线,然后结合一些限定条件建立一个目标模型,设计一个较好的解决方案

进行求解可得到一种很理想的运输方案。

三、模型假设

1.假设客户级别平等;

2.假设不考虑装卸车费用;

3.假设货车不发生意外事故;

4.假设运输过程中货物无损失;

四、符号说明

:ij v 不同的客户102.1;102.1 ==j i ;

:ij l 从客户i v 到客户j v 的距离;

⎩⎨⎧=;个客户无直接的路到达

个客户到第从第:;个客户有直接的路到达个客户到第从第:j i j i x ij 01 个客户的距离个客户到第从第j i c ij :;

个客户所需的货物量第j a j :;

:z 总路程;

相关文档
最新文档