当前位置:首页 > IT技术 > 编程语言 > 正文

【路径规划】基于遗传算法求解带时间窗带容量公交车车辆路径规划问题(CVRPTW)matlab源码
2021-10-21 23:05:43

1 简介

在给定有限的候选公交站点、有限的连接,已知各OD对乘客的出行需求的情况下,进行定制公交的路线设计,寻找最优的运行路线,确定每辆车运送的乘客数量。车辆从场站出发,最终返回场站。每个站点有规定的时间间隔,车辆超出该时间间隔外到达站点将有乘客放弃使用该服务。    假设:(1)已知各OD对的出行需求;(2)预先设定每个站点的规定时间间隔和停站时间;(3)已知站点间的运行时间和距离;(4)车辆的容量和平均车速是给定的常数;(5) 定制公交运行线路是双向的物理网络。

【路径规划】基于遗传算法求解带时间窗带容量公交车车辆路径规划问题(CVRPTW)matlab源码_VRPTW

【路径规划】基于遗传算法求解带时间窗带容量公交车车辆路径规划问题(CVRPTW)matlab源码_VRPTW_02

【路径规划】基于遗传算法求解带时间窗带容量公交车车辆路径规划问题(CVRPTW)matlab源码_VRPTW_03

【路径规划】基于遗传算法求解带时间窗带容量公交车车辆路径规划问题(CVRPTW)matlab源码_VRPTW_04

【路径规划】基于遗传算法求解带时间窗带容量公交车车辆路径规划问题(CVRPTW)matlab源码_VRPTW_05

【路径规划】基于遗传算法求解带时间窗带容量公交车车辆路径规划问题(CVRPTW)matlab源码_VRPTW_06

【路径规划】基于遗传算法求解带时间窗带容量公交车车辆路径规划问题(CVRPTW)matlab源码_VRPTW_07

2 部分代码

%
%
clear
clc
close all
tic
%% 用importdata这个函数来读取文件
c101=importdata('.datac101.txt');
cap=50;                                                       %车辆最大装客量
%% 提取数据信息
E=c101(1,5);                                                   %发车中心时间窗开始时间
L=c101(1,6);                                                   %发车中心时间窗结束时间
vertexs=c101(:,2:3);                                           %所有点的坐标x和y
customer=vertexs(2:end,:);                                       %站点坐标
cusnum=size(customer,1);                                         %站点数
v_num=21;                                                       %车辆最多使用数目
demands=c101(2:end,4)./2;                                         %每个站点乘客量
a=c101(2:end,5);                                               %站点时间窗开始时间[a[i],b[i]]
b=c101(2:end,6);                                               %站点时间窗结束时间[a[i],b[i]]
s=c101(2:end,7);                                               %站点的服务时间
h=pdist(vertexs);
dist=squareform(h);                                             %距离矩阵,满足三角关系,暂用距离表示花费c[i][j]=dist[i][j]
alpha=10;                                                       %违反的容量约束的惩罚函数系数
belta=100;                                                     %违反时间窗约束的惩罚函数系数
MAXGEN=100;                                                     %迭代次数
%% 遗传算法
NIND=100;                                                       %种群大小
Pc=0.9;                                                         %交叉概率
Pm=0.05;                                                       %变异概率
GGAP=0.9;                                                       %代沟(Generation gap)
N=cusnum+v_num-1;                                               %染色体长度=站点数目+车辆最多使用数目-1
addpath('.GA')
[FF_GA,bestVC_GA]=ga(cusnum,a,b,L,s,dist,demands,cap,NIND,N,alpha,belta,GGAP,Pm,Pc,MAXGEN);
rmpath('.GA')
%%
%% 禁忌搜索设置参数
lamda=0.015;
delta=0.5;
vehicles_customer=cell(cusnum,1);                           %每辆车所经过的站点
TbLength=20; %禁忌长度
addpath('.TW')
[FF_TW,bestVC_TW]=TW(cusnum,a,b,L,s,dist,demands,cap,alpha,belta,MAXGEN,TbLength,delta,lamda);
rmpath('.TW')
disp('遗传算法最优解:')
draw_Best(bestVC_GA,vertexs);
title('遗传算法最优派车方案路线图')
disp('禁忌搜索算法最优解:')
draw_Best(bestVC_TW,vertexs);
title('禁忌搜索算法最优派车方案路线图')
figure(3);
hold on;box on
xlim([0,MAXGEN])
title('迭代曲线')
xlabel('代数')
ylabel('最优值')
plot(1:MAXGEN,FF_GA,'b-',1:MAXGEN,[FF_TW,FF_TW(end)],'r-')
legend('遗传算法','禁忌搜索算法')
toc


3 仿真结果

【路径规划】基于遗传算法求解带时间窗带容量公交车车辆路径规划问题(CVRPTW)matlab源码_VRPTW_08

【路径规划】基于遗传算法求解带时间窗带容量公交车车辆路径规划问题(CVRPTW)matlab源码_VRPTW_09

4 参考文献

[1]阎庆, and 邰蕾蕾. "用混合遗传算法解决有时间窗的车辆路径规划问题." 安徽大学学报(自科版) 032.002(2007):41-44.

【路径规划】基于遗传算法求解带时间窗带容量公交车车辆路径规划问题(CVRPTW)matlab源码_VRPTW_10

本文摘自 :https://blog.51cto.com/u

开通会员,享受整站包年服务立即开通 >