1 简介
在给定有限的候选公交站点、有限的连接,已知各OD对乘客的出行需求的情况下,进行定制公交的路线设计,寻找最优的运行路线,确定每辆车运送的乘客数量。车辆从场站出发,最终返回场站。每个站点有规定的时间间隔,车辆超出该时间间隔外到达站点将有乘客放弃使用该服务。 假设:(1)已知各OD对的出行需求;(2)预先设定每个站点的规定时间间隔和停站时间;(3)已知站点间的运行时间和距离;(4)车辆的容量和平均车速是给定的常数;(5) 定制公交运行线路是双向的物理网络。
2 部分代码
% % clear clc close all tic %% 用importdata这个函数来读取文件 c101=importdata('.\data\c101.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 仿真结果
4 参考文献
[1]阎庆, and 邰蕾蕾. "用混合遗传算法解决有时间窗的车辆路径规划问题." 安徽大学学报(自科版) 032.002(2007):41-44.