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

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

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

   本篇参考文献:

   刘永兰,李为民,吴虎胜,宋文静.基于狼群算法的无人机航迹规划[J].系统仿真学报,2015,27(08):1838-1843 (点击可跳转)

   本篇文章是本系列的第五篇文章 :狼群算法



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

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

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

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


   一、狼群算法简介

   狼是一种群居性动物,社会分工明确,通过承担各自的责任与团结协作,共同促进整个狼群的生存与发展。狼群算法((Wolf pack algorithm ,WPA)采用了基于人工狼主体的自下而上的设计方法和基于职责分工的协作式搜索路径结构。

   狼群算法是一种以群体智能为基础的优化算法,它最早见于 1970年美国著名狼研究专家 Mech 出版的一本专著中,该专著详细描述了狼群生态和狼群群体行为等内容。后来许多学者以此为研究基础,对狼群的协作捕猎、追捕猎物等行为展开了大量研究

   狼的社会分工有头狼、探狼和猛狼:

   头狼:将当前离猎物气味浓度最高(适应度最优)的狼作为头狼,起指挥狼群行动的作用,头领狼召唤其他狼向猎物靠近,具有指挥狼群行动的能力,在搜寻过程中头狼的角色是动态变化的。

   探狼︰初始时,狼群会派出一部分狼作为探狼,在环境四周搜寻猎物。探狼在搜寻过程中如果发现猎物气味浓度更高,就作为头狼,呼唤其他的狼进行围捕行为。后期,比较不同的探狼猎物的适应度,选择适应度较高的作为头狼。

   猛狼:猛狼感应到头狼呼唤,就立刻向头狼位置奔袭,在奔袭的过程中,若是发现猎物的适应度更高,则立刻替代原来的头领狼,指挥其他狼行动。



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

   针对狼群的整个捕猎活动,狼群算法从中抽象出3种智能行为(即游走、召唤和围攻),“胜者为王”的头狼产生规则,以及“强者生存”的狼群更新机制:

   (1)游走行为:在解空间中,除头狼之外最佳的S匹人工狼视为探狼,分别计算每只探狼搜索的猎物适应度,若大于头狼的适应度,则该探狼变为头狼,重新发起召唤行为。否则探狼向h个方向按照游走步长前进一步

   其中,Xid是当前第i只探狼在d维度上位置,step(d,s)是探狼移动的步长,h是设定的方向个数,p是某个方向(p取值为 1 ~ h),比如取h为36,则相当于将360度分成36份,即每间隔10度选取一个移动方向。sin(2πp/h)可以理解成某个方向。

   (2)召唤行为:游走行为结束后,会产生头狼,头狼利用嚎叫方式发起召唤行为,将周围的M匹猛狼迅速向其所在的位置召集,猛狼以奔袭步长快速向头狼靠近,并搜索猎物。猛狼奔袭过程中,若猎物适应度更高,则令猛狼代替头狼。当猛狼与头狼的距离小于阈值时,转为围攻行为。

   其中,Xjd是当前第j只猛狼在d维度上位置,step(d,b)是猛狼移动的步长,其后面的式子表示当前猛狼沿着朝向头狼的方向进行移动

   (3)围攻行为:猛狼感应到头狼呼唤,就立刻向头狼位置奔走,在奔走的过程中,若是发现猎物的适应度更高,则立刻替代原来的头狼,指挥其他狼行动。

   其中,Xid是当前第i只猛狼在d维度上位置,step(d,w)是猛狼移动的步长,其后面的式子表示当前猛狼沿着朝向头狼的方向进行移动

   注:围攻行为和召唤行为,其实都是猛狼响应头狼的召唤,向头狼位置移动,只是在召唤阶段以较大的步长移动,在距离头狼较近时,转而执行围攻行为,以较小的步长移动,以防止步长过大,跨过头狼的位置。

   (4)基于狼群算法的无人机航迹规划论文中设定的人工狼的游走步长、奔袭步长和围攻步长的关系为:

   其中:C 表示步长因子,代表了人工狼在解空间中的搜索精细程度。Md , md 为待寻优的第 d 维变量空间的最大值和最小值。



   三、算法流程


   四、编程实现思路

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

   首先初始化种群,按照正态分布随机生成每只狼的初始位置,即每只狼对应的路径的关键点位置,然后使用B样条曲线对关键点进行拟合获得每只狼对应的路径,然后依然把路径的长度作为衡量指标,计算每只狼的适应度,然后判断是否更新全局最优。

   然后选择其中适应度最小的S_num只狼作为探狼(在本程序中适应度越小代表的路径越优),其余的狼作为猛狼。至此初始化部分结束。

   开始进行循环迭代,在每次迭代中,每只探狼首先进行游走行为,按照上文介绍的公式计算出每只探狼,沿着h个方向游走后的位置,并拟合成路径计算适应度,将每只探狼当前位置的适应度和分别沿着h个方向移动后位置的适应度,进行比较,选取最优的一个作为当前探狼的位置。并与头狼的适应度进行比较。若头狼的适应度更优,则下一只探狼继续执行上面介绍的游走行为操作,若当前探狼的适应度比头狼更优,则终止所有探狼的游走行为,并将当前探狼作为新的头狼,发起召唤行为。

   头狼发起召唤行为后,所有的猛狼开始朝头狼位置奔袭。该部分内容包含三个重要的循环,第一层循环是依次对每只猛狼进行操作,第二层循环是根据标志位判断是否结束当前猛狼的循环,首先当前猛狼按照上文介绍的移动公式向头狼方向移动,得到新的位置后,拟合成路径,然后计算适用度,并与头狼位置的适应度进行比较:

   分支① :若当前猛狼的适应度更优,则当前猛狼退出循环(即终止第二层循环中当前猛狼的循环),并将当前猛狼作为新的头狼,对本次迭代还没执行响应头狼召唤的剩下的猛狼继续朝新的头狼执行响应召唤行为。

   分支② 若当前猛狼的适应度不如头狼的适应度优,则判断当前猛狼的位置是否已经到达围攻临界距离,即与头狼之间的距离是否已经小于设定的界限,若不小于,则当前猛狼继续进行循环(即本部分的第二层循环),继续执行响应召唤行为,朝头狼以大步长移动。直至当前猛狼的适应度优于头狼的适应度,即转而执行上面分支①中介绍的操作,或者直至当前猛狼与头狼直接的距离小于了设定的界限,则当前猛狼转而执行围攻行为,即当前猛狼进行本部分的第三层重要循环,在每次该层循环中,当前猛狼以较小的步长向头狼移动,并计算移动后位置的适应度,并与头狼位置的适应度进行比较,若当前猛狼的适应度更优,则转而执行上面的分支①,若头狼的适应度更优,则当前猛狼进行围攻行为的次数累加1,继续进行第三层循环,执行围攻行为,直至满足上面分支①,直接结束当前猛狼的第三层循环,即不再执行围攻行为,并终止当前猛狼的第二层循环,或者当前猛狼执行围攻行为的次数达到设定的上限,则依次结束当前猛狼的第三层循环和第二层循环 (重要标记处) 转而在第一层循环下,对一只猛狼进行处理。

   直至所有的猛狼都执行完上面的操作后,第本部分的一层循环结束。然后按照优胜劣汰的准则对整个狼群进行更新,即将所有的探狼和猛狼按照适应度进行排序,将适应度更优的那部分狼(比如说狼群的一半)作为新的探狼,剩下的狼被淘汰掉,并随机生成新的猛狼对狼群进行补充,计算新生成的狼的适应度,并判断是否更新全局最优。

   至此,本次迭代完成,开始进行下一次迭代,直至迭代次数达到设定的数值,结束程序。

   注意:小黎的Ally 提供的程序中,在上文的重要标记处存在bug,即当当前猛狼执行围攻行为的次数达到设定的上限,则会结束当前猛狼的第三层循环,并继续进行第二层循环,转而继续进行第三层循环。。。。循环卡死。。。即该种情况下,没有正常退出当前猛狼的第二层循环。只需要在while T < T_max 的end与if d < d0的end之间加一个break;即可解决以上bug。


   五、运行效果示例:

人工狼群算法效果演示加速版

   以上视频采用了7倍速,虽然视频时长2分钟左右,实际程序运行14分钟左右,可以看出每次迭代耗时较多,但路径质量较优,经过少量的迭代次数,就可以找到近似最优解的路径,只是耗时有点多。

   此外,以上视频中程序卡在了第45代中,卡在了上文介绍的程序bug中。


   上面的示例中1~45代的最优适应度如下,可以发现基本上路径在不断的优化,基本上可以认为没有陷入局部最优。

1:最优适应度 = 208.41992:最优适应度 = 208.1283:最优适应度 = 207.00744:最优适应度 = 206.19845:最优适应度 = 205.83086:最优适应度 = 186.35737:最优适应度 = 173.91968:最优适应度 = 172.87889:最优适应度 = 168.927810:最优适应度 = 168.721611:最优适应度 = 168.312:最优适应度 = 167.566813:最优适应度 = 167.275514:最优适应度 = 167.085515:最优适应度 = 166.616116:最优适应度 = 166.321117:最优适应度 = 165.860418:最优适应度 = 165.344819:最优适应度 = 163.949120:最优适应度 = 163.7121:最优适应度 = 163.601622:最优适应度 = 163.163823:最优适应度 = 162.772324:最优适应度 = 162.558125:最优适应度 = 161.617726:最优适应度 = 161.44827:最优适应度 = 161.442928:最优适应度 = 161.366529:最优适应度 = 161.274230:最优适应度 = 161.247731:最优适应度 = 161.233732:最优适应度 = 161.157333:最优适应度 = 161.154634:最优适应度 = 161.146935:最优适应度 = 161.124336:最优适应度 = 161.015437:最优适应度 = 160.997838:最优适应度 = 160.98539:最优适应度 = 160.960340:最优适应度 = 160.959741:最优适应度 = 160.942742:最优适应度 = 160.914143:最优适应度 = 160.913344:最优适应度 = 160.912445:最优适应度 = 160.9118

   另一个示例的最优适应度变化:


基于群智能的路径规划算法(五)------狼群算法相关推荐

  1. 基于群智能的路径规划算法(三)------遗传算法

       本系列文章主要记录学习基于群智能的路径规划算法过程中的一些关键知识点,并按照理解对其进行描述和进行相关思考.    主要学习资料是来自 小黎的Ally 的 <第2期课程-基于群智能的三维路 ...

  2. 基于群智能的路径规划算法(四)------人工蜂群算法

       本系列文章主要记录学习基于群智能的路径规划算法过程中的一些关键知识点,并按照理解对其进行描述和进行相关思考.    主要学习资料是来自 小黎的Ally 的 <第2期课程-基于群智能的三维路 ...

  3. 路径规划算法:基于鸟群优化的路径规划算法- 附代码

    路径规划算法:基于鸟群优化的路径规划算法- 附代码 文章目录 路径规划算法:基于鸟群优化的路径规划算法- 附代码 1.算法原理 1.1 环境设定 1.2 约束条件 1.3 适应度函数 2.算法结果 3 ...

  4. 自动驾驶路径规划——基于概率采样的路径规划算法(RRT、RRT*)

    目录 1. RRT算法背景 1.1 RRT算法核心思想 1.2 RRT算法优缺点 2. 经典RRT算法 2.1 RRT算法流程 2.2 RRT伪代码 3. 基于目标概率采样 4. RRT*算法 4.1 ...

  5. 基于SSD的自动路径规划算法

    目录 1.场景需求 2.路径规划算法简介 2.1 .PRM算法简介 2.2.RRT算法简介 3.基于SSD的自动路径规划算法简介 4.基于SSD的自动路径规划算法详解 4.1.利用外置摄像头获取图像或 ...

  6. 多目标函数 matlab 粒子群_【LIBSVM】基于群智能优化算法的支持向量机 (SVM) 参数优化...

    前言 支持向量机 (Support Vector Machines,SVM) 有两个重要参数:一个是正则化系数(c),一个是核参数(g,高斯核函数).针对这两个参数的优化,在libsvm工具箱的基础上 ...

  7. 基于群智能算法的函数最值优化问题

    基于群智能算法的函数最值优化问题 摘要 针对求解函数的极值问题的群智能算法,大部分函数在定义域内都可以通过微分的方式求得极值点和找到最值.但是存在一些测试函数,他们的最值用求解的微分的方式只能使得计算 ...

  8. ros自己写避障算法_基于ROS系统自主路径规划与避障小车的研究

    龙源期刊网 http://www.qikan.com.cn 基于 ROS 系统自主路径规划与避障小车的 研究 作者:李阳 卢健 何耀帧 来源:<科技风> 2018 年第 04 期 摘 要: ...

  9. 大规模多智能体路径规划

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 李娇阳:南加州大学计算机系博士四年级学生,导师Sven Koenig, 本科毕业于清华大学自动化系.目前主要的研究方向为人工智能,多智能 ...

  10. 路径规划之空间采样算法研究现状简述

    关注同名微信公众号"混沌无形",有趣好文! 原文链接:机器人空间采样算法研究现状简述(包含原文PDF百度云下载链接) 摘要:运动规划是移动机器人自主导航系统中的重要模块之一,相关算 ...

最新文章

  1. Ext.app.controller的refs
  2. python简单体育竞技模拟_Python程序设计思维练习---体育竞技分析-阿里云开发者社区...
  3. 串口数据波形显示_【专题教程第6期】SEGGER的J-Scope波形上位机软件,RTT模式波形上传可飙到500KB/S...
  4. Netbeans 中创建数据连接池和数据源步骤(及解决无法ping通问题)
  5. 现如今有一个很有意思的现象,不管是工厂还是经销商
  6. dms虚拟服务器,取得dms服务器ip
  7. 页面置换算法详解(10种)
  8. 不得不看的黑客工具集
  9. 微信小程序input监听键盘完成事件、回车事件
  10. Vue中watch监听路由的使用场景
  11. 拉普拉斯矩阵(Laplacian matrix)及其变体详解
  12. 苏黎世联邦理工学院计算机硕士申请条件,苏黎世联邦理工学院硕士申请
  13. 移动互联网思维的5F法则
  14. 内网环境发送统计数据到企业微信
  15. 如何刻linux系统光盘,如何在linux下进行刻录光盘
  16. HK01BS单通道电容式触控芯片IC内置稳压LDO低压复位模块
  17. 写入位置0xccccccc权限冲突
  18. 一个懒惰的人的自省书——请朋友们以我为戒,有更好的未来
  19. 【智能优化算法】基于曲线自适应和模拟退火的蝗虫优化算法求解单目标优化问题附matlab代码
  20. 技术栈:为什么 Node 是小菜前端团队的核心技术栈

热门文章

  1. synchronize偏向锁底层实现原理
  2. 推荐几款网页幻灯片js库
  3. C语言日志库zlog基本使用
  4. ad14 drc报错_AD怎么设置DRC检查常规检查项报错?
  5. 数电笔记之无关项化简逻辑函数
  6. 【从零开始学架构-李运华】06|复杂地来源:可扩展性
  7. web前端开发技术——第六章课后习题实验
  8. bp神经网络java代码_BP神经网络的Java实现
  9. python数据标注工具_数据标注|分享9个数据标注工具
  10. 【电机测速】M法、T法、M/T法测速系统设计实现