送货路线设计问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
送货路线设计问题
摘要
本文主要研究送货员送货的一系列问题。
随着现代经济的发展,物流业日益兴盛,时常需送货员必须将多种货物及时送达不同位置点。
影响送货员送货的因素主要有货物的重量、体积以及送货员选择的送货的路线。
前面两者是不可变因素,所以我们先依据位置点的X 坐标和Y 坐标找出各个位置点,再根据相互连通的信息,利用matlab 数学软件画图连接可以连通的位置点,建立合理优化的路线设计,使送货员耗时最少。
对于问题一,由于1-30号货物的总质量为49.5公斤,总体积为0.99立方米,所以我们只需要考虑路线的问题。
利用贪婪法找出一条比较短的路线,即局部最优解,再利用某一段路径逐一替换其中的某段路线,得到最短路径为止。
1813192431273927313440454249424338363835321614172126o o →→→→→→→→→→→→→→→→→→→→→→→→→→→ 结果: 对于问题二,在第一问的基础上加入时间限制,根据不同的地点到达的时间不同,对整个路线图进行阶段划分,按时间先后顺序,对于不同的时间段转化为一个新的求最短路径的问题。
18131924313440454249424338353216141721362739273126o o →→→→→→→→→→→→→→→→→→→→→→→→→→ 结果: 对于问题三,没有时间限制,货物的总质量为148公斤,总体积为2.98立方米,为送货员一次所能携带的货物的3倍,我们类比问题二中所用方法对总路线按照体积与重量的限制进行了划分片区(3个区域),在根据地理位置进行优化。
区域一:
0211714162332353843424945360→→→→→→→→→→→→→→ 区域二:
02631344047403741302833464844504942453627392731260
→→→→→→→→→→→→→→→→→→→→→→→→→区域三:
0263124102529222022155243161710718121113180
→→→→→→→→→→→→→→→→→→→→→→→→→→→
关键词:贪婪法 局部最优解 最短路径 matlab 数学软件
1问题重述
1.1问题背景
现今社会网络越来越普及,网购已成为一种常见的消费方式,随之物流行业也渐渐兴盛,每个送货员需要以最快的速度及时将货物送达,而且他们往往一人送多个地方,固需要设计方案使其耗时最少。
1.2提出问题
有一快递公司,库房在图1中的O点,一送货员需将货物送至城市内多处,请设计送货方案,使所用时间最少。
该地形图的示意图见图1,各点连通信息见表3,假定送货员只能沿这些连通线路行走,而不能走其它任何路线。
各件货物的相关信息见表1,50个位置点的坐标见表2。
假定送货员最大载重50公斤,所带货物最大体积1立方米。
送货员的平均速度为24公里/小时。
假定每件货物交接花费3分钟,为简化起见,同一地点有多件货物也简单按照每件3分钟交接计算。
现在送货员要将100件货物送到50个地点。
根据以上信息,解决以下问题:
1)若将1-30号货物送到指定地点并返回。
设计最快完成路线与方式。
给出结果。
标出行走路线。
2)假定该送货员从早上8点上班开始送货,要1-30号货物还需要按照预定时间内完成,请设计最快完成路线与方式。
标出行走路线。
3)若将100件货物全部送到指定地点并返回。
设计最快完成路线与方式。
由于受重量和体积限制,送货员可中途返回取货。
可不考虑中午休息时间。
2问题分析
设计送货员送货路线的方案,使得送货员送货耗时最少,路程最短。
我们根据快递公司送货员在某时间段将某货物送往某地点的具体情况,建立各种情形下的模型,并求得最优解
2.1问题一的分析
要求将1-30号货物送往指定的地点并返回。
由于1-30号货物的总质量为49.5公斤,总体积为0.99立方米,所以我们只需要考虑路线的问题。
我们先依据位置点的X坐标和Y坐标找出各个位置点,再根据相互连通的信息,连接可以连通的位置点,最后利用贪婪法找出一条比较短的路线,再利用某一段路径逐一替换其中的某段路线,使得路线最短为止。
2.2问题二的分析
送货员从八点开始上班,要求将1-30号货物按指定时间送到。
所以我们先分别找出9;00、9:30、10:15、12:00四个时间段要到达的位置点,朝时间早的地点方向出发,选择最短的路径完成任务,并计算出路程和时间。
2.3问题三的分析
没有时间的限制,根据货物信息可以得出100件货总质量为148公斤,总体积为2.98立方米,为送货员一次载货量的3倍,所以用类似于问题二的解法分三个部分,预计将50个位置点划分为三个区域。
开始由贪婪法找出一条能经过所有位置点且是最短的路线先计算出一条最短路径,在这一条路径上,根据条件找出符合的最短路径。
3符号说明
:i 出发的位置点;
:j 达到的位置点; :o 快递公司的地点; :v 送货员送货的速度;
:ij d i j 从位置点到位置点的距离;
:ij t i j 从位置点到位置点的时间。
4模型的假设
1)在送货的途中,送货员一直匀速行驶,且不考虑遇到红绿灯的情况; 2)同一地点的货物要一次带上,不考虑经过之后,下一次经过时再送一些; 3)所有的距离都精确到米,所有的时间都精确到秒; 4)要求到达的时间不包括交易的时间。
5)同一地点有多件货物也简单按照每件3分钟交接计算。
5模型的建立与求解
5.1问题一的解答
5.1.1根据50个位置点的坐标,画出每个位置点坐标图。
(附录2,程序1) 5.1.2计算出相互联通的位置点的距。
(附录2,程序2) 计算结果:
211796.9o d = 261392.1o d = 182182o d =
18133113.5d = 18272883.4d = 13193455.7d =
19242258.6d = 27343156d = 2726986.8384d =
24311780.1d = 27311067.8d = 31391953.4d = 27362203.92d = 26212191.7d = 34401630.8d =
40453217d = 42491971.4d = 4243917.6737d =
43382618.4d = 36381537.4d = 21362880.2d = 21171823.9d = 21143296.7d = 14162607.7d = 16232097.6d = 17231774.5d = 23321311.9d =
32351114d = 35381409.7d = 36453182.5d = 42452351.7d = 14172195.7d = 18312103.7d = 01082863.8d =
5.1.3联通各位置点,并标明两位置点间距离。
(附录2) 5.1.4利用贪婪法选择一条较近的路线
181318312431273927313440454249424338363835321614172126o o
→→→→→→→→→→→→→→→→→→→→→→→→→→→→
5.1.5必须重复的路线
181318→→ 273927→→ 424942→→
计算27o →的间的距离:
1)018131831243127→→→→→→→的距离为:
2182.03+3113.46+3113.46+2103.7+1780.15+1780.15+1067.75=15114 2)181319243127o →→→→→→的距离为
2182.03+3113.46+3455.70+2258.64+1780.15+1067.75=13857 因为: 13857<15114
所以用2)027→这段替换1)27o →这段
通过观察没有其他更短的路径可以替换的所以最短的路径为:
1813192431273927313440454249424338363835321614172126o o →→→→→→→→→→→→→→→→→→→→→→→→→→→
5.1.6计算最短路径的距离
2182.03+3113.46+3455.70+2258.64+1780.15+1067.75+2324.75+1630.78+3217.
01+2351.72+1917.38+1917.38+917.67+2618.44+1409.73+1537.42+1537.42+111 4+1311.87+2097.64+2607.68+2195.72+1823.91+2191.7+1392.06=54599.6
5.2问题二的解答
5.2.1分别找出9:00、9:30、10:15、12:00,四个时间段要将什么货物送往那个位置点,
表一9:00前送货情况表
表二9:30前送货情况表
表二10:15前送货情况表
表二12:00前送货情况表
5.2.2按照问题一的路线行走计算送货的时间 1)9:00送货行走路线的时间
312182.033113.463455.702258.64=11009.83m o s =+++()
24000/v m s =
031031/2127.52936.52()36.5260t s v =+=+=<分钟
2)9:30送货行走路线的时间
31451780.152324.751630.783217.018952.69()s m =+++= 31453145/2122.382143.38()59.48t s v =+=+=<分钟
3)10:15送货行走路线的时间
45382351.721917.381917.38917.672618.441409.7311132s =+++++= 45384538/1527.8281542.82845t s v =+=+=<
4)12:00送货行走路线的时间
381409.7311141311.872097.642607.682195.721823.912880.182203.921779.921779.921067.751537.031392.0623421.41o s =+++++++++++++=4545/3958.5545103.55105o o t s v =+=+=<
5.2.3计算最短路径为
18131924313440454249424338353216141721362739273126o o
→→→→→→→→→→→→→→→→→→→→→→→→→→
5.3问题三的解答 5.3.1寻求局部最优解
与第一题的思路相同,用贪婪法找出一条最短路径,使得能经过每一个货物点。
计算出来的路径为:
0187109107161834251522203028334648444125121113192431273927313440374047405045424338363835322316141721260
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
5.3.2划分三个区域
由于物体的重量和体积对背包的限定,使得不能在一次性把所有的货物送到指定的地点。
所以要分次数处理。
经过计算得100件物品的总重量为148公斤,体积为2.98立方米。
所以至少要分三组。
根据不同的站点,经过统计有各位置点所对应货物的信息。
初步确定可以划为三个区域,称为区域一,区域二,区域三。
见下图:
由最短的路径和图中的区域得出下面的具体路线: 区域一:
0211714162332353843424945360
→→→→→→→→→→→→→→
区域二:
02631344047403741302833464844504942453627392731260
→→→→→→→→→→→→→→→→→→→→→→→→→
区域三:
0263124102529222022155243161710718121113180
→→→→→→→→→→→→→→→→→→→→→→→→→→→
线路为见附录4:
5.3.3统计各区域路径中货物的总质量、总体积和路径的总长度
各区域路径相关信息表
所以送完100 件货物所走总路程为14172.7m。
6模型的评价与推广
6.1模型的评价
优点:
1)本文思路清晰,利用图文结合,表述简易明瞭;
缺点:
1)利用贪婪算法,求局部最优解,再逐一替换求全局最优解,计算量大;
2)本文忽略了送货员送货途中遇到红绿灯问题,且看成一直匀速行驶,可能造成结果不精确。
6.2模型的推广
本文所建立的模型不仅适用于送货员送货,同样可以用于邮递员送信、出租车司机搭送乘客、清洁工托运城市内垃圾等。
7参考文献
[1] 艾冬梅、李艳晴等,MATLAB与数学实验[M],机械工程出版社,2011。
[2] 姜启源,数学模型[M],北京高等教育出版社,1998。
[3] 谭永基、蔡志杰等,数学模型[M],复旦大学出版社,1996。
[4] 送来忠、王志明等,数学建模与实验[M],科学出版社,2005。
[5] 方世盛,离散数学[M],西安电子科技大学出版社,1996。
[6] 徐全智、杨晋浩,数学建模[M],高等教育出版社,2008。
[7] 杨启帆、何勇等,数学建模竞赛[M],浙江大学出版社,2005。
[8] 唐焕文,数学模型引论,北京高等教学出版社,2005。
8附录
附录1
图1 快递公司送货地点示意图
O点为快递公司地点,O点坐标(11000,8250)
表1 各货物号信息表
表2 50个位置点的坐标
表3 相互连通信息
附录2
程序1
clc;clear;
a=xlsread('1')
x=a(:,2);
y=a(:,3);
plot(x,y,'.')
text(x,y,num2cell(1:50))
hold on
plot([x(1);x(3)],[y(1);y(3)]) gtext('1916.28')
plot([x(1);x(8)],[y(1);y(8)])
plot([x(2);x(20)],[y(2);y(20)]) plot([x(2);x(4)],[y(2);y(4)])
plot([x(3);x(8)],[y(3);y(8)])
plot([x(3);x(4)],[y(3);y(4)])
plot([x(4);x(2)],[y(4);y(2)])
plot([x(5);x(15)],[y(5);y(15)]) plot([x(5);x(2)],[y(5);y(2)])
plot([x(6);x(1)],[y(6);y(1)])
plot([x(7);x(18)],[y(7);y(18)]) plot([x(7);x(1)],[y(7);y(1)])
plot([x(8);x(12)],[y(8);y(12)])
plot([x(9);x(14)],[y(9);y(14)]) plot([x(9);x(10)],[y(9);y(10)]) plot([x(10);x(18)],[y(10);y(18)]) plot([x(10);x(7)],[y(10);y(7)]) plot([x(11);x(12)],[y(11);y(12)])
plot([x(12);x(25)],[y(12);y(25)]) plot([x(12);x(15)],[y(12);y(15)]) plot([x(13);x(18)],[y(13);y(18)]) plot([x(13);x(19)],[y(13);y(19)]) plot([x(13);x(11)],[y(13);y(11)]) plot([x(14);x(18)],[y(14);y(18)]) plot([x(14);x(16)],[y(14);y(16)]) plot([x(14);x(17)],[y(14);y(17)]) plot([x(14);x(21)],[y(14);y(21)]) plot([x(15);x(22)],[y(15);y(22)]) plot([x(15);x(25)],[y(15);y(25)]) plot([x(16);x(23)],[y(16);y(23)]) plot([x(17);x(23)],[y(17);y(23)]) plot([x(18);x(31)],[y(18);y(31)]) plot([x(19);x(24)],[y(19);y(24)]) plot([x(20);x(22)],[y(20);y(22)]) plot([x(21);x(26)],[y(21);y(26)]) plot([x(21);x(36)],[y(21);y(36)]) plot([x(21);x(17)],[y(21);y(17)]) plot([x(22);x(30)],[y(22);y(30)]) plot([x(23);x(17)],[y(23);y(17)]) plot([x(24);x(31)],[y(24);y(31)]) plot([x(25);x(41)],[y(25);y(41)]) plot([x(25);x(19)],[y(25);y(19)]) plot([x(25);x(29)],[y(25);y(29)]) plot([x(27);x(31)],[y(27);y(31)]) plot([x(28);x(33)],[y(28);y(33)]) plot([x(29);x(22)],[y(29);y(22)]) plot([x(30);x(28)],[y(30);y(28)]) plot([x(30);x(41)],[y(30);y(41)]) plot([x(31);x(26)],[y(31);y(26)]) plot([x(31);x(34)],[y(31);y(34)]) plot([x(32);x(35)],[y(32);y(35)]) plot([x(32);x(23)],[y(32);y(23)]) plot([x(33);x(46)],[y(33);y(46)]) plot([x(33);x(28)],[y(33);y(28)]) plot([x(34);x(40)],[y(34);y(40)]) plot([x(35);x(38)],[y(35);y(38)]) plot([x(36);x(45)],[y(36);y(45)]) plot([x(36);x(27)],[y(36);y(27)]) plot([x(37);x(40)],[y(37);y(40)]) plot([x(38);x(36)],[y(38);y(36)]) plot([x(39);x(27)],[y(39);y(27)])
plot([x(40);x(45)],[y(40);y(45)]) plot([x(41);x(44)],[y(41);y(44)]) plot([x(41);x(37)],[y(41);y(37)]) plot([x(41);x(46)],[y(41);y(46)]) plot([x(42);x(43)],[y(42);y(43)]) plot([x(42);x(49)],[y(42);y(49)]) plot([x(43);x(38)],[y(43);y(38)]) plot([x(44);x(48)],[y(44);y(48)]) plot([x(44);x(50)],[y(44);y(50)]) plot([x(45);x(50)],[y(45);y(50)]) plot([x(45);x(42)],[y(45);y(42)]) plot([x(46);x(48)],[y(46);y(48)]) plot([x(47);x(40)],[y(47);y(40)]) plot([x(48);x(44)],[y(48);y(44)]) plot([x(49);x(50)],[y(49);y(50)]) plot([x(49);x(42)],[y(49);y(42)]) plot([x(50);x(40)],[y(50);y(40)]) plot([x(5);x(2)],[y(5);y(2)])
plot([x(6);x(1)],[y(6);y(1)])
plot([x(7);x(18)],[y(7);y(18)])
plot([x(7);x(1)],[y(7);y(1)])
a=11000;
b=8250;
text(a,b,'O')
plot([a;x(18)],[b;y(18)])
plot([a;x(21)],[b;y(21)])
plot([a;x(26)],[b;y(26)])
hold off
程序2
clc;clear;
b=xlsread('51个坐标点');
x=b(:,2);
y=b(:,3);
c=sqrt((x(1)-x(8))^2+(y(1)-y(8))^2)
附录3
问题二的最短路径图
附录4
问题三的最短路径图。