粒子群优化算法车辆路径问题要点.docx

上传人:b****4 文档编号:3530151 上传时间:2022-11-23 格式:DOCX 页数:12 大小:65.59KB
下载 相关 举报
粒子群优化算法车辆路径问题要点.docx_第1页
第1页 / 共12页
粒子群优化算法车辆路径问题要点.docx_第2页
第2页 / 共12页
粒子群优化算法车辆路径问题要点.docx_第3页
第3页 / 共12页
粒子群优化算法车辆路径问题要点.docx_第4页
第4页 / 共12页
粒子群优化算法车辆路径问题要点.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

粒子群优化算法车辆路径问题要点.docx

《粒子群优化算法车辆路径问题要点.docx》由会员分享,可在线阅读,更多相关《粒子群优化算法车辆路径问题要点.docx(12页珍藏版)》请在冰豆网上搜索。

粒子群优化算法车辆路径问题要点.docx

粒子群优化算法车辆路径问题要点

粒子群优化算法

计算车辆路径问题

摘要

粒子群优化算法中,粒子群由多个粒子组成,每个粒子的位置代表优化问题在D维搜索空间中潜在的解。

根据各自的位置,每个粒子用一个速度来决定其飞行的方向和距离,然后通过优化函数计算出一个适应度函数值(fitness)。

粒子是根据如下三条原则来更新自身的状态:

(1)在飞行过程中始终保持自身的惯性;

(2)按自身的最优位置来改变状态;(3)按群体的最优位置来改变状态。

本文主要运用运筹学中粒子群优化算法解决车辆路径问题。

车辆路径问题由Dantzig和Ramser于1959年首次提出的,它是指对一系列发货点(或收货点),组成适当的行车路径,使车辆有序地通过它们,在满足一定约束条件的情况下,达到一定的目标(诸如路程最短、费用最小,耗费时间尽量少等),属于完全NP问题,在运筹、计算机、物流、管理等学科均有重要意义。

粒子群算法是最近出现的一种模拟鸟群飞行的仿生算法,有着个体数目少、计算简单、鲁棒性好等优点,在各类多维连续空间优化问题上均取得非常好的效果。

本文将PSO应用于车辆路径问题求解中,取得了很好的效果。

针对本题,一个中心仓库、7个需求点、中心有3辆车,容量均为1,由这三辆车向7个需求点配送货物,出发点和收车点都是中心仓库。

货物需求量

,且

利用matlab编程,求出需求点和中心仓库、需求点之间的各个距离,用

表示。

求满足需求的最小的车辆行驶路径,就是求

经过初始化粒子群,将初始的适应值作为每个粒子的个体最优解,并寻找子群内的最优解以及全局的最优解。

重复以上步骤,直到满足终止条件。

本题的最短路径由计算可知为

 

关键字:

粒子群算法、车辆路径、速度

一、问题的重述

一个中心仓库序号为0,7个需求点序号为1~7,其位置坐标见表1,中心有3辆车,容量均为1,由这三辆车向7个需求点配送货物,出发点和收车点都是中心仓库。

求满足需求的距离最小的车辆行驶路径。

表1仓库中心坐标和需求点坐标及需求量

序号

0

1

2

3

4

5

6

7

坐标

(18,54)

(22,60)

(58,69)

(71,71)

(83,46)

(91,38)

(24,42)

(18,40)

需求量

0

0.89

0.14

0.28

0.33

0.21

0..41

0.57

 

二、问题假设

1.现实生活中中心仓库以及各个需求点之间军事直线连接,两点之间距离即为坐标系中两点坐标间距离。

2.不因天气及失火等原因车辆停止运输。

3.每个需求点由一辆车供应货物。

 

三、符号说明

配送货物车辆数

需求点个数

货物需求量

配送货物车辆的容量

从点i到j的距离

需求点i由k车配送

车k从i行驶到j

 

四、问题分析

4.1算法分析

车辆路径问题(VRP)可以描述为有一个中心仓库,拥有K辆车,容量分别为

,负责向L个需求点配送货物,货物需求量为

,且

表示从点i到j的距离。

求满足需求的距离最小的车辆行驶路径。

将中心仓库编号为0,需求点编号为1,2,…,L。

数学模型为:

s.t.

其中,

在本题中,

货物需求量

,利用粒子群优化算法,经过初始化粒子群,将初始的适应值作为每个粒子的个体最优解,并寻找子群内的最优解以及全局的最优解。

重复以上步骤,直到满足终止条件。

4.2举例具体演算分析

 例如,设VRP问题中发货点任务数为7,车辆数为3,若某粒子的位置向量X为:

发货点任务号:

1234567

    Xv:

1222233

    Xr:

1431221

则该粒子对应解路径为:

  车1:

0→1→0

  车2:

0→4→5→3→2→0

  车3:

0→7→6→0

