有时间限制的物资配送车辆路径问题汇总_第1页
有时间限制的物资配送车辆路径问题汇总_第2页
有时间限制的物资配送车辆路径问题汇总_第3页
有时间限制的物资配送车辆路径问题汇总_第4页
有时间限制的物资配送车辆路径问题汇总_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、有时间限制的物资配送车辆路径问题摘要:这是一个带有时间约束的车辆路径安排问题,车辆路径问题是指一定数量的各自有不同货物需求的客户,配送中心向客户提供货物,由一个车队负责分送货物,组织适当的行车路线,并能在一定约束条件下,使客户的需求得到满足且达到诸如路程最短,成本最小,耗费时间最少等目的。根据题中所给的条件,我们建立了一个求最短路径的模型,所用到的算法是遗传算法,遗传算法是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然计划过程搜索最优解的方法。我们暂且考虑车辆都在规定时间内到达客户的情况,这种做法虽有不妥之处却在一定程度上简化了该模型。我们所建立的模型针

2、对该问题,在需求量、接货时间段、各种费用消耗已知的情况下,采用规划模型,引入0-1变量,建立各个约束条件,包括车辆的容量限制、到达每个客户的车辆和离开每个客户的车辆均为1的限制、货物剩余量、时间段限制,目标函数为可行路径长度的最小化。根据这些约束条件及所建立模型,我们可以编程解决该问题,在本文假设条件下,可得:最短路径为:910公里,发车数量为:3辆,货车行驶路径分别为:0-8-57-0,0-3-1-2-0,064-0车辆编号所执行的任务路线到达各点的时间路线长度货运量10-8-5-7-00-1.6-3.9-7.7-13.980+75+90+160=4053+1.5+2.5=720-3-1-2

3、-00-1.5-3.3-5.6-8.875+40+65+60=2404.5+2+1.5=830-6-4-00-2-6-10.8100+75+90=2654+3=7但是,由于受到我们假设的约束,这样得出的结果未必为最优解,然后我们可用典型的单源最短路径算法即Dijkstra(迪杰斯特拉)算法进行优化,这种算法用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩散,直到扩散到终点为止。优化后可得最短路为公里885,三条路径分别为分别为:085-7-2-0,0-31-2-0,0-6-4-0。关键词:遗传算法,迪杰特斯拉算法,时间限制,车辆路径、问题重述物流中心0有容量为Q的车

4、辆若干辆,负责对需求量分别为q的Ni个客户进行货物派送工作,客户i的货物需求量为q,且q:Q,车辆必须在一定的时间范围a,b内到达,否则会有一定的损失,按照要求求解一下两个问题:1 .建立送货车辆每天总运行里程最短的一般数学模型,并给出求解方法。2 .具体求解以下算例,载重量为Q=8吨、平均速度为V=50千米/小时的送货车辆从物流中心(i=0)出发,为编号是i=1,2,,8的8个客户配送物资。某日,第i个客户所需物资的重量为qi吨(q:Q),在第i个客户处卸货时间为s小时,第i个客户要求送货车辆到达的时间范围la.bj由表1给出。物流中心与各客户以及各客户间的公路里程(单位:千米)由表2给出。

5、问当日如何安排送货车辆(包括出动车辆的台数以及每一台车辆的具体行驶路径)才能使总运行里程最短表1物资配送任务及其要求客户12345678q(吨)21.54.531.542.53s(小时)121322.530.8lai3bj1,44,61,24,73,5.52,55,81.5,411表2点对之间的公路里程(千米)012345678040607590200100160801400654010050751101002606507510010075757537540750100509090150490100100100010075751005200501005010007090756100757590

