粒子群优化算法车辆路径问题
更新时间:2023-04-06 14:52:01 阅读量: 教育文库 文档下载
1 粒子群优化算法 计算车辆路径问题
摘要
粒子群优化算法中,粒子群由多个粒子组成,每个粒子的位置代表优化问题在D 维搜索空间中潜在的解。根据各自的位置,每个粒子用一个速度来决定其飞行的方向和距离,然后通过优化函数计算出一个适应度函数值(fitness)。粒子是根据如下三条原则来更新自身的状态:(1)在飞行过程中始终保持自身的惯性;(2)按自身的最优位置来改变状态;(3)按群体的最优位置来改变状态。本文主要运用运筹学中粒子群优化算法解决车辆路径问题。车辆路径问题 由Dan tzig 和Ram ser 于1959年首次提出的, 它是指对一系列发货点(或收货点) , 组成适当的行车路径, 使车辆有序地通过它们, 在满足一定约束条件的情况下, 达到一定的目标(诸如路程最短、费用最小, 耗费时间尽量少等) , 属于完全N P 问题, 在运筹、计算机、物流、管理等学科均有重要意义。粒子群算法是最近出现的一种模拟鸟群飞行的仿生算法, 有着个体数目少、计算简单、鲁棒性好等优点, 在各类多维连续空间优化问题上均取得非常好的效果。本文将PSO 应用于车辆路径问题求解中, 取得了很好的效果。
针对本题,一个中心仓库、7个需求点、中心有3辆车,容量均为1,由这三辆车向7个需求点配送货物,出发点和收车点都是中心仓库。1233,1,7.k q q q l =====货物需求
量12345670.89,0.14,0.28,0.33,0.21,0.41,0.57
g g g g g g g =======,且m a x i k g q ≤。利用matlab 编程,求出需求点和中心仓库、需求点之间的各
个距离,用ij c 表示。求满足需求的最小的车辆行驶路径,就是求
m i n i j i j k i j k Z c x =∑∑∑
。经过初始化粒子群,将初始的适应值作为每个粒子的个
体最优解,并寻找子群内的最优解以及全局的最优解。重复以上步骤,直到满足终止条件。本题的最短路径由计算可知为217.81。
关键字:粒子群算法、车辆路径、速度
一、问题的重述
一个中心仓库序号为0,7个需求点序号为1~7,其位置坐标见表1,中心有3辆车,容量均为1,由这三辆车向7个需求点配送货物,出发点和收车点都是中心仓库。求满足需求的距离最小的车辆行驶路径。
表1 仓库中心坐标和需求点坐标及需求量
二、问题假设
1.现实生活中中心仓库以及各个需求点之间军事直线连接,两点之间距离即为坐标系中两点坐标间距离。
2.不因天气及失火等原因车辆停止运输。
3.每个需求点由一辆车供应货物。
三、符号说明
2
3
四、 问题分析
4.1算法分析
车辆路径问题(VRP )可以描述为有一个中心仓库,拥有K 辆车,容量分别为),,2,1(K k q k =,负责向L 个需求点配送货物,货物需求量为
),,2,1(L i g i =,且k i q g m a x m
a x ≤;ij c 表示从点i 到j 的距离。求满足需求的距离最小的车辆行驶路径。
将中心仓库编号为0,需求点编号为1,2,…,L 。
数学模型为:
m in ij ijk i j k Z c
x =∑∑∑
s.t.k q y g i k ki i ?≤∑,
L i y k ki ,,2,1,1 ==∑
k L j y x kj i ijk ?==∑;,,1,0,
k L i y x
ki j ijk
?==∑;,,1,0,
4 S x X ijk ∈=)(
k
L j i x ijk ?==;,,1,0,,10 或 k L i y ki ?==;,,1,0,10 或
其中,???=否则车配送由需求点01k i y ki
,???=否则0行驶驶从车1j i k x ijk 在本题中,1233,1,7.k q q q l =====货物
需求量12345670.89,0.14,0.28,0.33,0.21,0.41,0.57g g g g g g g =======,利用粒子群
优化算法,经过初始化粒子群,将初始的适应值作为每个粒子的个体最优解,并寻找子群内的最优解以及全局的最优解。重复以上步骤,直到满足终止条件。
4.2举例具体演算分析
例如, 设VRP 问题中发货点任务数为7, 车辆数为3, 若某粒子的位置向量X 为:
发货点任务号: 1 2 3 4 5 6 7
X v : 1 2 2 2 2 3 3
X r : 1 4 3 1 2 2 1
则该粒子对应解路径为:
车1: 0 → 1 → 0
车2: 0 → 4 →5 → 3→ 2→ 0
车3: 0 → 7→ 6→ 0
粒子速度向量V 与之对应表示为V v 和V r
该表示方法的最大优点是使每个发货点都得到车辆的配送服务, 并限制每个发货点的需求仅能由某一车辆来完成, 使解的可行化过程计算大大减少Z 虽然该表示方法的维数较高, 但由于PSO 算法在多维寻优问题有着非常好的特性, 维数的增加并未增加计算的复杂性, 这一点在实验结果中可以看到
五、 模型的建立与求解
5
在本题中,需要分别计算以下几个内容,计算需求点与中心仓库及各需求点间距离,利用粒子群优化算法,求出函数的全局最优位置和最后得到的优化极值。
5.1需求点与中心仓库及各需求点间距离
利用直角三角形勾股定理,求斜边长度。1122(,)(,)A x y B x y ,,直角坐标系中求A,B
两点之间距离AB =
5.2粒子群优化算法 5.2.1算法实现过程 步骤1 初始化粒子群
① 粒子群划分成若干个两两相互重叠的相邻子群;
② 每个粒子位置向量X v 的每一维随机取1~ K (车辆数) 之间的整数, X r 的每一维随机取1~L (发货点任务数) 之间的实数;
③ 每个速度向量V v 的每一维随机取- (K - 1)~ (K - 1) (车辆数) 之间的整数,V r 的每一维随机取- (L - 1)~ (L - 1) 之间的实数; ④ 用评价函数Eval 评价所有粒子;
⑤ 将初始评价值作为个体历史最优解P i , 并寻找各子群内的最优解P l 和
6 总群体内最优解P g
步骤2 重复执行以下步骤, 直到满足终止条件或达到最大迭代次数
①对每一个粒子, 计算V v 、V r ; 计算X v 、X r , 其中X v 向上取整; 当V 、X 超过其范围时按边界取值
② 用评价函数E va l 评价所有粒子;
③ 若某个粒子的当前评价值优于其历史最优评价值, 则记当前评价值为该历史最优评价值, 同时将当前位置向量记为该粒子历史最优位置P i ;
④ 寻找当前各相邻子群内最优和总群体内最优解, 若优于历史最优解则更新P l 、P g
5.2.2针对本题
0表示中心仓库, 设车辆容量皆为q = 1. 0, 由3辆车完成所有任务,初始化
群体个数n = 40; 惯性权重w = 0. 729;学习因子 c 1= c 2= 1. 49445; 最大代数50MaxDT =;搜索空间维数(未知数个数)7;D =
算法得到的最优值的代数及所得到的最优解,预计迭代次数50,共进行20次运算
从实验结果分析,15次达到已知最优解,得到的最优总路径为:
0760*******→→→→→→→→→→
对应的行车路线为:
车辆一:0760→→→
车辆二:010→→
车辆三:023450→→→→→
行车总距离 217.81
粒子群优化算法达到最优路径50次的代数
六、模型的评价
粒子群优化算法结果分析
分析PSO 方法, 可以看出它与GA 等其他演化算法的最大不同在于
1) 迭代运算中只涉及到初等运算, 且运算量非常少;
2) 每个粒子能直接获取群体历史经验和个体历史经验, 比在其他方法中使用精英集(elit ism ) 的方法更有效;
3) 整个粒子群被划分为几个的子群, 且子群之间有一定重叠, 从而使收敛于局部最优解的几率大大减少L
正因为如此, 本文将PSO 应用于带时间窗车辆路径问题求解中, 取得了很好的效果, 有着运算速度快、解的质量与个体数目相关性小、所获得的解质量高等诸多优点
七、模型的改进和推广
7.1模型的改进
7
针对粒子群优化算法存在的问题,提出了一种新的改进算法—基于粒子进化的多粒子群优化算法。该算法采用局部版的粒子群优化方法,从“粒子进化”和“多种群”两个方面对标准粒子群算法进行改进。多个粒子群彼此独立地搜索解空间,保持了粒子种群的多样性,从而增强了全局搜索能力而适当的“粒子进化”可以使陷入局部最优的粒子迅速跳出,有效的避免了算法“早熟”,提高了算法的稳定性。
将基于粒子进化的多粒子群优化算法用于求解非线性方程组。该算法求解精度高、收敛速度快,而且克服了一些算法对初值的敏感和需要函数可导的困难,能较快地求出复杂非线性方程组的最优解。数值仿真结果显示了该算法的有效性和可行性,为求解非线性方程组提供了一种实用的方法。
7.2模型的推广
作为物流系统优化中的重要一环,合理安排车辆路径、进行物流车辆优化调度可以提高物流经济效益、实现物流科学化。粒子群算法在多维寻优中有着非常好的特性,加入“邻居算子”的粒子群算法能使算法更好的全局寻优。本文的研究表明,改进局部办粒子群算法,能过有效地解决车辆路径问题。
八、参考文献
[1] 李军, 郭耀煌. 物流配送车辆优化调度理论与方法[M ]. 北京: 中国物资出版社, 2001.
[2] 马炫,彭芃,刘庆. 求解带时间窗车辆路径问题的改进粒子群算法.计
算机工程与应用,2009,45(27):200-202
[3]姜启源,《数学建模》,高教出版社,2000年
8
附录
需求点与中心仓库及各需求点间距离
c=[];
zuobiao=[18 54
22 60
58 69
71 71
83 46
91 38
24 42
18 40];
for i=1:8
for j=1:8
c(i,j)=sqrt((zuobiao(j,2)-zuobiao(i,2))^2+(zuobiao(j,1)-zuobiao(i,1)) ^2);
end
end
c
粒子群优化算法求解
主算法
clear all;
clc;
format long;
%------给定初始化条件----------------------------------------------
c1=1.4962; %学习因子1
c2=1.4962; %学习因子2
w=0.7298; %惯性权重
MaxDT=50; %最大迭代次数
D=7; %搜索空间维数(未知数个数)
N=40; %初始化群体个体数目
%------初始化种群的个体(可以在这里限定位置和速度的范围)------------
for i=1:N
for j=1:D
x1(i,j)=ceil(3*rand()); %随机初始化位置
x2(i,j)=ceil(7*rand());
9
v1(i,j)=2*(2*rand()-1); %随机初始化速度
%v2(i,j)=6*(2*rand()-1);
end
end
%------先计算各个粒子的适应度,并初始化Pbest和gbest---------------------- for i=1:N
y1(i,:)=x1(i,:);
y2(i,:)=x2(i,:);
pbest(i)=fitness(y1(i,:),y2(i,:),D);
end
pg1=x1(1,:); %Pg为全局最优
pg2=x2(1,:);
for i=2:N
if fitness(x1(i,:),x2(i,:),D) pg1=x1(i,:); pg2=x2(i,:); gbest=fitness(pg1,pg2,D); end end %------进入主要循环,按照公式依次迭代,直到满足精度要求------------ for t=1:MaxDT for i=1:N v1(i,:)=w*v1(i,:)+c1*rand*(y1(i,:)-x1(i,:))+c2*rand*(pg1-x1(i,:)); x1(i,:)=x1(i,:)+v1(i,:); x1(i,:)=ceil(x1(i,:)); for j=1:D if x1(i,j)<1 x1(i,j)=1; end if x1(i,j)>3 x1(i,j)=3; end end for j=1:D x2(i,j)=ceil(7*rand()); end if fitness(x1(i,:),x2(i,:),D) y1(i,:)=x1(i,:); y2(i,:)=x2(i,:); pbest(i)=fitness(y1(i,:),y2(i,:),D); end if pbest(i) pg1=x1(i,:); 10 pg2=x2(i,:); end end end %------最后给出计算结果 disp('*************************************************************') disp('函数的全局最优位置为:') Solution1=pg1 Solution2=pg2 disp('最后得到的优化极值为:') Result=fitness(pg1,pg2,D) disp('*************************************************************') 辅助算法一 function result=fitness(x1,x2,D); aa=[inf inf inf inf inf inf inf]; bb=[inf inf inf inf inf inf inf]; cc=[inf inf inf inf inf inf inf]; for i=1:D if x1(i)==1 aa(i)=x2(i); else if x1(i)==2 bb(i)=x2(i); else cc(i)=x2(i); end end end result=f(cc)+f(bb)+f(aa); 辅助算法二 function ff=f(x); load c.mat sum=0; [y ind]=sort(x); for i=1:7 if y(i)==inf j=i-1; break; else j=7; end end if j<1 sum=inf; 11 else if j==1 sum=sum+2*c(1,ind(j)+1); else sum=sum+c(1,ind(j)+1)+c(1,ind(1)+1); for i=1:j-1 sum=sum+c(ind(i)+1,ind(i+1)+1); end end end ff=sum; 12
正在阅读:
粒子群优化算法车辆路径问题04-06
我国中小金融机构发展面临的问题及出路05-13
AIX安全加固操作手册04-14
00541语言学概论资料01-21
道路危险货物运输经营申请表09-05
混沌布尔粒子群算法的研究01-25
读《花田半亩》有感03-21
我的七色童年_作文700字_初二日记05-02
南开社会学考研·社会学理论部分真题汇总01-17
非主流手机02-18
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 粒子
- 算法
- 路径
- 车辆
- 优化
- 问题
- 幼儿园《入木三分》FLASH课件动画
- 高校新媒体研究生的现状
- 大地构造学期末考试复习资料
- 八年级上册数学(北师大版)第四章第4节第2课时(4.4.2) 一次函数的
- 北师大版六年级数学上册易错题专项全能训练
- 瑞金红色之旅心得体会之令狐文艳创作
- 四川2022中职对口高考语文试题学习资料.docx
- 2016-2022年福建省泉州市永春一中高一(下)期中数学试卷和答案
- 公共基础知识5日过关全真试卷附参考答案 五套
- 贵州茅台财务报表分析.
- 东大20秋学期《管理学原理》在线平时作业1
- 2022年兰州理工大学热力学(同等学力加试) 复试实战预测五套卷
- 学生的健康体检标准表格标准模板.doc
- 汉川论文网代理发表职称论文发表-学困生基础知识提高兴趣课后巩
- 2000年-2011年全国高考文科数学试题及答案
- 酒店管理设计 现代酒店客房设计及功能规划潮流2015(叶予舜)
- 10以内的应用题教学教材
- xx公司深度尺项目立项申请书模板
- 90后女生励志个性签名
- 小型餐馆、快餐店、小吃店、饮品店食品安全管理制度范本