粒子群算法(PSO)求解路径规划

粒子群算法求解路径规划

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/distancecollision(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(pidxid)+c2r2(pgdxid)(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 点多(这里直接 用绘图单位长度),跟之前的遗传算法比较,最优路径都差不多。但是,比起运 行效率,粒子群算法优于遗传算法。

1.5 源码

    GitHub传送门!!!

  • 56
    点赞
  • 323
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 23
    评论
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cuntou0906

玛莎拉蒂是我的目标!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值