6、757007010071601107590759070010088010075150100751001000二、问题分析本题属于比较常见的车辆路径问题(VRP),不同的是,装货点只有一个。车辆路径问题,即对于多个装货点和卸货点,组织适当的行车线路,使车辆有序地通过它们,在满足一定的约束条件(如货物需求量、发送量、交发货时间、车辆容量限制、行驶里程限制、时间限制,即时间窗等)下,达到一定问题的目标(如路程最短、费用最少、时间尽量少、使用车辆数尽量少等)。要在一定的约束条件下,使得派送总费用最小(派送总费用包括运输成本,车辆在客户要求到达时间之前到达产生的等待损失,车辆在客户要求到达时间之后到达所

7、受惩罚等),相应的,总路程也最短。现在就要根据这些约束条件,从而确定最佳派送方案。题中已给定客户i的货物需求量每个客户的接货时间范围,bi,卸货时间s,和物流中心与各客户之间及客户与客户之间的路程dj,货车最大载重量Q货车行驶速度v等,因此,我们便要根据题意,选取若干辆车进行送货,然后考虑每辆车负责哪些客户的送货任务。我们可(各客户时间范围,货车最大载重量,以在适当合理的假设下,通过编程,给出满足题中限制条件剩余物资等)的很多参考方案,并在不重复的基础上选出使得总路程最小的路径,从而建立最优化模型确定最佳车辆派送方案。三、模型假设1 、车辆不会出现折线行走,即车辆在经过某个客户点时一定卸货。2

8、 、物流中心有足够的资源以及足够的车辆以供配送。3 、每辆车送货行驶时不会有突发状况影响车辆的送货计划以及车辆速度。4 、每个客户的物资只能由一辆车辆配送。四、符号定义与说明O物流中心Q车辆的最大送货量m运送车辆的总数q5bj第i个客户最早到时间为a第i个客户的最晚到时间bj。q第j个客户的所需货物数量d“JJi至叮的路程车辆从i到j的行驶时间Si车辆在i处的卸货(等待)时间Xjjk编号为k的车辆从i走到jz所有车辆行驶的总路程yiki的货物由编号为k的车辆完成V车辆的平均行驶速度五、模型建立与求解1、模型思路给出所有路径(穷举法或图的遍历)一一限制条件下求解可行路径(遗传算法)一一在求出的路

9、径中选择最短路径(优化)一一考虑车辆返回物流中心时可走折线路线,用迪杰特斯拉算法求解最短路径(最优化)。2、模型建立(1)建立二维数组,对从物流中心出发的所有客户进行全排列。或客户与物流中心均看成点,互相连接,标记其之间距离,使其成为图,图的遍历,指的是从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次。本题中,我们采用方法来进行编程。(2)根据题意,模型所求目标函数为nnmminz二二二x冰d0i=0j=0k=1限制条件为:N工q,kyik«qiqW7+d/bimi=0m工Yik=,kT1i=1,2.l.NN工xijk=Yikj=01JEXiik=yjki=0(3)遗传算法

10、取可行路径编码采用自然数编码,即序数编码。(车辆k的运输总重不超过车辆的最大载重)(车辆的到达时间在所规定的(每个客户的货物只能由一辆车来配送)(保证每个到达i点的车辆离开i点)货物运输路线可以编成长度为N+m的染色体(0,kijl2,is,0,A21©A0AlAmriAW),其中,m表示完成任务所需的车辆数。2.出生初始群体ik表示第ik项任务。表示车场,初始群体随机产生,即产生N项货物运输任务点的全排列,s7i1,:2,IL扃,如果jqij-Q,且7q”Q,将s至N的数向后移动一位,将0插入第s位。接着,继续上述操作,直到m个jj0全部插入为止。这样就构成了一条初始染色体。用这种

11、方法构造一个群体的染色体。如:031285764,该编码插零之后变成03120857064。它代表着需要三辆车运输货物。其中,第1辆车行走路线为03120,即从仓库出发到依次到商店再回到仓库。第2辆车行走路线为08570,第3辆车行走路线为0640。3 .适应度函数bz,适应度函数取fk=一,其中fk为染色体Vk的适应度,b为常数,Z'为初始种群中最好Zk的染色体的运输成本,ZV为染色体Vk对应的运输成本。4 .遗传算子选取最佳保留的轮盘赌复制法进行染色体的复制。变异算子采用反转变异。交叉算子用最大保留交叉,其操作过程为:a)若染色体交叉点处的两个基因都为0,则直接进行顺序交叉运算;b

12、)若染色体交叉点处的基因不全为0,则将交叉点左移(右移),直到左右两个交叉处的基因都为0,再进行顺序交叉运算。5 .算法的实现步骤a) 初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初始群体P(0).b) 个体评价:计算群体P(t)中各个个体的适应度。O选择运算:将选择算子作为群体。选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体在遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的。d) 交叉运算:将交叉算子作用与群体,所谓交叉是指把两个父代个体的部分结构加以替换重组而生成新个体的操作。遗传算法中起核心作用的就是交叉算子。e) 变异运算:

