本系列文章主要记录学习基于群智能的路径规划算法过程中的一些关键知识点,并按照理解对其进行描述和进行相关思考。

   主要学习资料是来自 小黎的Ally 的 《第2期课程-基于群智能的三维路径规划算法》,文章中部分图片来源于该课程的PPT,视频链接如下(点击链接可跳转):

   https://space.bilibili.com/477041559/channel/seriesdetail?sid=863038

   本篇文章是本系列的第一篇文章 :粒子群算法



本系列文章链接 (点击可跳转):

-----------------------------------------------------------------------------

   基于群智能的路径规划算法(一)------粒子群算法
   基于群智能的路径规划算法(二)------蚁群算法
   基于群智能的路径规划算法(三)------遗传算法
   基于群智能的路径规划算法(四)------人工蜂群算法
   基于群智能的路径规划算法(五)------狼群算法
   基于群智能的路径规划算法(六)------人工鱼群算法

-----------------------------------------------------------------------------


   一、粒子群算法简介

   Reynolds于1987年提出了Boid模型来模拟鸟类聚集飞行的行为。在这个模型中,每个粒子个体可感知周围一定范围内其他粒子个体的飞行信息,并结合其当前自身的飞行状态,做出下一步的飞行决策。
   该模型有三条规则:

   ①避免碰撞:飞离最近的个体,以避免碰撞

   ②速度一致:向目标前进,和邻近个体的平均速度保持一致

   ③ 中心群集:向邻近个体的平均位置移动,向群体的中心运动

   1995年,心理学Kennedy 博士和计算智能学科Eberhart博士提出了粒子群算法。

   (1)每个寻优的问题解都被想像成一只鸟,称为“粒子”。

   (2)所有的粒子都由一个适应度函数(Fitness Function )确定适应值以判断自前的位置好坏。

   (3)每一个粒子必须赋予记忆功能,能记住所搜寻到的最佳位置。

   (4)每一个粒子还有一个速度以决定飞行的距离和方向。这个速度根据它本身的飞行经验以及同伴的飞行经验进行动态调整。


   二、将粒子群算法应用于路径规划

   如何将粒子群算法应用于路径规划呢?

   我们可以让每条路径代表一个粒子,为减少计算量和简化粒子模型,我们可以取一些关键点来代表某个粒子,这些关键点加上起点和终点可以通过贝塞尔曲线、B样条曲线等轨迹生成/拟合算法,拟合成从起点到达终点的路径。

   也就是说,我们可以将代表路径的几个关键点看成一个整体,即一个粒子,将自由空间看成是每个粒子的可行域,即解空间;·将空间中的障碍物看作约束条件,将三维路径的长度、平均曲率(挠率)等评价指标视为适应度函数;

   因此,路径规划的过程就可以看成是众多粒子在解空间内寻找最优位置的过程。


   三、算法流程

   ①将种群初始化,设定种群的规模、迭代次数等关键参数,并在设定的位置/速度空间范围内随机生成每个粒子的初始位置与速度(在本文的模型中每个粒子由几个路径关键点组成)

   ② 根据每一个粒子对应的关键点,借助贝塞尔曲线、B样条曲线等轨生成/迹拟算法得到从起点到终点的路径

   ③按照设定的评价指标计算每一个粒子的适应度,比如我们可以将生成路径的长度作为评价指标,路径越短,粒子的适应度越高(当然可根据需要选取其他的评价指标),更新个体最优路径和群体最优路径,并记录这一代适应度最高((即路径长度最低)的最优粒子 (注意:在 小黎的Ally 提供的程序中粒子的适应度越低越好,选取适应度最低的粒子作为最优粒子)

   ④更新粒子群:根据上一代的位置和上一代的速度,更新这一代的位置,并更新这一代的速度,更新完成后开始进行下一次迭代,直至达到设定的迭代次数。更新公式如下:

在这里插入图片描述

   其中,w是惯性权重,表征对当前速度方向的信任程度;c1,c2是加速度常数,用来调节学习最大步长,rl,r2是两个[0,1]的随机值,用于增加搜索随机性。

   速度更新公式由三部分组成,第一部分是惯性部分,也就是粒子沿着上一次的速度方向继续运动的趋势,第二部分是个体认知,使粒子趋向该粒子迭代运动工程中出现的最优位置的方向运动,也就是使粒子趋向于个体认知最优解,第三部分是社会认知,使粒子趋向于向群体最优位置的方向运动,也就是使粒子趋向于族群认知最优解。这三部分叠加起来,构成该粒子的速度向量,使得粒子向全局最优解方向运动


   四、编程实现思路

   对 小黎的Ally 提供的程序 的实现思路总结如下:

   程序编程实现思路与上文第三部分的算法流程描述总结,高度相似,且算法较简单,这里就不赘述了。



   五、运行效果示例:

在这里插入图片描述


在这里插入图片描述


   经过100次迭代后,最优适应度在165以下,距离理论最优适应度160较接近,且100次迭代耗时仅需1分钟。


Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