科学网旅行商问题车辆路径问题
旅行商和车辆路径问题是组合优化问题,是很多工程优化问题的基本原型。
旅行商问题:N个城市,找到一条路径遍历这些程序,追求距离最小。例如:五个城市1,2,3,4,5,一条路径为3-2-1-4-5.
车辆路径问题:N个客户,一个调度中心,构建几条车辆路径,从调度中心出发,访问几个客户,返回调度中心。例如:五个客户1,2,3,4,5,调度中心0,两条路径为0-1-2-0,0-4-3-5-0.
两个问题是接驳公交、车间作业调度、手术排班、飞行计划排班、跑道进离场排序等问题的问题原型,研究内容和形式相似,可以解决该问题的数学模型和算法求解思路、框架。
以遗传算法求解旅行商和车辆路径问题的思路为了,核心在于染色体编码,主要思路有二:
第一、自然数编码,以10个客户为例,如果旅行商问题可以编码为3-2-1-4-5-6-7-8-9-10,如果车辆路径问题(两辆车),采用n+2模式,编码为12-3-2-1-11-4-5-6-7-8-9-10,以11和12为辆车,解码为车辆2:3-2-1 车辆1:4-5-6-7-8-9-10
第二、实数或整数编码,对车辆路径问题,先确定每个客户的被分配车辆,然后利用最短路算法确定路径。例如:五个客户、辆车2的编码为1 2 1 1 2,车辆1访问1、3、4、车辆2访问3和5,它们的顺序由最短路确定
在此基础上,如果需要确定车辆的出发时刻表,增加染色体的维度,即:1 2 1 1 2 6:30 6:40
嵌入Dijkstra的遗传算法部分代码如下:
______________________________初始化过程_____________________________________________
MaxCapicity=12;
StartTime=360; %1小时内的车辆调度
Costomers=[2 1 2 2 2 2 1 2 2 2 2 1 2 2 2 2 1 2 2 2 2 1 2 2 2 2 1 2 2 2 1 1 2;
510 500 480 400 600 480 400 400 370 460 390 450 380 380 380 400 480 390 420 410 390 480 490 480 430 460 400 600 470 470 400 480 480 ;
520 510 490 410 610 500 430 430 390 480 420 480 400 410 400 420 510 420 430 430 420 500 510 510 450 470 430 610 480 490 410 500 490 ;
30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30;];%人数,客户点起讫时间窗,最大在车时间等
NumberOfCostomers=size(Costomers,2);
NumberOfRoutes=6;
lb = repmat(1,1,NumberOfCostomers );
ub = repmat(NumberOfRoutes , 1,NumberOfCostomers );
lb =[lb , repmat(1,1,NumberOfRoutes )];
ub = [ub, repmat(NumberOfDepots , 1,NumberOfRoutes )];
lb =[lb , repmat(0,1,NumberOfRoutes )];
ub = [ub, repmat(60 , 1,NumberOfRoutes )];
options = gaoptimset('stallGenLimit',200,'TolFun',1e-10,'ParetoFraction',0.3,'EliteCount',0.05*PopulationSize,'CrossoverFraction',0.8, 'PopulationSize', PopulationSize,'Generations', 5000,'PlotFcn',@gaplotpareto);
[x,Fval,exitFlag,Output] = gamultiobj(@GA_fun, NumberOfCostomers+2*NumberOfRoutes, [], [], [], [], ...
lb, ub, [], options);
____________________________解码过程____________________________________________________
function Fitness = GA_fun(chrom)
busTask=zeros(NumberOfRoutes,51);
for eachtrip=1:NumberOfCostomers
%提取不同飞机跑道的起飞降落航班分配
eachbus=round(chrom(eachtrip));
busTask(eachbus,51)= busTask(eachbus,51)+1;
busTask(eachbus,busTask(eachbus,51))=eachtrip;
routeCapicity(eachbus)=routeCapicity(eachbus)+Costomers(1,eachtrip);
end
%各个班次在跑道的排序
for eachbus=1:NumberOfRoutes
if busTask(eachbus,51)>0&& busTask(eachbus,51)< NumberOfCostomers/(NumberOfRoutes-2)
if routeCapicity(eachbus)>MaxCapicity
Fitness(2)=publishment;
break;
end
Fitness(2)= Fitness(2)+120;
%起始节点包含其中,结束节点不包括在内,故应该另外增加进去
startPoint=NumberOfCostomers+round(chrom(NumberOfCostomers+eachbus));
endPoint=NumberOfCostomers+NumberOfDepots+1;
% busTask(eachbus,1:busTask(eachbus,51))
routeSet=Dijkstra(NumberOfCostomers+NumberOfDepots+1,Distance,busTask(eachbus,1:busTask(eachbus,51)),startPoint,endPoint);
route=GetRoute(busTask(eachbus,1:busTask(eachbus,51)),routeSet,startPoint);
eachRoutePassenger=eachRoutePassenger+Distance(route(i-1),route(i));
end
else
Fitness(2)=publishment;
end
end
Fitness2=Fitness(1);
魏明 中国民航大学空中交通管理学院
魏明的学术名片
同类文章排行
- 李克强作出重要批示强调 紧密结合“一带一路”
- 山西高平规上企业全部复工复产
- 稳步推进金融改革开放
- 定海新建社区党员群众
- 重磅!揭开神秘面纱 央行详解人民币中间价形成
- 西宁至成都铁路(四川段)施工正式启动
- 张德江会见斯洛文尼亚国民委员会主席
- 王健林又悄悄卖了几家万达广场!保险、信托接
- 利率市场化改革要健全完善央行政策利率体系
- 浙江职业教育创新发展纪事
最新资讯文章
- “车电包”拉动4万余辆新能源汽车消费
- 西宁至成都铁路(四川段)施工正式启动
- 国际邮轮巨头积极布局市场复苏
- 长春新区“视频签约”7个项目 总投资135亿元
- 福建省发改委落实降低企业用电用气成本政策
- 解燃眉之急 点希望之灯—— “四无忧”助力疫情防控和企业加
- 江西宜春高安:农技专家“学雷锋” 防疫春耕来帮忙
- 国资委副主任翁杰明:国企要下更大功夫推动产业数字化智能化
- 多地加码基建投资 二季度重大建设项目审批料提速
- 江西推出“电十条”助力企业复工复产
- 青海至河南特高压直流输电工程青海段复工
- 雅中直流有序复工 加快建成“西电东送”大动脉
- 山西高平规上企业全部复工复产
- 宁夏三条外送通道送电助“工”华东企业
- 广东预计2020年三季度末完成5万座5G基站建设
- 全国有线电视网络整合和广电5G建设一体化发展工作启动
- 山西高平餐饮企业“无接触”服务保安全
- 2020年3月6日国内新闻简报
- 上海老字号:疫情之下以变应变 化危为机谋发展
- 福建泉州:督导银行业机构帮扶受疫情影响企业及支持复工复产