13、将变异算子作用于群体。即是对群体中的个体串的某些基因座上的基因值作变动。群体P(t)经过选择、交叉、变异运算之后得到下一代群体P(t+1)。f)终止条件判断:若1=则以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算。(4) 优化在可行路径中利用计算机程序进行简单的大小比较,取最小值。(5) 再优化考虑到车辆返回物流中心时可以经过其他的点回到物流中心,利用迪杰特斯拉算法对优化的结果进行再优化。迪杰特斯拉算法(Dijkstra)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法能得出最

14、短路径的最优解。其基本思想是,设置顶点集合S并不断地作贪心选择来扩充这个集合。一个顶点属于集合S当且仅当从源到该顶点的最短路径长度已知初始时,S中仅含有源。设u是G的某一个顶点,把从源到u且中间只经过S中顶点的路称为从源到u的特殊路径,并用数组dist记录当前每个顶点所对应的最短特殊路径长度。Dijkstra算法每次从V-S中取出具有最短特殊路,长度的顶点u,将u添加到S中,同时对数组dist作必要的修改。一旦S包含了所有V中顶点,dist就记录了从源到所有其它顶点之间的最短路径长度。3.具体模型求解(问题2)题中所给定的条件为8个客户点,车辆载重Q为8吨,平均行驶速度为50公里每小时,其时间

15、限制和所需货物量由表1表2给出。(1)全排列,共有8!次排列方,数量过多,具体在此不列举。(2)遗传算法选取可行路径,并将可行路径设为二维数组,列举限制条件,编程求解,结果为:(3)优化,利用编程来比较繁琐的路径结果,选出最短的03120857064,即路径为03120,08570,0640,分别由三辆车来配送,总路程为910公里。03120S084067031205708406031205706884M3120570640B031205067084曩短路崔是:910.00H00R取炬谿趣为:08570312064(4)再优化,利用迪杰特斯拉算法求出物流中心与各个仓库之间的最短距离,如表所示:

16、编号12345678最短距离4060759090100135807经由客户2再返回物流中根据表格,发现2号车辆返回物流中心的过程可以进行优化,从客户心更近,可节省路程25km,即路程总量为885,配送方案为031208572064,三辆车的行驶计划分别为031200857200640。六、模型评价与推广1、模型评价:由上述所建立的模型,便可得到有时间限制的物流配送车辆路径问题的解决方法。首先我们对此问题进行了合理的假设,并建立相应模型简化了实际中的复杂问题。考虑了主要约束条件对目标函数的影响,相对来说比较符合实际。当然,假设能在一定程度上简化问题,也会忽略实际中某些条件的影响,多种假设同时发生

17、也许会产生大的影响。例如,我们假设每个客户的需求只能由一辆车配送,但也不排除多辆车配送时耗时更短这种状况,由此所得的最短时间就会小于我们模型中所得结果了。另外,也许会出现在某些客户那里不卸货只是经过的情况,如:从a到b的距离大于从a到c再到b,这时,便可选择由a经过c再到b的路径,但却因为剩余货物量或时间范围等问题在c处不卸货,而我们前面的假设中说,凡是经过的客户都会卸货,所以,由于这个假设,我们得到的时间则可能会偏大,也就是此模型用迪杰特斯拉算法优化后的结果。此外,每辆车行驶的路程都是有最大限制的,因此,这个假设也不甚合理。2、模型推广:物资配送问题比较多,这类问题大多可通过以上模板,设立目