粒子速度向量V与之对应表示为Vv和Vr

该表示方法的最大优点是使每个发货点都得到车辆的配送服务,并限制每个发货点的需求仅能由某一车辆来完成,使解的可行化过程计算大大减少Z虽然该表示方法的维数较高,但由于PSO算法在多维寻优问题有着非常好的特性,维数的增加并未增加计算的复杂性,这一点在实验结果中可以看到

 

五、模型的建立与求解

在本题中,需要分别计算以下几个内容,计算需求点与中心仓库及各需求点间距离,利用粒子群优化算法,求出函数的全局最优位置和最后得到的优化极值。

5.1需求点与中心仓库及各需求点间距离

利用直角三角形勾股定理,求斜边长度。

,直角坐标系中求A,B两点之间距离

距离

0

1

2

3

4

5

6

7

0

0

7.2111

42.72

55.66

65.49

74.733

13.416

14

1

7.2111

0

37.108

50.22

62.586

72.422

18.111

20.396

2

42.72

37.108

0

13.153

33.971

45.277

43.417

49.406

3

55.66

50.22

13.153

0

27.731

38.588

55.227

61.4

4

65.49

62.586

33.971

27.731

0

11.314

59.135

65.276

5

74.733

72.422

45.277

38.588

11.314

0

67.119

73.027

6

13.416

18.111

43.417

55.227

59.135

67.119

0

6.3246

7

14

20.396

49.406

61.4

65.276

73.027

6.3246

0

5.2粒子群优化算法

5.2.1算法实现过程

步骤1 初始化粒子群

 ① 粒子群划分成若干个两两相互重叠的相邻子群;

 ② 每个粒子位置向量Xv的每一维随机取1~K(车辆数)之间的整数,Xr的每一维随机取1~L(发货点任务数)之间的实数;

 ③ 每个速度向量Vv的每一维随机取-(K-1)~(K-1)(车辆数)之间的整数,Vr的每一维随机取-(L-1)~(L-1)之间的实数;

 ④ 用评价函数Eval评价所有粒子;

 ⑤ 将初始评价值作为个体历史最优解Pi,并寻找各子群内的最优解Pl和总群体内最优解Pg

步骤2 重复执行以下步骤,直到满足终止条件或达到最大迭代次数

 ①对每一个粒子,计算Vv、Vr;计算Xv、Xr,其中Xv向上取整;当V、X超过其范围时按边界取值

 ②用评价函数Eval评价所有粒子;

 ③若某个粒子的当前评价值优于其历史最优评价值,则记当前评价值为该历史最优评价值,同时将当前位置向量记为该粒子历史最优位置Pi;

 ④寻找当前各相邻子群内最优和总群体内最优解,若优于历史最优解则更新Pl、Pg

5.2.2针对本题

0表示中心仓库,设车辆容量皆为q=1.0,由3辆车完成所有任务,初始化群体个数n=40;惯性权重w=0.729;学习因子c1=c2=1.49445;最大代数

;搜索空间维数(未知数个数)

算法得到的最优值的代数及所得到的最优解,预计迭代次数50,共进行20次运算

运算次数

1

2

3

4

5

6

7

8

9

10

总距离

217.81

230.41

217.81

217.81

303.04

217.81

303.04

217.81

217.81

230.41

运算次数

11

12

13

14

15

16

17

18

19

20

总距离

217.81

217.81

230.41

217.81

217.81

217.81

217.81

217.81

217.81

217.81

从实验结果分析,15次达到已知最优解,得到的最优总路径为:

对应的行车路线为:

车辆一:

车辆二:

车辆三:

行车总距离

粒子群优化算法达到最优路径50次的代数

7

23

2

17

7

17

13

7

41

19

28

11

33

14

21

23

11

71

82

24

13

58

36

20

10

3

8

5

65

35

9

2

15

76

25

67

30

55

9

29

21

6

38

9

43

148

1

29

3

79

六、模型的评价

粒子群优化算法结果分析

方法

达到最优路径次数

未达最优路径次数

达到最优路径平均代数

达到最优路径平均时间(S)

粒子群

50

0

28.36

3.04

分析PSO方法,可以看出它与GA等其他演化算法的最大不同在于

1)迭代运算中只涉及到初等运算,且运算量非常少;

2)每个粒子能直接获取群体历史经验和个体历史经验,比在其他方法中使用精英集(elitism)的方法更有效;

3)整个粒子群被划分为几个的子群,且子群之间有一定重叠,从而使收敛于局部最优解的几率大大减少L

正因为如此,本文将PSO应用于带时间窗车辆路径问题求解中,取得了很好的效果,有着运算速度快、解的质量与个体数目相关性小、所获得的解质量高等诸多优点

 

七、模型的改进和推广

7.1模型的改进

针对粒子群优化算法存在的问题,提出了一种新的改进算法—基于粒子进化的多粒子群优化算法。

