ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:91.48KB ,
资源ID:18205711      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18205711.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数学建模垃圾运输问题的求解及源代码Word文档格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数学建模垃圾运输问题的求解及源代码Word文档格式.docx

1、Ta 表示A点所在地的垃圾量cost:运费;time:时间消耗;装的足够多 运输车当前的载重离限载不大于0.55吨(垃圾点的最小垃圾量)序数号 所在点的编号3模型的建立垃圾运输问题最终可以归结为最优路径搜索问题,但注意到此图为森林而不是树,不能直接套用Krusal,Prim等现成算法,于是根据具体问题设计出随机下山法,用计算模拟搜索,可以搜寻到令人满意的可行解。先注意到两点的情况,设两点分别为A(x1,y1),B(x2,y2)。主要有以下两种情况:一 A,B明显有先后次序。-递减状态(如图1)不妨设x1x2, y1y2,不难看出A在B的后方,即A比B远。对于前方参考点O,要将A,B对应垃圾点的

2、垃圾全部取回再返回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|*TbTime = (2*|A| + 2*|B|)/40 + 1/6*22. O- 先远点再近点,即先空载至最远处,装完A点垃圾后再返回至B,再回O点,有: Cost = 0.4*|A

3、| + 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*23. 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比较以上三种情况,远近点的遍历顺序,可以看出,“先远后近”绝对比“先近后远”在花费钱的数量上要少的多,省出1.8*|A-B|*2*

4、Tb这部分的钱主要是车载着B点的垃圾奔到A点再返回B点。而又注意到两者的时间花费是相等的。所以在其余同等的情况下选择“先远后近”。考虑到时间上单独运输比其余的两种运输要大的多,多一一倍,而且花费的钱仍不比“先远后近”省,还多了0.4*|B|,所以一般情况下,不采用单独运输。二A,B两点没有明显先后顺序。 -并邻状态(如图2)还是一共有三种情况:这种情况下,跟A,B两点有先后顺序中的情况完全相同,即有:time = (2*|A| + 2*|B|)/40 + 1/6*22 O-Cost = 0.4*|A| + 1.8*|A-B|*Ta + 1.8*|B|*(Ta+Tb) -1Time = (|A|

5、 + |A-B| + |B|)/40 + 1/6*23.O-Cost = 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|) -上式 O;上式 0时, 选 O-上式 = 0时, 任意选上述两路线。三 两点选择趋势的讨论。 (如图3)由图中看到B,C两点没有明显的先

6、后顺序,属于并邻点。因为当运输车载重行驶时费用会成倍的增长,比其空载时所花费用要大的多,所以排除A-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点垃圾时就无需跑的更远。四 关于垃圾点的垃圾是否一次清除的讨论(以6吨车例)由假设2知,每天的垃圾必须清除完毕,全部运往37点

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

8、于下一垃圾点(假设为A点)内的垃圾而言,无论是一次装完还是分两次装完,将它们运回所花费用是恒定的,等于1.8*Ta*|A|。整体而言,两者花费的钱是相等的,但分两次装要多花10分钟的装车时间,所以选择前者。综上所述,得出搜索的基本原则:1 在两点递减的情况下,不采用单独运输;2 在其余同等的情况下选择“先远后近”;3 不要求时间的情况下对于并邻两点,采用单独运输的方式最节约钱;一般情况下用式s&w(5,j)=0) s=w(2,j)+w(3,j); jg(i,j1)=w(1,j); sum=w(4,j); m=j; else continue; end w(5,m)=1; j1=j1+1; wh

9、ile 1 js=0; q=40; for k=1: if(qw(2,m)-w(2,k)+w(3,m)-w(3,k)&w(2,m)w(2,k)&w(3,m)w(3,k)&(6-sum)w(4,k)&w(5,k)=0 q=w(2,m)+w(3,m)-w(2,k)-w(3,k); js=1; jg(i,j1)=w(1,k); i3=k; w(5,i3)=1; sum=sum+w(4,i3); m=i3; if(w(2,i3)=0&w(3,i3)=0|js=0) breakkcost=0;zcost=0;allcost=0;n=0;for u1=1:11 for u2=1: if jg(u1,u2)

10、=0 n=jg(u1,u2); else continue zcost=zcost+w(4,n)*1.8*(w(2,n)+w(3,n); n=jg(u1,1); kcost=kcost+0.4*(w(2,n)+w(3,n);allcost=zcost+kcostzcostkcost11;time=i;time(1,:n1=0;n2=0;n3=0;for u4=1: for u5=1: if jg(u4,u5)=0 n1=jg(u4,u5); n2=n2+1; n3=jg(u4,1); time(1,u4)=(w(2,n3)+w(3,n3)*2)/40;n2 time 附录三源码r=1:%plo

11、t(x,y,);%for ii=1: % k=int2str(ii); % k=strcat( % text(x(ii),y(ii),k);%endw=r;t;point=30 28 36 24 34 20 19 14 22 11 31; 3 5 21 15 2 9 8 1 22 10 6;point(3,:s=80;p=80;k=2;j1=0;j2=0;m=1;b=1:pai=b;pai(1,: if s=w(2,point(1,j)+w(3,point(1,j)&point(3,j)=0 s=w(2,point(1,j)+w(3,point(1,j); j1=j; point(3,j1)=1; pai(

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1