信息工程学院 数学建模—垃圾运输问题的求解及源代码

上传人:简****9 文档编号:111805609 上传时间:2019-11-03 格式:DOC 页数:15 大小:228.02KB
返回 下载 相关 举报
信息工程学院 数学建模—垃圾运输问题的求解及源代码_第1页
第1页 / 共15页
信息工程学院 数学建模—垃圾运输问题的求解及源代码_第2页
第2页 / 共15页
信息工程学院 数学建模—垃圾运输问题的求解及源代码_第3页
第3页 / 共15页
信息工程学院 数学建模—垃圾运输问题的求解及源代码_第4页
第4页 / 共15页
信息工程学院 数学建模—垃圾运输问题的求解及源代码_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《信息工程学院 数学建模—垃圾运输问题的求解及源代码》由会员分享,可在线阅读,更多相关《信息工程学院 数学建模—垃圾运输问题的求解及源代码(15页珍藏版)》请在金锄头文库上搜索。

1、垃圾运输问题* 信息工程学院 计算机应用专业 *摘要:本文通过对垃圾站点之间分布位置的分析,构造出解决垃圾运输问题的模型。首先,我们对所给数据绘制其xy散点图,根据题设提出自己假设的条件,。其次,结合已有的模型,对垃圾点之间的位置分布关系进行讨论及证明,从而确定最基本的行车路线原则。然后,编写c语言程序,利用计算机进行算法的模拟,从而搜索出各运输车辆的数量以及最佳的分配方案,使得(1)在不考虑铲车的情况下运输费用最少、(2)考虑在有铲车的模型中的最佳解、(3)对不同运输量的运输车进行合理分配调度,使得总费用最少。根据我们确定的解题思路,最终我们得到了一组可行解,如下:第一问,求得全部的运输费用

2、是2340.97元,花费的总时间是21.95小时;第二问:求得需要3辆铲车;第三问:求得总的运输费用是2323.77 元。其中8吨的车4辆,6吨的车3辆,4吨的车3辆。具体的路线分配图,车辆调度图见正文部分。本文讨论的解题方法模型简单,得出的结果只是一个近似最优解的可行解,所以还有很大的改进空间,比如我们可以采用更加智能的算法等。 关键词:计算机算法模拟 优化1问题的重述某城区有 37 个垃圾集中点,每天都要从垃圾处理厂(第 38号节点)出发将垃圾运回。现有一种载重 6 吨的运输车。每个垃圾点需要用 10 分钟的时间装车,运输车平均速度为 40 公里小时(夜里运输,不考虑塞车现象);每台车每日

3、平均工作 4 小时。运输车重载运费 2 元 / 吨公里;运输车和装垃圾用的铲车空载费用 0.5 元 / 公里;并且假定街道方向均平行于坐标轴。请你给出满意的运输调度方案以及计算程序。问题:1.运输车应如何调度(需要投入多少台运输车,每台车的调度方案,运营费用)2.铲车应如何调度(需要多少台铲车,每台铲车的行走路线,运营费用)3.如果有载重量为 4 吨、 6 吨、 8 吨三种运输车,又如何调度?2模型的基本假设与符号说明(一)基本假设1车辆在拐弯时的时间损耗忽略。2车辆在任意两站点中途不停车,保持稳定的速率。3只要平行于坐标轴即有街道存在。4无论垃圾量多少,都能在十分钟内装上运输车。5 每个垃圾

4、站点的垃圾只能由一辆运输车运载。6. 假设运输车、铲车从A垃圾站到B垃圾站总走最短路线。7. 任意两垃圾站间的最短路线为以两垃圾站连线为斜边的直角三角形的两直角边之和。8. 建设在运输垃圾过程中没有新垃圾入站。9. 假设铲车、运输车载工作途中不发生意外也不遇到意外;10. 各垃圾站每天的垃圾量相对稳定。(二)符号说明|A| 表示A点到原点的距离,恒正|B| 表示B点到原点的距离,恒正|A-B| 表示A,B两点之间的距离,恒正Ta 表示A点所在地的垃圾量cost:运费;time:时间消耗;装的足够多 运输车当前的载重离限载不大于0.55吨(垃圾点的最小垃圾量)序数号 所在点的编号3模型的建立垃圾

