粒子群算法求解路径规划
1.1 路径规划问题描述
给定环境信息,如果该环境内有障碍物,寻求起始点到目标点的最短路径, 并且路径不能与障碍物相交,如图 1.1.1 所示。
1.2 粒子群算法求解
1.2.1 求解思路
粒子群优化算法(PSO),粒子群中的每一个粒子都代表一个问题的可能解, 通过粒子个体的简单行为,群体内的信息交互实现问题求解的智能性。
在路径规划中,我们将每一条路径规划为一个粒子,每个粒子群群有 n 个粒 子,即有 n 条路径,同时,每个粒子又有 m 个染色体,即中间过渡点的个数,每 个点(染色体)又有两个维度(x,y),在代码中用 posx 和 posy 表示一个种群。 通过每一代的演化,对粒子群进行演化操作,选择合适个体(最优路径)。
(1)编码:浮点数编码,实际位置和速度值。
(2)适应度:为了能够让适应度高的个体保存下来,定义适应度为:
f i t v a l u e = 1 / d i s t a n c e ∗ c o l l i s i o n (1.1) fitvalue =1/distance *collision \tag{1.1} fitvalue=1/distance∗collision(1.1)
其中 distance 为每个个体(路径)的距离,collision 为碰撞系数,如果 路径与障碍物碰撞则取 0,如果未碰撞则取 0.1。
(3)碰撞检测:为了检测路径是否与障碍物碰撞,首先定义一个函数 iscoll(),用于检测每一段路径是否与障碍物相交,原理如下:传入障碍物边界 的匿名函数和线段的两个端点,在线段上等分取 n 个点,对每个点判断是否落在 障碍物内,至少有一点落在障碍物内则说明路径与障碍物碰撞。再定义一个 iscollison():用于判断每条路径是否与障碍物碰撞,调用 iscoll 函数。
(4)速度更新:
v i d = w v i d + c 1 r 1 ( p i d − x i d ) + c 2 r 2 ( p g d − x i d ) (1.2) v_{id}=wv_{id}+c_{1}r_1( p_{id} -x_{id} ) +c_2r_2 ( p_{gd}-x_{id} ) \tag{1.2} vid=wvid+c1r1(pid−xid)+c2r2(pgd−xid)(1.2)
其中 w 为权重系数,
v
i
d
v_{id}
vid 为速度,
c
1
c_1
c1、
c
2
c_2
c2为学习因子,
p
i
d
p_{id}
pid、
p
g
d
p_{gd}
pgd为个体最优位置和全局最优位置,
x
i
d
x_{id}
xid 为当前位置,
r
1
r_1
r1、
r
2
r_2
r2为随机数。
(5)位置更新:
x
i
d
=
x
i
d
+
v
i
d
x_{id}=x_{id}+v_{id}
xid=xid+vid ,其中
v
i
d
v_{id}
vid为速度,
x
i
d
x_{id}
xid为位置。
1.2.2 流程图
1.3 实验结果
1.4 结果分析
从粒子群算法得出的规划路径可以看出,最优路径都在 11 点多(这里直接 用绘图单位长度),跟之前的遗传算法比较,最优路径都差不多。但是,比起运 行效率,粒子群算法优于遗传算法。