【VRP问题】基于头脑风暴优化算法求解带时间窗和同时取送货的车辆路径问题附matlab代码

简介: 【VRP问题】基于头脑风暴优化算法求解带时间窗和同时取送货的车辆路径问题附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

本文主要研究广州番禺配送中心的车辆路径规划问题,首先针对之前车辆运行中的先送货后取货模式,产生车辆运行路线的迂回,以及车辆在回程中的空载,路径规划不合理,送货时间长的问题,采用集成的观点同时考虑有取货要求的客户和有送货要求的客户,把所有的送货订单和取货订单在前一天汇集到配送中心,这样每个客户的取货需求量和送货需求量根据前一天订单信息得到确认;从而可以确定配送中心以及每个顾客的位置和需求量,从而进行同时取送货,送货是针对当天的配送中心收到的货物,取货是针对前一天有发货需求的客户。在基本VRPSDP模型的基础上,加入时间窗因素,以配送车辆总的成本为优化目标,给出T公司广州番禺配送中心同时取送货的运作模式。

1.1. 问题描述

根据番禺配送中心的实际作业情况,本文将传统的同时取送货的车辆路径问题进行重新定义:给定一

个配送中心和多辆配送车辆,多量车辆从番禺配送中心出发,分别根据安排好的路线到各个客户处送货,

同时将具有取货需求的客户的货物运回配送中心。这里配送中心送的货物是当天需要配送的货物,而运回

的货物则是客户前一天需要运回的货物。要求在给定的约束条件下,合理安排车辆的行走路径,在综合考

虑各车型的固定成本和可变配送成本的前提下,以总成本最小为目标,以尽可能提高车辆满载率、减少出

行次数为思路,构建多车型的同时取送货的车辆路径优化模型。本文研究的车辆路径问题的假设如下:

1) 只有 1 个配送中心,且配送中心的地理位置已知;

2) 货物可以混装;

3) 配送中心与需求点的坐标位置及送货和取货量均已知;

4) 各种车型的车辆数已知,且各车型的固定费用、旅行费用、车容量均已知;

5) 每辆车服务 1 条回路,由番禺配送中心出发最终回到番禺配送中心;

6) 每辆车在行驶中的车载质量不超过该车型的容限制;

7) 每辆车每次的配送距离超过该车型允许的最大行驶距离;

8) 每个需求点能且只能由同一辆车进行服务,每个客户最多被服务两次;

9) 货物在运输途中不会变质损坏;不考虑司机的工作时间;不考虑道路的通行情况;不考虑运输时

的规章制度等。

⛄ 部分代码

%% Regret2Ins 依次将removed中的顾客插回配送方案中

%先计算removed中各个顾客插回当前解中所产生最小距离增量,然后再从上述各个最小距离增量的顾客中

%找出一个(距离增量第2小-距离增量第1小)最大的顾客插回,反复执行,直到全部插回

%输入removed:     被移除顾客的集合

%rfvc:            破坏后的配送方案

%输入demands:     顾客需求量

%输入pdemands:    顾客回收量

%输入cap:         车辆最大装载量

%输入a:           顾客时间窗开始时间[a[i],b[i]]

%输入b:           顾客时间窗结束时间[a[i],b[i]]

%输入L:           配送中心时间窗结束时间

%输入s:           客户点的服务时间

%输入dist:        距离矩阵

%输入v:           车辆行驶速度

%repFvc:          修复后的配送方案

function repFvc=Regret2Ins(removed,rfvc,demands,pdemands,cap,a,b,L,s,dist,v)

rfvcp=rfvc;             %复制部分解

%反复插回removed中的顾客,直到全部顾客插回

