【路径规划-VRP问题】基于人工蜂群算法求解双层2E-VRP问题matlab代码

本文介绍了一种结合大规模邻域搜索的改进人工蜂群算法,针对带载重量限制的CVRP和2E-VRP问题进行求解。算法将LNS方法与ABC算法融合,提升了搜索效率,特别关注于双层运输系统的路径优化。研究展示了在复杂物流场景中的应用实例和仿真结果。
摘要由CSDN通过智能技术生成

1 简介

本文利用人工蜂群算法求解带载重量限制的车辆路径问题(Capacitated vehicle routing problem, CVRP)和双层车辆路径问题(2E-VRP)。CVRP是传统的单层车辆路径问题,而2E-VRP问题来源于当代城市物流中的双层运输系统。与CVRP直接配送至目标客户不同,在双层运输系统中,货物先到达配送中心,经过卫星平台中转后运送到目标客户。CVRP问题和2E-VRP问题都是属于NP-Hard难题,对算法的局部搜索能力和全局搜索能力都有很高的要求。大规模邻域搜索(Large neighborhood search, LNS)方法通过使用启发式规则搜索非常复杂的邻域,近年来在运输和调度问题上的应用表现突出,而人工蜂群算法(Artifical Bee Colony,ABC)是一种新兴的仿生群体智能算法,具有较强的全局寻优能了,我们将大规模邻域搜索方法应用于人工蜂群算法中,融合了两者的优点,使算法有更强的搜索能力。双层车辆路径问题是本文的研究重点,结合双层车辆路径问题的分层特点,本文同样设计了一种基于大规模邻域搜索的改进人工蜂群算法用于求解该问题。算法通过对第一层的路径和第二层的路径进行破坏与修复从而找到一个更优的邻域。​

2 部分代码

%% -----------------------------信息提取程序-----------------------------

clear all; close all; clc; rand('state', sum(100*clock)); format bank;

%----4个文件下的测试样本数目----

seq_dataset = [21,18,54,18]; %dataset文件下的4个文件Set2-Set5中测试样例数目

%----参数设置----

runs        = 20;                 %重复实验次数

max_iter    = 500000;             %每次实验最多迭代次数500k

%各文件夹内数据总量分别为:21,18,54,18; %文件夹的序号:1-4->Set2-Set5;

%----Start----

tic

for num_folder = 1:4%1:4                    %文件夹的序号:1-4分别对应文件夹Set2-Set5;

    seq_data = seq_dataset(num_folder);      %第num_folder个文件夹的测试样本总数

    nn = seq_data;                                  %set2中的第2个问题

    result.name=0;

    result.val=0;

    all_result_pool=cell(1,nn);

    for seq = 1:seq_data  %1:seq_data

       %----提取文件的仓库、卫星、客户坐标、车辆信息和客户需求----

        %coord_dep:仓库的坐标

        %coord_sat:卫星(中转站)坐标

        %coord_cus:客户的坐标

        %fleet:车辆信息,fleet(1,1)为第一层车辆的最大载重量  fleet(1,2)为第一层可使用的车辆数目  fleet(2,1)为第二层车辆的最大载重量  fleet(2,2)为第二层可使用的车辆数目

        %demand:客户需求

        [coord_dep,coord_sat,coord_cus,fleet,demand,name] = extractdata(num_folder,seq);

        [result_pool,fitness_pool]=run_abc(coord_dep,coord_sat,coord_cus,fleet,demand,50,100);

        minval = min(fitness_pool);

        id = find(minval==fitness_pool);

        result_best = result_pool{id(1)};

        %画图工具

        draw_plot(result_best,coord_dep,coord_sat,coord_cus,name);

        [s2s_dist,s2d_dist,c2s_dist,c2c_dist] =compute_dist2(coord_dep,coord_sat,coord_cus);

        result.name = name;

        result.val = minval;

        result.path = result_best;

        all_result_pool{seq} = result;

        %%输出格式要求

%         lay_out(result_best,name,demand,c2c_dist,c2s_dist,s2d_dist,s2s_dist,minval,fleet);

    end

%     save all_result_pool all_result_pool;

end

toc

img =gcf;  %获取当前画图的句柄

print(img, '-dpng', '-r600', './运行结果.png')         %即可得到对应格式和期望dpi的图像

3 仿真结果

4 参考文献

[1]林镇泽. 求解双层车辆路径问题的改进人工蜂群算法[D]. 华南理工大学.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Matlab科研辅导帮

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

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

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

打赏作者

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

抵扣说明:

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

余额充值