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

1 简介

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

img

img

img

img

img

img

img

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.

鲸鱼算法是一种模拟鲸鱼集群捕食行为的优化算法,具有全局搜索、性能稳定等优点。而在车辆路径问题中,时间窗的开放式问题更加复杂,需要考虑时间限制以及车辆容量等多个约束条件。 基于matlab鲸鱼算法求解时间窗开放式车辆路径问题,首先需要确定问题的目标函数以及各个约束条件。目标函数可以设定为最小化总路程或最小化总时间等,约束条件包括时间窗、容量、出发点和到达点等。 然后,可以利用matlab编写求解程序,采用鲸鱼算法进行全局搜索。具体来说,可以将路线规划问题转化为一个优化问题,使用遗传算法或粒子群算法等优化算法进行求解,同时考虑各个约束条件。 在程序中,可以使用矩阵存储车辆容量、位置、时间窗等信息,采用突变、选择、交叉等操作进行遗传变异。在每次迭代中,根据当前种群中每个个体的适应度值对其进行排序,以选择较优的个体进行交叉和变异,从而逐渐优化解决方案。同时,可以设置停止迭代的条件,以保证程序的效率。 最后,需要对求解结果进行评估,并进行可视化展示。评估可以使用各种准则进行,如各辆车的路程、总路程、服务时间等指标。可视化可以使用matlab中的绘图工具进行展示,包括路线图、车辆调度图等。 总之,基于matlab鲸鱼算法求解时间窗开放式车辆路径问题,需要深刻理解问题本质,熟练掌握编程技能,对算法进行适当优化,并进行评估和可视化。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab科研辅导帮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值