5、运输问题最终可以归结为最优路径搜索问题,但注意到此图为森林而不是树,不能直接套用Krusal,Prim等现成算法,于是根据具体问题设计出随机下山法,用计算模拟搜索,可以搜寻到令人满意的可行解。先注意到两点的情况,设两点分别为A(x1,y1),B(x2,y2)。主要有以下两种情况:一A,B明显有先后次序。-递减状态(如图1) 不妨设x1x2, y1y2,不难看出A在B的后方,即A比B远。对于前方参考点O,要将A,B对应垃圾点的垃圾全部取回再返回O,一共有三种方式:1O-A-O, O-B-O单独运输。这种情况下,总的路程消费等于空载运行费用(0.4元/公里)与装载时运行费用(1.8元/公里吨)的总

6、和。所需的总时间等于车辆所走过的总路程与速度(40公里/小时)的比值再加上在A,B两点停留的时间(每个垃圾点上停留了10分钟,1/6小时),于是有:Cost = 0.4*|A| + 1.8*|A|*Ta + 0.4*|B| + 1.8*|B|*TbTime = (2*|A| + 2*|B|)/40 + 1/6*22. O-A-B-O 先远点再近点,即先空载至最远处,装完A点垃圾后再返回至B,再回O点,有: Cost = 0.4*|A| + 1.8*|A-B|*Ta +1.8*|B|*(Ta+Tb) = 0.4*|A| + 1.8*|A|*Ta + 1.8*|B|*Tb Time = 2*|A|

7、/40 + 1/6*23. O-B-A-O 先近点在远点,即先装B点垃圾,然后载着B点的垃圾奔至A点,再回O点,有: Cost= 0.4*|B| + 1.8*|A-B|*Tb + 1.8*|A|*(Ta+Tb) = 0.4*|B| + 1.8*|A|*Ta + 1.8*|B|*Tb + 1.8*|A-B|*2*Tb Time = 2*|A|/40 + 1/6*2比较以上三种情况,远近点的遍历顺序,可以看出,“先远后近”绝对比“先近后远”在花费钱的数量上要少的多,省出1.8*|A-B|*2*Tb这部分的钱主要是车载着B点的垃圾奔到A点再返回B点。而又注意到两者的时间花费是相等的。所以在其余同等的

8、情况下选择“先远后近”。考虑到时间上单独运输比其余的两种运输要大的多,多一一倍,而且花费的钱仍不比“先远后近”省,还多了0.4*|B|,所以一般情况下,不采用单独运输。二A,B两点没有明显先后顺序。 -并邻状态(如图2)还是一共有三种情况: 1O-A-O, O-B-O单独运输。这种情况下,跟A,B两点有先后顺序中的情况完全相同,即有:Cost = 0.4*|A| + 1.8*|A|*Ta + 0.4*|B| + 1.8*|B|*Tbtime = (2*|A| + 2*|B|)/40 + 1/6*22O-A-B-OCost = 0.4*|A| + 1.8*|A-B|*Ta + 1.8*|B|*(

9、Ta+Tb) -1Time = (|A| + |A-B| + |B|)/40 + 1/6*23.O-B-A-OCost = 0.4*|B| + 1.8*|A-B|*Tb + 1.8*|A|*(Ta+Tb) -2Time = (|A| + |A-B| + |B|)/40 +1/6*2相比之下,清晰可见并邻状态下的单独运输所花的费用最少,所以在不要求时间的情况下对于并邻两点,采用单独运输的方式最节约钱。用式与式相减除以1.8, 得到如下判断式:|A-B|*(Ta-Tb) + (Ta+Tb)*(|B|-|A|) -上式 A-B-O;上式 0时, 选 O-B-A-O;上式 = 0时, 任意选上述两路线

