版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、有时间限制的物资配送车辆路径问题摘要:这是一个带有时间约束的车辆路径安排问题,车辆路径问题是指一定数量的各自有不同 货物需求的客户,配送中心向客户提供货物,由一个车队负责分送货物,组织适当的行车路线, 并能在一定约束条件下,使客户的需求得到满足且达到诸如路程最短,成本最小,耗费时间最少 等目的。根据题中所给的条件,我们建立了一个求最短路径的模型,所用到的算法是遗传算法,遗传 算法是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过 模拟自然计划过程搜索最优解的方法。我们暂且考虑车辆都在规定时间内到达客户的情况,这种 做法虽有不妥之处却在一定程度上简化了该模型。我们所
2、建立的模型针对该问题,在需求量、接 货时间段、各种费用消耗已知的情况下,采用规划模型,引入0-1变量,建立各个约束条件,包 括车辆的容量限制、到达每个客户的车辆和离开每个客户的车辆均为1的限制、货物剩余量、时 间段限制,目标函数为可行路径长度的最小化。根据这些约束条件及所建立模型,我们可以编程解决该问题,在本文假设条件下,可得:最 短路径为:910公里,发车数量为:3辆,货车行驶路径分别为:0-8-5-7-0,0-3-1-2-0,0-6-4-0车辆编号所执行的任务 路线到达各点的时间路线长度货运量10-8-5-7-00-1.6-3.9-7.7-13.980+75+90+160=4053+1.5
3、+2.5=720-3-1-2-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,三条路径分别为分别为:0-8-5-7-2-0,0-3-1-2-0,0-6-4-0。关键词:遗传算法,迪杰特斯拉算法,时间限制,车
4、辆路径一、问题重述物流中心O有容量为Q的车辆若干辆,负责对需求量分别为q的N.个客户进行货物派送工作, 客户i的货物需求量为q,且q. V Q,车辆必须在一定的时间范围彳,内到达,否则会有一定 的损失,按照要求求解一下两个问题:建立送货车辆每天总运行里程最短的一般数学模型,并给出求解方法。具体求解以下算例,载重量为Q = 8吨、平均速度为V = 50千米/小时的送货车辆从 物流中心(i = 0)出发,为编号是i = 1,2,,8的8个客户配送物资。某日,第i个客户所 需物资的重量为qt吨(q. V Q),在第i个客户处卸货时间为*小时,第i个客户要求送货车辆 到达的时间范围量,bi 由表1给出
5、。物流中心与各客户以及各客户间的公路里程(单位:千米) 由表2给出。问当日如何安排送货车辆(包括出动车辆的台数以及每一台车辆的具体行驶路径) 才能使总运行里程最短表1物资配送任务及其要求客户12345678q (吨)21.54.531.542.53s (小时)121322.530.8a , b i i1, 44, 61, 24, 73, 5.52, 55, 81.5, 4表2 点对之间的公路里程(千米)0123456780040607590200100160801400654010050751101002606507510010075757537540750100509090150490100
6、100100010075751005200501005010007090756100757590757007010071601107590759070010088010075150100751001000二、问题分析本题属于比较常见的车辆路径问题(VRP),不同的是,装货点只有一个。车辆路径问题,即 对于多个装货点和卸货点,组织适当的行车线路,使车辆有序地通过它们,在满足一定的约束条 件(如货物需求量、发送量、交发货时间、车辆容量限制、行驶里程限制、时间限制,即时间窗等) 下,达到一定问题的目标(如路程最短、费用最少、时间尽量少、使用车辆数尽量少等)。要在一 定的约束条件下,使得派送总费用最小
7、(派送总费用包括运输成本,车辆在客户要求到达时间之 前到达产生的等待损失,车辆在客户要求到达时间之后到达所受惩罚等),相应的,总路程也最 短。现在就要根据这些约束条件,从而确定最佳派送方案。题中已给定客户i的货物需求量q,每个客户的接货时间范围1, b ,卸货时间s,和物 ii ii流中心与各客户之间及客户与客户之间的路程d.,货车最大载重量Q,货车行驶速度v等,因此, ij我们便要根据题意,选取若干辆车进行送货,然后考虑每辆车负责哪些客户的送货任务。我们可 以在适当合理的假设下,通过编程,给出满足题中限制条件(各客户时间范围,货车最大载重量, 剩余物资等)的很多参考方案,并在不重复的基础上选
8、出使得总路程最小的路径,从而建立最 优化模型确定最佳车辆派送方案。三、模型假设1、车辆不会出现折线行走,即车辆在经过某个客户点时一定卸货。2、物流中心有足够的资源以及足够的车辆以供配送。3、每辆车送货行驶时不会有突发状况影响车辆的送货计划以及车辆速度。4、每个客户的物资只能由一辆车辆配送。四、符号定义与说明O物流中心Q车辆的最大送货量m运送车辆的总数a , b i i第i个客户最早到时间为a,第i个客户的最晚到时间七。q第i个客户的所需货物数量diji到j的路程车辆从i到j的行驶时间si车辆在i处的卸货(等待)时间xijk编号为k的车辆从i走到jz所有车辆行驶的总路程yiki的货物由编号为k的
9、车辆完成车辆的平均行驶速度五、模型建立与求解1、模型思路给出所有路径(穷举法或图的遍历)一一限制条件下求解可行路径(遗传算法)一一在求出的 路径中选择最短路径(优化)一一考虑车辆返回物流中心时可走折线路线,用迪杰特斯拉算法求 解最短路径(最优化)。2、模型建立(1)建立二维数组,对从物流中心出发的所有客户进行全排列。或客户与物流中心均看成点,互相连接,标记其之间距离,使其成为图,图的遍历,指的是 从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次。本题中,我们米用方法来进行编程。(2)根据题意,模型所求目标函数为._nn m,min z - zzzx di = 0 j = 0 k =
10、1限制条件为:i=1+k=1yikijkj=0im yikq ikiijk i=0N XX Qikdijvjk(车辆k的运输总重不超过车辆的最大载重) b(车辆的到达时间在所规定的k,J内)i=0i=1,2(每个客户的货物只能由一辆车来配送)(保证每个到达i点的车辆离开i点)(3)遗传算法取可行路径1 .编码采用自然数编码,即序数编码。货物运输路线可以编成长度为N+m的染色体k表示第I k项任务。0表示车场,(0, i ,ii,0,ii ,0,,0,i ,,i ),其中,i11 12 1s 212tm1mwm表示完成任务所需的车辆数。2.出生初始群体初始群体随机产生,即产生N项货物运输任务点的
11、全排列i,i,,i ,如果 q Q,1 2 Nijj=1且丈q.,Q,将s至N的数向后移动一位,将0插入第s位。接着,继续上述操作,直到m个j=10全部插入为止。这样就构成了一条初始染色体。用这种方法构造一个群体的染色体。如:031285764,该编码插零之后变成03120857064。它代表着需要三辆车运输货物。其中,第1辆车辆车行走路线为0640。3.适应度函数适应度函数取/ k的染色体的运输成本,z行走路线为03120,即从仓库出发到依次到商店再回到仓库。第2辆车行走路线为08570,第3bz,,其中f为染色体匕的适应度,b为常数,z为初始种群中最好 k为染色体匕对应的运输成本。:k遗传
12、算子选取最佳保留的轮盘赌复制法进行染色体的复制。变异算子采用反转变异。交叉算子用最大保留交叉,其操作过程为:a)若染色体交叉点处的两个基因都为0,则直接进行顺序交叉运算;b)若染色体交叉点处的基因不全为0,则将交叉点左移(右移),直到左右两个交叉处的基因都为0,再进行顺序交叉运算。算法的实现步骤a)初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初始群体P(0).b)个体评价:计算群体P(t)中各个个体的适应度。c)选择运算:将选择算子作为群体。选择的目的是把优化的个体直接遗传到下一代或通过配对交 叉产生新的个体在遗传到下一代。选择操作是建立在群体中个体的适应度评估基
13、础上的。d)交叉运算:将交叉算子作用与群体,所谓交叉是指把两个父代个体的部分结构加以替换重组而 生成新个体的操作。遗传算法中起核心作用的就是交叉算子。e)变异运算:将变异算子作用于群体。即是对群体中的个体串的某些基因座上的基因值作变动。群体P(t)经过选择、交叉、变异运算之后得到下一代群体P(t+1)。f)终止条件判断:若t=T,则以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算。(4)优化在可行路径中利用计算机程序进行简单的大小比较,取最小值。(5)再优化考虑到车辆返回物流中心时可以经过其他的点回到物流中心,利用迪杰特斯拉算法对优化的结果进行再优化。迪杰特斯拉算法(Dijkst
14、ra)算法是典型的最短路径路由算法,用于计算一个节点到其他所有 节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算 法能得出最短路径的最优解。其基本思想是,设置顶点集合S并不断地作贪心选择来扩充这个集 合。一个顶点属于集合S当且仅当从源到该顶点的最短路径长度已知初始时,S中仅含有源。设u 是G的某一个顶点,把从源到u且中间只经过S中顶点的路称为从源到u的特殊路径,并用数组 dist记录当前每个顶点所对应的最短特殊路径长度Dijkstra算法每次从V-S中取出具有最短特 殊路,长度的顶点u,将u添加到S中,同时对数组dist作必要的修改。一旦S包含了所有
15、V中顶 点,dist就记录了从源到所有其它顶点之间的最短路径长度。具体模型求解(问题2)题中所给定的条件为8个客户点,车辆载重Q为8吨,平均行驶速度为50公里每小时,其时间限 制和所需货物量由表1表2给出。(1)全排列,共有8!次排列方,数量过多,具体在此不列举。(2)遗传算法选取可行路径,并将可行路径设为二维数组,列举限制条件,编程求解,结果为:(3)优化,利用编程来比较繁琐的路径结果,选出最短的03120857064,即路径为03120,08570,0640,分别由三辆车来配送,总路程为910公里。(4)再优化,利用迪杰特斯拉算法求出物流中心与各个仓库之间的最短距离,如表所示:编号1234
16、5678最短距离406075909010013580根据表格,发现2号车辆返回物流中心的过程可以进行优化,从客户7经由客户2再返回物流中 心更近,可节省路程25km,即路程总量为885,配送方案为031208572064,三辆车的行驶计划分 别为 03120 085720 0640。六、模型评价与推广1、模型评价:由上述所建立的模型,便可得到有时间限制的物流配送车辆路径问题的解决方法。首先我们 对此问题进行了合理的假设,并建立相应模型简化了实际中的复杂问题。考虑了主要约束条件对 目标函数的影响,相对来说比较符合实际。当然,假设能在一定程度上简化问题,也会忽略实际中某些条件的影响,多种假设同时发
17、生 也许会产生大的影响。例如,我们假设每个客户的需求只能由一辆车配送,但也不排除多辆车配 送时耗时更短这种状况,由此所得的最短时间就会小于我们模型中所得结果了。另外,也许会出 现在某些客户那里不卸货只是经过的情况,如:从a到b的距离大于从a到c再到b,这时,便 可选择由a经过c再到b的路径,但却因为剩余货物量或时间范围等问题在c处不卸货,而我们 前面的假设中说,凡是经过的客户都会卸货,所以,由于这个假设,我们得到的时间则可能会偏 大,也就是此模型用迪杰特斯拉算法优化后的结果。此外,每辆车行驶的路程都是有最大限制的, 因此,这个假设也不甚合理。2、模型推广:物资配送问题比较多,这类问题大多可通过
18、以上模板,设立目标函数和约束条件,带入实际 数据,由遗传算法可解出总里程最短的车辆行驶路径方案。若已知单位行驶费用及在时间限制之 外到达所受到的惩罚费用,运用该模板,对目标函数及约束条件函数稍作修改,则可得总费用最 小的行驶方案。考虑到实际行驶问题,可根据迪杰特斯拉算法对结果再进行优化,从而得到更优 解。七、参考文献耿国华,数据结构一一用C语言描述,高等教育出版社,2011.6.赵彤,带时间窗的应急救助物资配送车辆路径优化模型研究,大连海事大学交通运输管理学 院,2010.10.gfkewxm,带时间窗物流配送车辆路径问题,2012.9.八、附录附加程序1(求解优化路径):所用语言:C语言编译
19、环境:Visual C+ 6.0#include#includechar all4032515;int index,need=0,save40325;float time,weight,minpath=100000,minpath_1,minpath_1=0;float s9 = 0,1,2,1,3,2,2.5,3,0.8;float limit92 = 0,0,1,4,4,6,1,2,4,7,3,5.5,2,5,5,8,1.5,4;float s_t99 = 0,40,60,75,90,200,100,160,80,40,0,65,40,100,50,75,110,100,60,65,0,7
20、5,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;float q9 = 0,2,1.5,4.5,3,1.5,4,2.5,3;数组全排列void init(char list, int k, int m)int i;if(k m)for(i = 0; i = m
21、; i+)allindexi+1=listi;allindex0=0;allindex+m+2=0;elsefor(i = k; i j;n)allin=allin-1;allij=0; int main()/随机化所有可能性;all的初始,路程时间耗费函数s_t(),卸货耗时s;/客户时间限制limit ;char list8 = 1,2,3,4,5,6,7,8;int i,j,one,two,t,temp,point=0;init(list,0,7);/找出所有可行的路径for(i=0;i=limittwo0&time+taste(one,two)=qtwo)time+=stwo+tast
22、e(one,two),weight-=qtwo;else if(allij!=0)insert(i,j+1);time=0;weight=8; /一条线路的终止else break;if(allij+1=0)saveneed+=i;t=need;printf(可行路径:nn);while(need)puts(allsaveneed);printf(nn 最短路程是:);在这些以找出的路径里找路程最近的need=t;while(need)minpath_1=0;for(i=0;allsaveneedi!=0;i+)if(allsaveneedi+1=0)minpath_1+=s_tallsave
23、needi-00;elseminpath_1+=s_tallsaveneedi-0allsaveneedi+1-0;if(minpathminpath_1)minpath=minpath_1;temp=saveneed;printf(%f n”,minpath);printf(最短路径为:);puts(alltemp);printf(nn); return 0;附加程序2 (迪杰特斯拉算法):帕斯卡(pascal)语言编译环境:Turbopascaltype bool=array1.10of boolean;arr=array0.10of integer;var a:array1.10,1.10of integer; /存储图的邻接数组,无边为 10000c,d,e:arr; /c为最短路径数值,d为各点前趋,t:bool; /e:路径,t为辅助数组inf,outf:text;procedure init; /不同题目邻接数组建立方式不一样Beginassign(inf,dijkstra.in); assign(outf,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年电子商务平台软件开发与运营服务合同2篇
- 网管业务培训课程设计
- 八年级历史下册复习提要课件
- 抽样调查课程设计
- 无主灯教学课程设计
- 花草移植课程设计
- 2024年艺术的语录
- 水源热泵课程设计
- 医务科护士处理医务事务
- 食品行业客服工作者感悟
- ISO 56001-2024《创新管理体系-要求》专业解读与应用实践指导材料之15:“6策划-6.4创新组合”(雷泽佳编制-2025B0)
- 广东省广州市天河区2022-2023学年七年级上学期期末语文试题(含答案)
- 标准厂房施工方案
- DBJT45T 037-2022 高速公路出行信息服务管理指南
- DB32/T 4700-2024 蓄热式焚烧炉系统安全技术要求
- 国有企业普法培训课件
- 发明专利专利答辩模板
- 市政府副市长年道路春运工作会议讲话稿
- 铸铁镶铜闸门
- 大型塔器“立装成段整体就位”工法
- 联想集团内训师管理制度
评论
0/150
提交评论