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

1 算法介绍

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

VRP简介见这里

1.2 狼群算法

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

 

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 仿真结果

 4 参考文献

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

5 代码下载

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
VRP问题(Vehicle Routing Problem)是一个经典的路径规划问题,主要研究如何合理分配配送车辆到待服务的客户点,并在满足各类约束条件的前提下,确定最优的配送路径以最大限度地降低总成本。 在传统的VRP问题中,每个客户点都有一个固定的服务时间。然而,在实际情况中,有些客户点可能会有时间约束,即只能在某个时间段内进行服务。这就是时间车辆路径规划问题。 为了求解时间VRP问题,可以采用禁忌搜索算法。禁忌搜索算法是一种元启发式搜索算法,通过维护一个禁忌列表来避免搜索过程中陷入局部最优解。 具体求解时间VRP问题时,可以参考以下步骤: 1. 初始化:随机生成初始解,即车辆路线的初始分配方案。 2. 邻域生成:通过交换、插入或删除操作,生成当前解的邻域解集。 3. 评价和选择:对邻域解集中的解进行评价,并选择满足约束条件且评价最好的解作为当前解。 4. 更新禁忌列表:将当前解加入禁忌列表中,更新禁忌列表中的解的禁忌状态。 5. 终止条件:根据预设的终止条件(例如达到最大迭代次数或无法改善解),判断是否停止搜索。 6. 返回最优解:返回搜索过程中的最优解作为问题的解。 通过利用禁忌搜索算法求解时间车辆路径规划问题,能够快速找到满足约束条件的优化方案,使得配送车辆的总成本最小化,提高了运输效率和配送质量。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值