带时间窗物流配送车辆路径问题带时间窗物流配送车辆路径问题 摘要 本题是一个带有时间窗的车辆路径安排问题(VRPTW问题)。根据题目条件,本文建立了一个求解最小派送费用的VRPTW优化模型,采用遗传算法,给出了该模型的求解方法。然后,对一个实际问题进行求解,给出了一个比较好的路线安排方式。 模型一(见5.1.2)针对问题一,在需求量、接货时间段、各种费用消耗已知的情况下,决定采用规划模型,引入0-1变量,建立各个约束条件,包括车辆的容量限制,到达每个客户的车辆和离开每个客户的车辆均为1的限制,总车辆数的限制,目标函数为费用的最小化,费用包括车...
评价 LEC评价法下载LEC评价法下载评价量规免费下载学院评价表文档下载学院评价表文档下载 和推广 6.1 模型的评价 由5.1和5.2建立的模型,我们得到了有软时间限制的物流配送车辆路径问题的解决办法。首先我们对问题进行了合理的假设,模型简化了实际中的复杂问题,考虑了主要的约束条件与目标,思路清晰,结果也基本符合实际。 但是,模型对实际进行简化的同时忽略了实际中很多次要的条件,由累加效果可能会产生很大误差,同时,我们进行模型的求解时只是简单使用了遗传算法,没有对其进行改进。 6.2 模型的推广 1.模型中不合实际的假设: (1) 在问题一和问题二总费用的组成上,我们没有考虑组织送货的费用,即每组织一辆车进行送货都需要一定的费用,我们设为S元/(次、辆); (2) 在问题一中,我们假设每辆车送货时行驶的路程不超过它所能行驶的最远路程,但是实际上,考虑到车辆行驶中的耗油等因素,每辆车的行驶最大距离都有限制,我们设车辆行驶的最大距离为L,我们可以得到约束条件: (3) 在实际中,为了公平,每位送货车辆司机行驶的路程相差必须控制在一定范围之内,我们取这个差值的最大允许值为M,则有: 2. 模型的推广 根据以上目标函数与约束条件,带入实际数据,由遗传算法即可求解出总费用最小的车辆行驶路径方案。 7、 参考文献 [1] 李军,谢秉磊,郭耀煌,非满载车辆调度问题的遗传算法。系统工程理论与实践,2000,20(3):235—239; [2] 邢文训,谢金星编著现代优化计算方法。北京:清华大学出版社,1999.140; [3] 魏明 高成修 胡润洲,一种带时间窗和容量约束的车辆路线问题及其Tabu Search 算法,运筹与管理,Vol. 11 ,No. 3:P49-P53,2002; [4] 胡大伟 朱志强 胡勇,车辆路径问题的模拟退火算法,中国公路学报,Vol.1 9 No.4:P123-P126,2006 [5] 阎庆 鲍远律,新型遗传模拟退火算法求解物流配送路径问题,http://epub.cnki.net/grid2008/detail.aspx?filename=HNSZ200804014&dbname=CJFD2008 ,2009/8/16 [6] 张志霞 邵必林,基于改进蚁群算法的运输调度规划,公路交通科技,Vo1.25 No.4:P137-P140,2008; [7] 杜文 衰庆达 周再玲,一类随机库存/运输联合优化问题求解过程分析,中国公路学报,Vol. 17 No.1:P114-P118,2004. 8、 附录 9.1 附录一 表1 任务的特征及其要求 任务 1 2 3 4 5 6 7 8 (吨) 2 1.5 4.5 3 1.5 4 2.5 3 (小时) 1 2 1 3 2 2.5 3 0.8 [1,4] [4,6] [1,2] [4,7] [3,5.5] [2,5] [5,8] [1.5,4] 表2 点对之间的距离 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 40 60 75 90 200 100 160 80 40 0 65 40 100 50 75 110 100 60 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 9.2 附录二 Matlab 7.0 程序: function gatsp(s) sum=0; M=1000000; %无穷大数 inn=100; citynum=8; K=2; gnmax=1000; %最大代数 pm=0.8; %变异概率 pc=0.2; c=[0,40,60,75,90,200,100,160,80;40,0,65,40,100,50,75,110,100; 60,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]; q=[2 1.5 4.5 3 1.5 4 2.5 3]; s=[1 2 1 3 2 2.5 3 0.8]; a=[1 4 1 4 3 2 5 1]; b=[4 6 2 7 5.5 5 8 4]; %-------------------------------------------------------------------------- %产生初始种群 m=zeros(1,inn); m=m'; KM=citynum+K-1; s=zeros(inn,citynum+K-1); for i=1:1:inn s(i,:)=randperm(KM); end s=[m s]; for i=1:inn for j=1:KM-1 if s(i,j)>citynum s(i,j)=0; end end end %-------------------------------------------------------------------------- %主程序 function ga [f,p]=objf(s) gn=1; while gn记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 当前代最好和平均的适应度 [fmax,nmax]=max(f); ymean(gn)=1/mean(f); ymax(gn)=1/fmax; %记录当前代的最佳个体 x=s(nmax,:); gn=gn+1; %pause; end gn=gn-1; figure(2); plot(ymax,'r'); hold on; plot(ymean,'b');grid; title('搜索过程'); legend('最优解','平均解'); function pcc=pro(pc); test(1:100)=0; l=round(100*pc); test(1:l)=1; n=round(rand*99)+1; pcc=test(n); %-------------------------------------------------------------------------- %计算适应度 function [f,p]=objf(s); y=zeros(citynum+1,citynum+1); for i=1:inn-1 a=s(i,:); for j=1:KM-1 m=a(j); n=a(j+1); m=m+1; n=n+1; end y(m,n)=1; y=y'; for i=1:citynum for j=1:citynum mubiaob=c(i,j)*y(i,:); end end xuq1=0; for i=1:citynum for j=1:citynum xuq1=xuq1+s(i)*y(i,:)-q(i); end xuqiu=max((xuq1),0)*M; end end shij1=0; shij2=0; for i=1:citynum for j=1:citynum for l=1:citynum shij1=shij1+t(i)-a(i); shij2=shij12+b(i)-t(i); end shij3=max((shij1),0); shij4=max((shij2),0); shijian=M*shij3+M*shij4; end end f=mubiao+xuqiu+shijian; f=1/f; end %-------------------------------------------------------------------------- %计算选择概率 fsum=0; for i=1:inn fsum=fsum+f(i); end for i=1:inn ps(i)=f(i)/fsum; end %计算累积概率 p(1)=ps(1); for i=2:inn p(i)=p(i-1)+ps(i); end p=p'; p %-------------------------------------------------------------------------- %“选择”操作 %从种群中选择两个个体 function seln=sell(s,p) inn=size(p,1); for i=1:2 r=rand; %产生一个随机数 prand=p-r; j=1; while prand(j)<0 j=j+1; end seln(i)=j; %选中个体的序号 end sel1=seln(1); sel2=seln(2); %-------------------------------------------------------------------------- %“交叉”操作 function snew=cross(A,B,pc) A=s(sel1,:); B=s(sel2,:); c=find(A==0); d=find(B==0); a=sym(A); b=sym(B); k=size(a,2); for i=1:size(a,2) for j=1:k e(i,c(k))=a(i+k-1); end end for i=1:size(a,2) for j=1:k e(i,d(k))=b(i+k-1); end end c0=round(rand*(k-1))+1; c1=round(rand*(k-1))+1; a=[f(:,c0),a]; b=[e(:,c1),b]; for i=1:size(a,2); j=1:size(e,2) if a(i)==e(j) a(i)==[]; end end for i=1:size(b,2); j=1:size(f,2) if b(i)==f(j) b(i)==[]; end end a=double(a); b=double(b); g=zeros(size(A)); for i=1:size(a) for j=1:size(c) g(i+j)=a(i); end end h=zeros(size(A)); for i=1:size(b) for j=1:size(d) h(i+j)=b(i); end end g=g'; h=h'; snew=[g h]; %-------------------------------------------------------------------------- %变异 function snew=chang(snew,pm) bn=size(snew,2); snnew=snew; c2=round(rand*(bn-2))+1; %在[1,bn-1]范围内随机产生一个变异位 c3=round(rand*(bn-2))+1; chb1=min(c2,c2); chb2=max(c3,c2); x=snew(chb1+1:chb2); snnew(chb1+1:chb2)=fliplr(x); pmm=pro(pm); %根据变异概率决定是否进行变异操作,1则是,0则否 if pmm==1 c2=round(rand*(bn-2))+1; %在[1,bn-1]范围内随机产生一个变异位 c3=round(rand*(bn-2))+1; chb1=min(c2,c3); chb2=max(c2,c3); x=snew(chb1+1:chb2); snnew(chb1+1:chb2)=fliplr(x); end � EMBED Word.Document.8 \s ��� PAGE 18 _1312029778.unknown _1312034394.unknown _1312043354.unknown _1312045557.unknown _1312048502.unknown _1312048747.unknown _1312049818.doc 各客户总需求小于运货车的装载量 每个客户必须且只能被访问一次 运货车开始服务时间尽量在时间窗内 很多可行解 所选行车路径产生的总费用最小 最优解 _1312048769.unknown _1312048788.unknown _1312049528.doc 车 车 车 2 1 3 车 车 4 车 5 n 客户群3 客户群1 客户群2 中心仓库 客户群5 客户群4 ······ _1312048759.unknown _1312048527.unknown _1312045610.unknown _1312048313.unknown _1312048366.unknown _1312048474.unknown _1312048333.unknown _1312045725.unknown _1312045703.doc 目标函数: 约束条件 _1312044728.unknown _1312044984.unknown _1312045054.unknown _1312045086.unknown _1312045529.unknown _1312045563.unknown _1312045520.unknown _1312045071.unknown _1312045025.unknown _1312045041.unknown _1312044997.unknown _1312044951.unknown _1312044972.unknown _1312044931.unknown _1312038935.unknown _1312043534.unknown _1312044180.unknown _1312043512.unknown _1312033224.unknown _1312033399.unknown _1312033154.unknown _1312045594.unknown _1312043739.unknown _1312045393.unknown _1312045510.unknown _1312045555.unknown _1312045440.unknown _1312043753.unknown _1312043467.unknown _1312043647.unknown _1312043657.unknown _1312043512.unknown _1312043534.unknown _1312043460.unknown _1312043465.unknown _1312043450.unknown _1312043457.unknown _1312039431.unknown _1312040192.unknown _1312040257.unknown _1312043253.unknown _1312040324.unknown _1312040210.unknown _1312039577.unknown _1312040130.unknown _1312039486.unknown _1312038771.unknown _1312038935.unknown _1312039178.unknown _1312039375.unknown _1312039425.unknown _1312039214.unknown _1312039161.unknown _1312039083.unknown _1312038790.unknown _1312034406.unknown _1312034489.unknown _1312034674.unknown _1312034453.unknown _1312031590.unknown _1312034209.unknown _1312034268.unknown _1312032821.unknown _1312033399.unknown _1312034040.unknown _1312033384.unknown _1312033224.unknown _1312033298.unknown _1312033180.unknown _1312032942.unknown _1312033154.unknown _1312032117.unknown _1312032773.unknown _1312031604.unknown _1312032013.unknown _1312031507.unknown _1312031554.unknown _1312031578.unknown _1312031586.unknown _1312031520.unknown _1312031406.unknown _1312031471.unknown _1312031494.unknown _1312031438.unknown _1312031034.unknown _1312031181.unknown _1312031221.unknown _1312031320.unknown _1312031099.unknown _1312030902.unknown _1312030915.unknown _1312030890.unknown _1311961607.unknown _1311963128.unknown _1311963547.unknown _1311963641.unknown _1311963686.unknown _1311963590.unknown _1311963366.unknown _1311963480.unknown _1311963259.unknown _1311962595.unknown _1311962990.unknown _1311963060.unknown _1311962608.unknown _1311961883.unknown _1311962052.unknown _1311961623.unknown _1279961227.unknown _1279962076.unknown _1280520466.unknown _1280521917.unknown _1311961585.unknown _1280522658.unknown _1280520885.unknown _1279962229.unknown _1280518260.unknown _1280520453.unknown _1279963421.unknown _1279964068.unknown _1279962168.unknown _1279961267.unknown _1279961190.unknown