【路径规划】基于人工蜂群算法求解多配送中心的车辆路径规划问题matlab源码

211 阅读3分钟

1 简介

车辆路径优化问题是典型的组合优化问题,是基于系统优化的思想,对运输作业服务中车辆的路径进行优化的方式,以达到运输作业服务中目标函数最优化的问题。随着经济节奏的加快对运输作业服务所提出的要求多样化,以及车辆路径优化问题研究的深入,车辆路径优化问题衍生出了数量繁多的种类、取得了不菲的成就,也更一步贴近了实际运输作业服务所面临的场景。  然而,在为数众多的研究成果中,绝大多数的学者都忽略了运输作业服务非一次性的特性,更多地追求当前运输作业服务的目标最优化,忽略了当前运输作业服务目标最优化可能给下一周期运输作业服务可能带来的不便,甚至于对运输作业服务长期成本控制可能带来的负面效应。  本文在追求当前周期运输作业服务成本最小化的基础上,将尽可能减小对下一周期运输作业带来的影响加入问题的考虑范围,即同时追求下一周期运输作业开始前配送中心预计发货量与停靠车辆运输能力之间方差和最小化,提出了改进之后的半开放式车辆路径规划的概念。建立了基于多配送中心多车型条件下的目标优化问题模型——半开放式多配送中心多车型车辆路径优化问题数学模型。利用人工蜂群优化算法对初始解依赖性小,参数简单易于控制的优点求解该问题的经典算例,以验证本文所提出的半开放式车辆路径规划策略的可行性、问题数学模型的有效性,并求得最终的优化解。

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

`

3 仿真结果

4 参考文献

[1]白焘, 李鸣, and 严良涛. "蜂群算法在冷链物流配送车路径规划中的应用." 湖北农业科学 22(2016).

部分理论引用网络文献,若有侵权联系博主删除。

5 MATLAB代码与数据下载地址

见博客主页