while ~isempty(removed)

   nr=length(removed);     %移除集合中顾客数目

   ri=zeros(nr,1);         %存储removed各顾客最“好”插回路径

   rid=zeros(nr,1);        %存储removed各顾客插回最“好”插回路径后的遗憾值增量

   NV=size(rfvcp,1);           %当前解所用车辆数目

   %逐个计算removed中的顾客插回当前解中各路径的目标函数值增

   for i=1:nr

       visit=removed(i);           %当前要插回的顾客

       dec=[];                     %对应于rc的成本节约值

       ins=[];                     %记录可以插回路径的序号

       for j=1:NV

           route=rfvcp{j};          %当前路径

           %% 判断能否将一个顾客插入到一条路径中,如果能,则将该顾客插入到最佳位置(目标函数增加最小的位置)

           [~,flag,deltaC]=insRoute(visit,route,demands,pdemands,cap,a,b,L,s,dist,v);

           %flag=1表示能插入,flag=0表示不能插入

           if flag==1

               dec=[dec;deltaC];

               ins=[ins;j];

           end

       end

       %如果存在符合约束的插回路径,则找出记录遗憾值以及对应的路径

       if ~isempty(ins)

           [sd,sdi]=sort(dec);                 %将dec升序排列

           insc=ins(sdi);                      %将ins的序号与dec排序后的序号对应

           ri(i)=insc(1);                      %更新当前顾客最“好”插回路径

           if size(ins)>1

               de12=sd(2)-sd(1);                   %计算第2小成本增量与第1小成本增量差值

               rid(i)=de12;                        %更新当前顾客插回最“好”插回路径后的遗憾值

           else

               de12=sd(1);                   %计算第2小成本增量与第1小成本增量差值

               rid(i)=de12;                        %更新当前顾客插回最“好”插回路径后的遗憾值

           end

       else    %如果不存在符合约束的路径,则新建路径

           temp=[visit];

           ri(i)=NV+1;

           rid(i)=part_length(temp,dist);

       end

   end

   %根据rid  rid最大的顾客就是先插回的顾客

   [~,firIns]=max(rid);            %找出遗憾值最大的顾客序号

   readyV=removed(firIns);          %removed中准备插回的顾客

   rIns=ri(firIns);                %插回路径序号

   %如果插回路径为新建路径

   if rIns==NV+1

       temp=readyV;

       %新建路径,并将removed(firIns)插到该路径中

       rfvcp{rIns,1}=temp;

       %将removed(firIns)顾客从removed中移除

       removed(firIns)=[];

   else

       %将firIns插回到rIns

       rfvcp{rIns,1}=insRoute(removed(firIns),rfvcp{rIns,1},demands,pdemands,cap,a,b,L,s,dist,v);

       %将removed(firIns)顾客从removed中移除

       removed(firIns)=[];

   end

end

repFvc=rfvcp;

end

⛄ 运行结果

⛄ 参考文献

[1] 王超, 刘超, 穆东,等. 基于离散布谷鸟算法求解带时间窗和同时取送货的车辆路径问题[J]. 计算机集成制造系统, 2018, 24(3):13.

[2] 关丽霞. 带软时间窗和同时取送货的车辆路径问题研究[D]. 中南大学, 2010.

[3] 汤雅连, 蔡延光, 蔡颢. 一种求解多车场多车型带同时取送货及时间窗的车辆路径优化问题的改进遗传算法[C]// 中国系统工程学会. 中国系统工程学会, 2014.

[4] 蒋毅. 基于蚁群优化算法的车辆路径问题研究[D]. 吉林大学, 2007.

⛳️ 完整代码

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
|
2天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
103 80
|
21天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。
|
7天前
|
供应链 算法 调度
排队算法的matlab仿真,带GUI界面
该程序使用MATLAB 2022A版本实现排队算法的仿真,并带有GUI界面。程序支持单队列单服务台、单队列多服务台和多队列多服务台三种排队方式。核心函数`func_mms2`通过模拟到达时间和服务时间,计算阻塞率和利用率。排队论研究系统中顾客和服务台的交互行为,广泛应用于通信网络、生产调度和服务行业等领域,旨在优化系统性能,减少等待时间,提高资源利用率。
|
14天前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。
|
23天前
|
算法
基于GA遗传算法的PID控制器参数优化matlab建模与仿真
本项目基于遗传算法(GA)优化PID控制器参数,通过空间状态方程构建控制对象,自定义GA的选择、交叉、变异过程,以提高PID控制性能。与使用通用GA工具箱相比,此方法更灵活、针对性强。MATLAB2022A环境下测试,展示了GA优化前后PID控制效果的显著差异。核心代码实现了遗传算法的迭代优化过程,最终通过适应度函数评估并选择了最优PID参数,显著提升了系统响应速度和稳定性。
|
14天前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如"How are you"、"I am fine"、"I love you"等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
20天前
|
算法
基于WOA鲸鱼优化的购售电收益与风险评估算法matlab仿真
本研究提出了一种基于鲸鱼优化算法(WOA)的购售电收益与风险评估算法。通过将售电公司购售电收益风险计算公式作为WOA的目标函数,经过迭代优化计算出最优购电策略。实验结果表明,在迭代次数超过10次后,风险价值收益优化值达到1715.1万元的最大值。WOA还确定了中长期市场、现货市场及可再生能源等不同市场的最优购电量,验证了算法的有效性。核心程序使用MATLAB2022a实现,通过多次迭代优化,实现了售电公司收益最大化和风险最小化的目标。
|
17天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。
|
1天前
|
算法
基于EO平衡优化器算法的目标函数最优值求解matlab仿真
本程序基于进化优化(EO)中的平衡优化器算法,在MATLAB2022A上实现九个测试函数的最优值求解及优化收敛曲线仿真。平衡优化器通过模拟生态系统平衡机制,动态调整搜索参数,确保种群多样性与收敛性的平衡,高效搜索全局或近全局最优解。程序核心为平衡优化算法,结合粒子群优化思想,引入动态调整策略,促进快速探索与有效利用解空间。
|
22天前
|
算法 决策智能
基于遗传优化算法的TSP问题求解matlab仿真
本项目使用遗传算法解决旅行商问题(TSP),目标是在四个城市间找到最短路径。算法通过编码、选择、交叉、变异等步骤,在MATLAB2022A上实现路径优化,最终输出最优路径及距离。

热门文章

最新文章