10、。三两点选择趋势的讨论。 (如图3)由图中看到B,C两点没有明显的先后顺序,属于并邻点。因为当运输车载重行驶时费用会成倍的增长,比其空载时所花费用要大的多,所以排除A-B-C或A-C-B这样的一次经过3点的往返路线,仅选择B,C中的某一点与A完成此次运输,将另一点留到下次。那么A点选择B还是C呢?不妨假设|B|C|,即B点离原点的距离比C点的更远,因为A在B,C之后,所以也就是B点离A点更近。这样,此次的运输我们更趋向于选择A-B,因为就这三点而论,A无论是选B还是C,三点的垃圾总要运完,所以花费的钱是一样的。但选择A-B后,下次运输车运C点垃圾时就无需跑的更远。四关于垃圾点的垃圾是否一次清除

11、的讨论(以6吨车例)由假设2知,每天的垃圾必须清除完毕,全部运往37点。这里说的一次清除问题不是指一天,而是指当一辆运输车已经装载了足够多的垃圾,不能完全清理下一个垃圾点的时候,车在下一个站点“停还是不停”的问题。例如,一辆运输车选择了30-26-18-35-20的路线(即先将空车开往30,清理装载30点的垃圾,然后依次到26,18,35,20),它从20返回时车已经装载了5.8吨垃圾,仍可以装0.2吨(小于垃圾点垃圾量的最小值0.5,称这种情况为“装的足够多”)。在20点下方仍有不少的点,但肯定不能将下面的任意点的垃圾装完,那么此车是直接返回37点呢,还是继续装直至车装满为止呢?我们判断前者

12、更好,就是车在装的足够多的情况下应该直接返回原点(37点)。这是因为对于下一垃圾点(假设为A点)内的垃圾而言,无论是一次装完还是分两次装完,将它们运回所花费用是恒定的,等于1.8*Ta*|A|。整体而言,两者花费的钱是相等的,但分两次装要多花10分钟的装车时间,所以选择前者。综上所述,得出搜索的基本原则:1在两点递减的情况下,不采用单独运输;2在其余同等的情况下选择“先远后近”;3不要求时间的情况下对于并邻两点,采用单独运输的方式最节约钱;一般情况下用式3作判断;4车在装的足够多的情况下应该直接返回原点(37点);5每一次布局和每条线路的搜索不妨由剩下未搜点中的最大值开始。4模型的求解问题一在

13、不考虑铲车的情况下。首先根据题所给的数据画出散点图求得总运营费用为2345.4元,总时间为22.5小时,求解程序如附录二,运输车的最优路线如下图所示:表一:线路的费用和所用时间站点序号空载费用所花时间一号线0-30-29-27-3-018.42.3+2/3二号线0-28-26-32-25-5-017.62.2+5/6三号线0-36-23-33-21-016.82.1+2/3四号线0-24-18-35-15-013.61.7+2/3五号线0-34-17-16-2-0121.45+2/3六号线0-20-11-10-011.21.4+1/2七号线0-19-13-8-010.81.35+1/2八号线0

14、-14-7-4-1-08.81.1+1/2九号线0-22-08.41.05+1/6十号线0-12-9-081+1/3十一号线0-31-6-06.80.85+1/3问题二.铲车加入后的讨论 当加入铲车后,我们应该让铲车将就运输车,因为铲车的空载费用为0.4元/小时.铲车加入垃圾后为1.8元/公里小时.若改变一条线,则会造成几公里的误差,甚至十几公里的误差,这一项的数目就很大.若是铲车将就运输车,则即使路线误差大一点,但所需费用也不会变得很大.故我们以第一个方案的路线为准.这时我们只要保证前一条线路的末节点,与后一条线路的首节点的路程差分别相加之和最小即可.根据这一思路.我们设一个结构数组变量,他有11个元素(代表11条元素).其中每个元素里面有两个结构成员,这样一个元素就代表一条线路.对这11个元素进行排列,这样每一个排列就是一个线路方案.这样便能通过排列,遍历每种方案.就求出最优解.再考虑了最短路径的情况下,由于要考虑和各车在时间地衔接,以及尽量要在规定的时间内作完,我们进行相应的调整。这部分由于考虑到计算复杂性,我们用手工调整,由于前面有最短路径的保证,我们调整的结果接近最优解。程序代码如附录三【源码】程序运行结果见附录三【结果】

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号