【VRP问题】基于狼群算法WPA求解带时间窗车辆路径规划问题(VRPTW)matlab源码

【VRP问题】基于狼群算法WPA求解带时间窗车辆路径规划问题(VRPTW)matlab源码

1 算法介绍

针对城市物流配送和交通运输中广泛存在的带时间窗车辆路径问题,为寻求最佳路径规划,应用惩罚函数,构建了以总运输成本最小为目标的数学模型.在车辆路径优化求解方面,根据问题具体特征设计了1种二维编码方式,并采用近邻初始化方式构建初始解从而提升寻优速率;随后,结合狼群算法觅食行为中的游走、召唤及围攻3种行为,重新定义其智能行为,设计了一种求解带时间窗车辆路径问题的狼群算法.由于原始狼群算法的召唤行为引入距离判定因子来增大种群搜索空间,但也增加了算法复杂性且易陷入局部最优,故本研究舍弃了距离判定因子,采用猛狼1次奔袭便进入围攻状态来降低算法复杂度,并在算法中进一步增强了种群间信息交互.最后,应用该狼群算法求解多个测试算例.结果表明:狼群算法在求解带时间窗的车辆路径问题时是可行的、有效的;与禁忌搜索算法、遗传算法、改进蚁群算法和混合粒子群算法等常见智能优化算法相比,狼群算法不仅具有收敛速度快和搜索质量高等优点,而且拥有良好的稳定性和求解效果.

1.1 VRP模型

1 VRP问题

车辆路径规划问题(Vehicle Routing Problem,VRP)一般指的是:对一系列发货点和收货点,组织调用一定的车辆,安排适当的行车路线,使车辆有序地通过它们,在满足指定的约束条件下(例如:货物的需求量与发货量,交发货时间,车辆容量限制,行驶里程限制,行驶时间限制等),力争实现一定的目标(如车辆空驶总里程最短,运输总费用最低,车辆按一定时间到达,使用的车辆数最小等)。

2 VRPTW问题

带时间窗的车辆路径规划问题(Vehicle Routing Problem with Time Window,VRPTW)是在VRP基础上添加配送时间约束条件产生的一个新问题。在这类问题中,给定车辆到达目的地的最早时间和最晚时间,要求车辆必须在规定的时间窗内到达,早于最早时间或晚于最晚时间都要产生额外的惩罚费用。此时,决策如何规划调度车辆使得配送的总费用最小化。

VRP与VRPTW对比:

在这里插入图片描述1.2 狼群算法

狼群算法与蜂群算法拥有异曲同工之处,即利用个体分工与群体间信息交互实现协同作业) 在整个狼群系统中拥有头狼(探狼和猛狼三种角色) 其中,头狼始终是狼群中最具智慧(最强大的存在'其根据收集到的信息作出合理决策,为族群下达正确的行动指令,探狼是勘察猎物的好手,其通过感知空气中猎物散发的气味来确定猎物的大致方位,并沿着气味浓度最大的方向搜索,一旦探寻到猎物的位置即刻向头狼禀报族群中头狼与探狼之外的其他狼为猛狼,在确定猎物位置后,猛狼听从头狼的行动指令,向猎物奔袭逼近形成围攻。此外,为了保证族群的生存与发展,狼群始终延续着弱肉强食,适者生存的自然法则,依照生存环境和种族状况自动进行种群更新,剔除劣势,保存种群力量。

【VRP问题】基于狼群算法WPA求解带时间窗车辆路径规划问题(VRPTW)matlab源码_第1张图片

 【VRP问题】基于狼群算法WPA求解带时间窗车辆路径规划问题(VRPTW)matlab源码_第2张图片

【VRP问题】基于狼群算法WPA求解带时间窗车辆路径规划问题(VRPTW)matlab源码_第3张图片

2 部分代码

%% 狼群算法求解
tic
clear
clc
%% 用importdata这个函数来读取文件
% c101=importdata('.\Solomon\c102.txt');
c101=importdata('c101.txt');
cap=200;
%% 提取数据信息
E=c101(1,5);                                                    %无人机起点时间窗开始时间
L=c101(1,6);                                                    %无人机起点时间窗结束时间
vertexs=c101(:,2:3);                                            %所有点的坐标x和y
customer=vertexs(2:end,:);                                      %目标坐标
cusnum=size(customer,1);                                        %目标数
v_num=12;                                                        %无人机最多使用数目
demands=c101(2:end,4);                                          %需求量
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);                                             %距离矩阵
%% 模拟退火参数
belta=10;                           %违反的无人机容量约束的惩罚函数系数
gama=100;                           %违反无人机侦察时间窗约束的惩罚函数系数
MaxOutIter=1000;                    %外层循环最大迭代次数
MaxInIter=30;                      %人工探狼的最大游走次数
tt=2;%步长差别因子
ww=0.1;%距离判定因子
step=1;%步长因子
dnear=ww;%表示人工猛狼与发起召唤行为的人工探狼已经很近,dnear为判定距离
stepa=step/tt;%人工探狼的游走步长
stepb=step;%人工猛狼的奔袭步长
stepc=step/(2*tt);%人工狼的攻击步长
f=10;%方向因子
pSwap=0.2;                          %选择交换结构的概率
pReversion=0.5;                     %选择逆转结构的概率
pInsertion=1-pSwap-pReversion;      %选择插入结构的概率
N=cusnum+v_num-1;                   %解长度=目标数目+无人机最多使用数目-1
%% 随机构造初始解
MM=10;%狼群数量
bestCost=inf;
for i=1:MM
    currS=randperm(N);                  %随机构造初始解
    [currVC,NV,TD,violate_num,violate_cus]=decode(currS,cusnum,cap,demands,a,b,L,s,dist,MM);   %对初始解解码
    %求初始配送方案的成本=无人机行驶总成本+belta*违反的容量约束之和+gama*违反时间窗约束之和
    currCost=costFuction(currVC,a,b,s,L,dist,demands,cap,belta,gama);
    if currCost<=bestCost%若某匹人工探狼感知到的猎物气味浓度大于头狼所感知的
        Sbest=currS;                        %初始将全局最优解赋值为初始解
        bestVC=currVC;                      %初始将全局最优配送方案赋值为初始配送方案
        bestCost=currCost;                  %初始将全局最优解的总成本赋值为初始解总成本
        
    end
end
​
%% 狼群算法
for outIter=1:MaxOutIter
​
end
%% 打印外层循环每次迭代的全局最优解的总成本变化趋势图
figure;
plot(BestCost(10:1000),'LineWidth',1);
title('狼群优化全局最优解的侦察总成本变化趋势图')
xlabel('迭代次数');
ylabel('总成本');
%% 打印全局最优解路线图
draw_Best(bestVC,vertexs);
toc

3 仿真结果

【VRP问题】基于狼群算法WPA求解带时间窗车辆路径规划问题(VRPTW)matlab源码_第4张图片【VRP问题】基于狼群算法WPA求解带时间窗车辆路径规划问题(VRPTW)matlab源码_第5张图片

 4 参考文献

[1]叶勇, 张惠珍. 求解带时间窗车辆路径问题的狼群算法[J]. 公路交通科技, 2017(10).

5 代码下载

 

你可能感兴趣的:(路径规划,自动驾驶,算法,matlab)