基于PSO算法的带时间窗的车辆路径问题的仿真
1.仿真预览
2.理论分析
带时间窗的车辆路径选择问题模型描述: 有一个中心仓库,拥有车辆K辆, 容量都为q,现有L个发货点运输任务需要完成,以1,2,…,L表示,第i个发货点的货运量为gi,max(g)i≤ max(qi),完成发货点i任务需要的时间(装货或卸货)表示Ti,且任务i必须再时间窗口[ETi,LTi]完成,其中ETi为任务i的允许最早开始的时间,LTi为任务i允许最迟开始的时间,如果车辆到达发货点i的时间早于开始时间,则车辆需要在i处等待;如果车辆到达时间晚于LTi,任务i将被延迟进行。VRPTW模型路径优化的数学模型如下:
数学模型的具体解释:
式(1)确保总成本z最小;式(2)确保每条路径上的各发货点的总需求量不超过此条路径配送车的容量;式(3)表示每个任务点的需求仅由一辆车来完成;式(4)(5)保证每个发货点都能得到车辆的配送服务。
3.部分核心代码
clc;
clear;
close all;
tic
N=600; %粒子群个数
NUM=30; %用户个数
OldpgFitness=0; %老的适应值
Iteration=0; %迭代次数的计数,当适应值不再改变时,迭代就停止,而不是到最大迭代次数结束
MI=100; %最大迭代次数
IsStop=0;
INUM=0; %当适应值不变的时候,INUM+1计数,到20时就结束迭代
c1=0.1;
c2=5;
w=0.96;
load 'node.txt';
xy=node(2:NUM+1,2:3);x0=ones(N,NUM);
for i=1:N %随机给每个粒子分配路径x0(i,:)=randperm(NUM);
endv0=zeros(N,NUM);
for i=1:N %在VRP中粒子的速度代表交换序v0(i,:)=round(rand(1,NUM)*NUM);
enddistance_center=zeros(1,NUM);%每个粒子离配送中心的距离
for i=1:NUM distance_center(i)=sqrt((node(i+1,2)-node(1,2))^2+(node(i+1,3)-node(1,3))^2);
enddistance_two=zeros(NUM,NUM); %每两个用户之间的距离
for i=1:NUM-1for j=i+1:NUMdis=sqrt((xy(i,1)-xy(j,1))^2+(xy(i,2)-xy(j,2))^2);distance_two(i,j)=dis;distance_two(j,i)=dis;end
endfor i=1:N %每个粒子路径的总距离EachPathDis(i)=PathDistance(x0(i,:),distance_two,distance_center);
endIBest=x0; %粒子个体的历史最优路径
IBestFitness=EachPathDis;%粒子个体的历史最优适应值
[GBestFitness,index]=min(EachPathDis); %粒子全局最优路径
g1=GBestFitness; %粒子全局最优适应值figure;
subplot(2,2,1);
PathPlot(node,NUM,index,IBest);
title('随机解');while(IsStop==0)&&(Iteration<MI)
Iteration=Iteration+1;
%g2(Iteration)=GBestFitness;
for i=1:NGBest(i,:)=x0(index,:); %全局最优路径
endpi_x=GenerateChangeNums(x0,IBest); %(Pi-Xi)就是使xi向个体最优解靠近,而非远离,这也是一个交换用户序号的过程,得到交换的序
pi_x=HoldByOdds(pi_x,c1); %这是c1*(Pi-Xi)的过程,以c1保留交换序
pg_x=GenerateChangeNums(x0,GBest); %(Pg-Xi)就是使Xi向全局最优解靠近,得到路径中要交换的用户序号
pg_x=HoldByOdds(pg_x,c2); %这是c2*(Pg-Xi)的过程,以c2保留交换序v0=HoldByOdds(v0,w); %这是w*Vi的过程,以概率w得到交换序x0=PathExchange(x0,v0); %通过交换序来改变每个粒子的路径,也就是优化的过程
x0=PathExchange(x0,pi_x);
x0=PathExchange(x0,pg_x);
for i=1:N %计算每条路径的距离EachPathDis(i)=PathDistance(x0(i,:),distance_two,distance_center);
endIsChange=EachPathDis<IBestFitness; %更新后的距离优于更新前的,记录序号
IBest(find(IsChange),:)=x0(find(IsChange),:); %更新个体最佳路径
IBestFitness=IBestFitness.*(~IsChange)+EachPathDis.*IsChange; %更新个体最佳路径距离
[GBestFitness,index]=min(EachPathDis); %更新全局最佳路径,记录相应的序号
if GBestFitness==OldpgFitness %比较更新前和更新后的适应度值;INUM=INUM+1;
elseOldpgFitness=GBestFitness; %不相等时更新适应度值,并记录清零INUM=0;
end
if INUM>=20IsStop=1;
endBestFitness(Iteration)=GBestFitness;
endsubplot(2,2,2);
PathPlot(node,NUM,index,IBest);
title('最佳路径');
axis([0,60,0,80]);
subplot(2,2,3);
plot((1:Iteration),BestFitness(1:Iteration));
grid on;
title('收敛曲线');GBestFitness
g1
toc;
C01
基于PSO算法的带时间窗的车辆路径问题的仿真相关推荐
- 【路径规划】基于鲸鱼算法求解带时间窗开放式车辆路径问题附matlab代码
1 内容介绍 1.1.1 研究背景 物流作为现代经济社会的流动血液,在国民经济发展和人们生产生活中发挥着不可 替代的作用,没有物流的流动也就没有生产商品的交换流动,人们的生活必需品也不可能得到及时供应 ...
- 【TWVRP】基于matlab模拟退火算法结合狼群算法求解带时间窗的车辆路径规划问题【含Matlab源码 1075期】
⛄一.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源码 2590期】
⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...
- 【路径规划】基于粒子群算法求解带时间窗的车辆路径规划问题VRPTW模型matlab源码
1 模型简介 将粒子群算法(PSO)应用于带时间窗车辆路径优化问题(VRPTW),构造车辆路径问题的粒子表达方法,建立了此问题的粒子群算法,并与遗传算法作了比较.实验结果表明,粒子群算法可以快速,有效 ...
- 【TWVRP】基于matlab蚁群算法求解带时间窗的车辆路径规划(成本最低)【含Matlab源码 2514期】
⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...
- 【TWVRP】基于matlab鲸鱼算法求解带时间窗开放式车辆路径问题【含Matlab源码 1986期】
⛄一.鲸鱼算法简介 鲸鱼优化算法(Whale Optimization Algorithm,WOA)是澳大利亚学者Mirjalili等根据座头鲸的狩猎方式提出的一种新的群智能优化算法.鲸鱼在大海中随机 ...
- 【VRP问题】基于模拟退火遗传实现带时间窗的车辆路径规划问题
模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小 ...
- 【TWVRP】粒子群算法求解带时间窗的车辆路径规划问题【含Matlab源码 334期】
⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...
最新文章
- PAT甲级1099 Build A Binary Search Tree (30分):[C++题解]建立二叉搜索树、dfs和bfs
- CentOS6.7安装SBT
- oracle 操作树大全,oracle树查询语句
- git ssh 绑定 GitLab
- 如何开展工业视觉检测?Halcon 圣经告诉你答案
- windows 安装jenkins
- 推荐一款数据恢复软件EasyRecovery
- 安装 samba 记录
- Daily Scrum 10.23
- SCSI设备IO栈与块设备并发机制
- Office-004 Word插入脚注尾注
- 精神小伙儿探秘JVM( 六)
- 一份超详细的Spring4常用知识清单!
- h5难做吗_这样的h5制作难吗,通过什么平台可以做出来?
- C++STL库之algorithm库
- css+js+jq实训笔记
- 集成微控制器使太阳能微型逆变器设计成本有效
- 正则表达式高级技巧背后的关键概念[SM]
- 22款受欢迎的计算机取证工具
- 内马尔成为e.GO全球品牌大使;小马智行与如祺出行战略合作 | 美通企业日报