该算法采用局部版的粒子群优化方法,从“粒子进化”和“多种群”两个方面对标准粒子群算法进行改进。

多个粒子群彼此独立地搜索解空间,保持了粒子种群的多样性,从而增强了全局搜索能力而适当的“粒子进化”可以使陷入局部最优的粒子迅速跳出,有效的避免了算法“早熟”,提高了算法的稳定性。

将基于粒子进化的多粒子群优化算法用于求解非线性方程组。

该算法求解精度高、收敛速度快,而且克服了一些算法对初值的敏感和需要函数可导的困难,能较快地求出复杂非线性方程组的最优解。

数值仿真结果显示了该算法的有效性和可行性,为求解非线性方程组提供了一种实用的方法。

7.2模型的推广

作为物流系统优化中的重要一环,合理安排车辆路径、进行物流车辆优化调度可以提高物流经济效益、实现物流科学化。

粒子群算法在多维寻优中有着非常好的特性,加入“邻居算子”的粒子群算法能使算法更好的全局寻优。

本文的研究表明,改进局部办粒子群算法,能过有效地解决车辆路径问题。

 

八、参考文献

[1] 李军,郭耀煌.物流配送车辆优化调度理论与方法[M].北京:

中国物资出版社,2001.

[2]马炫,彭芃,刘庆.求解带时间窗车辆路径问题的改进粒子群算法.计算机工程与应用,2009,45(27):

200-202

[3]姜启源,《数学建模》,高教出版社,2000年

 

附录

需求点与中心仓库及各需求点间距离

c=[];

zuobiao=[1854

2260

5869

7171

8346

9138

2442

1840];

fori=1:

8

forj=1:

8

c(i,j)=sqrt((zuobiao(j,2)-zuobiao(i,2))^2+(zuobiao(j,1)-zuobiao(i,1))^2);

end

end

c

粒子群优化算法求解

主算法

clearall;

clc;

formatlong;

%------给定初始化条件----------------------------------------------

c1=1.4962;%学习因子1

c2=1.4962;%学习因子2

w=0.7298;%惯性权重

MaxDT=50;%最大迭代次数

D=7;%搜索空间维数(未知数个数)

N=40;%初始化群体个体数目

%------初始化种群的个体(可以在这里限定位置和速度的范围)------------

fori=1:

N

forj=1:

D

x1(i,j)=ceil(3*rand());%随机初始化位置ceil是向离它最近的大整数圆整

x2(i,j)=ceil(7*rand());

v1(i,j)=2*(2*rand()-1);%随机初始化速度

%v2(i,j)=6*(2*rand()-1);

end

end

%------先计算各个粒子的适应度,并初始化Pbest和gbest----------------------

fori=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,:

);

fori=2:

N

iffitness(x1(i,:

),x2(i,:

),D)

pg1=x1(i,:

);

pg2=x2(i,:

);

gbest=fitness(pg1,pg2,D);

end

end

%------进入主要循环,按照公式依次迭代,直到满足精度要求------------

fort=1:

MaxDT

fori=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,:

));

forj=1:

D

ifx1(i,j)<1

x1(i,j)=1;

end

ifx1(i,j)>3

x1(i,j)=3;

end

end

forj=1:

D

x2(i,j)=ceil(7*rand());

end

iffitness(x1(i,:

),x2(i,:

),D)

y1(i,:

)=x1(i,:

);

y2(i,:

)=x2(i,:

);

pbest(i)=fitness(y1(i,:

),y2(i,:

),D);

end

ifpbest(i)

pg1=x1(i,:

);

pg2=x2(i,:

);

end

end

end

%------最后给出计算结果

disp('*************************************************************')

disp('函数的全局最优位置为:

')

Solution1=pg1

Solution2=pg2

disp('最后得到的优化极值为:

')

Result=fitness(pg1,pg2,D)

disp('*************************************************************')

辅助算法一

functionresult=fitness(x1,x2,D);

aa=[infinfinfinfinfinfinf];

bb=[infinfinfinfinfinfinf];

cc=[infinfinfinfinfinfinf];

fori=1:

D

ifx1(i)==1

aa(i)=x2(i);

elseifx1(i)==2

bb(i)=x2(i);

else

cc(i)=x2(i);

end

end

end

result=f(cc)+f(bb)+f(aa);

辅助算法二

functionff=f(x);

loadc.mat

sum=0;

[yind]=sort(x);

fori=1:

7

ify(i)==inf

j=i-1;

break;

else

j=7;

end

end

ifj<1

sum=inf;

elseifj==1

sum=sum+2*c(1,ind(j)+1);

else

sum=sum+c(1,ind(j)+1)+c(1,ind

(1)+1);

fori=1:

j-1

sum=sum+c(ind(i)+1,ind(i+1)+1);

end

end

end

ff=sum;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1