新版数学建模—垃圾运输问题的求解及源代码

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

垃圾运输问题

*** 信息工程学院计算机应用专业 **********

摘要:本文通过对垃圾站点之间分布位置的分析,构造出解决垃圾运输问题的模型。

首先,我们对所给数据绘制其xy散点图,根据题设提出自己假设的条件,。

其次,结合已有的模型,对垃圾点之间的位置分布关系进行讨论及证明,从而确定最基本的行车路线原则。

然后,编写c语言程序,利用计算机进行算法的模拟,从而搜索出各运输车辆的数量以及最佳的分配方案,使得(1)在不考虑铲车的情况下运输费用最少、(2)考虑在有铲车的模型中的最佳解、(3)对不同运输量的运输车进行合理分配调度,使得总费用最少。

根据我们确定的解题思路,最终我们得到了一组可行解,如下:

第一问,求得全部的运输费用是2340.97元,花费的总时间是21.95小时;

第二问:求得需要3辆铲车;

第三问:求得总的运输费用是2323.77 元。其中8吨的车4辆,6吨的车3辆,4吨的车3辆。

具体的路线分配图,车辆调度图见正文部分。

本文讨论的解题方法模型简单,得出的结果只是一个近似最优解的可行解,所以还有很大的改进空间,比如我们可以采用更加智能的算法等。

关键词:计算机算法模拟优化

1.问题的重述

某城区有 37 个垃圾集中点,每天都要从垃圾处理厂(第 38号节点)出发将垃圾运回。现有一种载重 6 吨的运输车。每个垃圾点需要用 10 分钟的时间装车,运输车平均速度为40 公里/小时(夜里运输,不考虑塞车现象);每台车每日平均工作 4 小时。运输车重载运费 2 元 / 吨公里;运输车和装垃圾用的铲车空载费用 0.5 元 / 公里;并且假定街道方向均平行于坐标轴。请你给出满意的运输调度方案以及计算程序。

问题:

1.运输车应如何调度(需要投入多少台运输车,每台车的调度方案,运营费用)

2.铲车应如何调度(需要多少台铲车,每台铲车的行走路线,运营费用)

3.如果有载重量为 4 吨、 6 吨、 8 吨三种运输车,又如何调度?

2.模型的基本假设与符号说明

(一)基本假设

1.车辆在拐弯时的时间损耗忽略。

2.车辆在任意两站点中途不停车,保持稳定的速率。

3.只要平行于坐标轴即有街道存在。

4.无论垃圾量多少,都能在十分钟内装上运输车。

5.每个垃圾站点的垃圾只能由一辆运输车运载。

6. 假设运输车、铲车从A垃圾站到B垃圾站总走最短路线。

7. 任意两垃圾站间的最短路线为以两垃圾站连线为斜边的直角三角形的两直角边之和。

8. 建设在运输垃圾过程中没有新垃圾入站。

9. 假设铲车、运输车载工作途中不发生意外也不遇到意外;

10. 各垃圾站每天的垃圾量相对稳定。

(二)符号说明

|A| 表示A点到原点的距离,恒正

|B| 表示B点到原点的距离,恒正

|A-B| 表示A,B两点之间的距离,恒正

Ta 表示A点所在地的垃圾量

cost:运费;

time:时间消耗;

装的足够多运输车当前的载重离限载不大于0.55吨(垃圾点的最小垃圾量)

序数号所在点的编号

3.模型的建立

垃圾运输问题最终可以归结为最优路径搜索问题,但注意到此图为森林而不是树,不能直接套用Krusal,Prim等现成算法,于是根据具体问题设计出随机下山法,用计算模拟搜索,可以搜寻到令人满意的可行解。

先注意到两点的情况,设两点分别为A(x1,y1),B(x2,y2)。

主要有以下两种情况:

一.A,B明显有先后次序。--递减状态(如图1)

不妨设x1>x2, y1>y2,不难看出A在B的后方,即A比B远。对于前方参考点O,要将A,B 对应垃圾点的垃圾全部取回再返回O,一共有三种方式:

1. O->A->O, O->B->O

单独运输。这种情况下,总的路程消费等于空载运行费用(0.4元/公里)与装载时运行费用(1.8元/公里吨)的总和。所需的总时间等于车辆所走过的总路程与速度(40公里/小时)的比值再加上在A,B两点停留的时间(每个垃圾点上停留了10分钟,1/6小时),于是有:

Cost = 0.4*|A| + 1.8*|A|*Ta + 0.4*|B| + 1.8*|B|*Tb

Time = (2*|A| + 2*|B|)/40 + 1/6*2

2. 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|/40 + 1/6*2

3. 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点。而又注意到两者的时间花费是相等的。所以在其余同等的情况下选择“先远后近”。考虑到时间上单独运输比其余的两种运输要大的多,多一一倍,而且花费的钱仍不比“先远后近”省,还多了0.4*|B|,所以一般情况下,不采用单独运输。

二.A,B两点没有明显先后顺序。 --并邻状态(如图2)

还是一共有三种情况:

1. O->A->O, O->B->O

单独运输。这种情况下,跟A,B两点有先后顺序中的情况完全相同,即有:

Cost = 0.4*|A| + 1.8*|A|*Ta + 0.4*|B| + 1.8*|B|*Tb

time = (2*|A| + 2*|B|)/40 + 1/6*2

2. O->A->B->O

Cost = 0.4*|A| + 1.8*|A-B|*Ta + 1.8*|B|*(Ta+Tb) ----〈1〉

Time = (|A| + |A-B| + |B|)/40 + 1/6*2

3.O->B->A->O

Cost = 0.4*|B| + 1.8*|A-B|*Tb + 1.8*|A|*(Ta+Tb) ----〈2〉

Time = (|A| + |A-B| + |B|)/40 +1/6*2

相比之下,清晰可见并邻状态下的单独运输所花的费用最少,所以在不要求时间的情况下对于并邻两点,采用单独运输的方式最节约钱。用<1>式与<2>式相减除以1.8,得到如下判断式:

|A-B|*(Ta-Tb) + (Ta+Tb)*(|B|-|A|) ----<3>

上式 < 0时,选 0->A->B->O;

上式 > 0时,选 O->B->A->O;

上式 = 0时,任意选上述两路线。

三.两点选择趋势的讨论。(如图3)

相关文档
最新文档