18、标函数和约束条件,带入实际数据,由遗传算法可解出总里程最短的车辆行驶路径方案。若已知单位行驶费用及在时间限制之外到达所受到的惩罚费用,运用该模板,对目标函数及约束条件函数稍作修改,则可得总费用最小的行驶方案。考虑到实际行驶问题,可根据迪杰特斯拉算法对结果再进行优化,从而得到更优解。七、参考文献1耿国华,数据结构一一用C语言描述,高等教育出版社,2011.6.2赵彤,带时间窗的应急救助物资配送车辆路径优化模型研究,大连海事大学交通运输管理学院,2010.10.3gfkewxm,带时间窗物流配送车辆路径问题,2012.9.八、附录附加程序1(求解优化路径):所用语言:C语言编译环境:VisualC

19、+6.0#include<stdio.h>#include<string.h>charall4032515;intindex,need=0,save40325;floattime,weight,minpath=100000,minpath_1,minpath_1=0;floats9=0,1,2,1,3,2,2.5,3,0.8;floatlimit92=0,0,1,4,4,6,1,2,4,7,3,5.5,2,5,5,8,1.5,4);float8_199=0,40,60,75,90,200,100,160,80,40,0,65,40,100,50,75,110,100,6

20、0,65,0,75,100,100,75,75,75,75,40,75,0,100,50,90,90,150,90,100,100,100,0,100,75,75,100,200,50,100,50,100,0,70,90,75,100,75,75,90,75,70,0,70,100,160,110,75,90,75,90,70,0,100,80,100,75,150,100,75,100,100,0;floatq9=0,2,1.5,4.5,3,1.5,4,2.5,3;数组全排列voidinit(charlist,intk,intm)inti;if(k>m)2for(i=0;i<=

21、m;i+)allindexi+1=listi;allindexO='O:allindex+m+2='0:)elsefor(i=k;i<=m;i+)(charswap=listk;listk=listi;listi=swap;init(list,k+1,m);swap=listk;listk=listi;listi=swap;)floattaste(inti,intj)(returns_tij/50;)插入'O'voidinsert(inti,intj)(intn,len=strlen(alli);for(n=len;n>j;n-)(allin=all

22、in-1;)alliU=O*;intmain()随机化所有可能性;all的初始,路程时间耗费函数s_t(),卸货耗时s口;客户时间限制limit;charlist8=,1',2J3,4,;5','67',8;intij,one,two,t,temp,point=0;init(list,0,7);找出所有可行的路径for(i=0;i<index;i+)(time=0;weight=8;for(j=O;alli0+1!=O'j+)(one=alli0-'O:two=allij+1-,0:if(time+taste(one,two)>=li

23、mittwo0&&time+taste(one,two)<=limittwo1&&weight>=qtwo)(time+=stwo+taste(one,two),weight-=qtwo;)elseif(alli0!='O')(insert(i,j+1);time=0;weight=8;/一条线路的终止elsebreak;)if(allij+1=,0')(saveneed+=i;)t=need;printfC可行路径:nnH);while(need-)(puts(allsaveneed);)printf("nn最短路

24、程是:");在这些以找出的路径里找路程最近的need=t;while(need-)(minpath_1=0;for(i=0;allsaveneedi!=*O'i+)(if(allsaveneedi+1='0,)(minpath_1+=s_tallsaveneed皿)else(minpath_1+=s_tallsaveneedi-'O'allsaveneedi+1-'O*;)if(minpath>minpath_1)(minpath=minpath_1;temp=saveneed;)prinn”,minpath);printf(n最短路径为:");puts(alltemp);printf("nn");return0;)附加程序2(迪杰特斯拉算法):帕斯卡(pascal)语言编译环境:Turbopascaltypebool=array1.10ofboolean;arr=array0.10ofintegervar a:array1.10,1.10of integer/存储图的邻接数组,无边为10000c,d,e:arr;c为最短路径数值,d为各点前趋,t:bool;e:路径,t为辅助数组inf,ou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论