matlab改进遗传算法求解带时间窗的路径优化问题
改进方法
对初始化进行编写时,不在采用随机产生编码的方式,而是根据车辆的最大载重的限制下,进行编码,如若选择的下一个点超过了最大载重则把下一个点分配给下一辆车,对已经选择的点根据时间窗的开始或者结束对点进行排序,例如,根据最早时间窗,对选择的点进行从小到大排序。
这样产生的解保证了初始种群得到的解时较优的,在后续迭代过程中能够更快的得到最优解。
产生初始种群新的编码代码
function [init_vc] = init(cusnum,a,demands,cap)
j=ceil(rand*cusnum); %从所有顾客中随机选择一个顾客
k=1; %使用车辆数目,初始设置为1
init_vc=cell(k,1);
% 按照如下序列,遍历每个顾客,并执行以下步骤
if j==1seq=1:cusnum;
elseif j==cusnumseq=[cusnum,1:j-1];
elseseq1=1:j-1;seq2=j:cusnum;seq=[seq2,seq1];
end
%% 开始遍历
route=[]; %存储每条路径上的顾客
load=0; %初始路径上在仓库的装载量为0
i=1;
while i<=cusnum%如果没有超过容量约束,则按照左时间窗大小,将顾客添加到当前路径%%if (load+demands(seq(i))<=cap)&&(size(route,1)<=20) %%%%自己家的条件**************** %% load=load+demands(seq(i)); %初始在仓库的装载量增加%如果当前路径为空,直接将顾客添加到路径中if isempty(route)route=[seq(i)];%如果当前路径只有一个顾客,再添加新顾客时,需要根据左时间窗大小进行添加elseif length(route)==1if a(seq(i))<=a(route(1))route=[seq(i),route]; elseroute=[route,seq(i)];endelselr=length(route); %当前路径长度,则有lr-1对连续的顾客flag=0; %标记是否存在这样1对顾客,能让seq(i)插入两者之间%遍历这lr-1对连续的顾客的中间插入位置for m=1:lr-1if (a(seq(i))>=a(route(m)))&&(a(seq(i))<=a(route(m+1)))route=[route(1:m),seq(i),route(m+1:end)];flag=1;breakendend%如果不存在这样1对顾客,能让seq(i)插入两者之间,也就是flag=0,则需要将seq(i)插到route末尾if flag==0route=[route,seq(i)];endend%如果遍历到最后一个顾客,则更新init_vc,并跳出程序if i==cusnuminit_vc{k,1}=route;breakendi=i+1;else %一旦超过车辆载货量约束,则需要增加一辆车%先储存上一辆车所经过的顾客init_vc{k,1}=route;%然后将route清空,load清零,k加1route=[];load=0;k=k+1;end
end
end
*************************************如需帮忙V:zhangshu2274
如上是新的编码方式,
得到的最优解过程和结果如下:
在迭代初始并未出现超载的情况,所以在最开始代码就较优,能够更快的得到最优解。
最优解:
车辆使用数目:3,车辆行驶总距离:16.328
配送路线1:0->16->14->13->12->17->0
配送路线2:0->5->2->1->3->6->4->0
配送路线3:0->7->9->11->10->15->8->18->0
*************************************如需帮忙V:zhangshu2274
matlab改进遗传算法求解带时间窗的路径优化问题相关推荐
- 【路径规划】基于遗传算法求解带时间窗车辆路径规划问题(VRPTW)matlab源码
1 简介 有时间窗的车辆路径问题(Vehicle Routing Problem with Time Windows,VRPTW)因为其有重要的现实意义而备受关注.其时间窗即为客户接受服务的时间范围, ...
- 【TWVRP】基于matlab遗传算法求解带时间窗且车辆速度车辆路径规划问题【含Matlab源码 2094期】
⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...
- 【TWVRP】基于matlab蚁群算法求解带时间窗车辆路径规划问题【含Matlab源码 1930期】
⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...
- 【TWVRP】基于matlab模拟退火算法求解带时间窗的车辆路径规划问题【含Matlab源码 160期】
⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...
- 【TWVRP】基于matlab鲸鱼算法求解带时间窗开放式车辆路径问题【含Matlab源码 1986期】
⛄一.鲸鱼算法简介 鲸鱼优化算法(Whale Optimization Algorithm,WOA)是澳大利亚学者Mirjalili等根据座头鲸的狩猎方式提出的一种新的群智能优化算法.鲸鱼在大海中随机 ...
- 惩罚函数外点matlab,禁忌搜索算法求解带时间窗的车辆路径问题(惩罚函数版 附MATLAB代码)...
本周应小伙伴要求继续学习TS求VRPTW,不过这次通过使用惩罚约束的形式允许解违反时间窗约束和容量约束,不过要给违反约束的解加以惩罚. 这次我们的目标函数就不单单只有车辆总行驶距离了,还要包括当前解中 ...
- python调用开源求解器SCIP求解带时间窗车辆路径问题(VRPTW)
文章目录 1. 问题定义 2. 数学模型 3. python调用SCIP实现代码 4. 结果 参考文献 1. 问题定义 带时间窗车辆路径问题(vehicle routing problem with ...
- 【TWVRP】基于matlab模拟退火算法求解带时间窗的多车型路径规划问题【含Matlab源码 913期】
⛄一.模拟退火算法简介 1 引言 模拟退火算法(Simulated Annealing,SA)的思想最早由Metropolis等人于1953年提出:Kirkpatrick于1983年第一次使用模拟退火 ...
- 【路径规划】基于遗传算法求解带时间窗多电动车充电路径规划问题附matlab代码
1 简介 电动车在物流领域中取代燃油车是一个广泛的发展趋势.但电动车的电池利用率低,充电时间长,相关充电配套设施建设不完善,存在"续驶里程焦虑"等现象成为了电动车推广和应用的重要制 ...
- 【TWVRP】遗传算法求解带时间窗的含充电站车辆路径规划问题【含Matlab源码 1177期】
⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...
最新文章
- hadoop 添加删除机器以及设置免密登录
- c语言easy,C语言easy….doc
- 零基础学UI设计,哪些知识需要重点学习?
- Unable to get repr for<class‘torch.Tensor‘>
- tableau可视化数据分析60讲(二十一)-tableau预测及趋势线
- 通俗说基于Yarn的Map-Reduce过程
- 干掉耐克的,绝不会是下一个耐克?
- HTTP解决设置返回header的code码为400仍然是200的问题
- Js_cookie保存登录名
- Jenkins 持续集成CICD
- 第三届 Apache Flink 极客挑战赛暨 AAIG CUP 攻略发布!
- Auto CAD 2020 2019 2018 2017 2016 2015 2014 2013 2012 2011 2010 全版本 附带安装教程+入门到精通视频教程
- 高等数学(第七版)同济大学 习题1-1 个人解答
- 学习PMBOK对ITTO输入输出的技术工具整理(关系)
- Win7依靠“局域网共享软件.EXE”实现局域网资源共享简要操作流程
- oracle 提取重复数据,oracle里面查询重复数据的方法
- 组件化与插件化的差别在哪里?醍醐灌顶!
- What kind of new area will CFun and creation form?
- ATL SERVER
- 前端canvas画海报