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

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

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

   本篇文章是本系列的第四篇文章 :人工蜂群算法



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

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

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

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


   一、人工蜂群算法简介

   Karaboga在2005年为解决多变量函数优化问题,提出了人工蜂群算法模型( Artificial Bee Colony ,ABC)。

   蜜蜂是一种群居昆虫,自然界中的蜜蜂总能在任何环境下以极高的效率找到优质蜜源,且能适应环境的改变。蜜蜂群的采蜜系统主要由蜜源、采蜜蜂、跟随蜂、侦查蜂等组成(某些资料有雇佣蜂、非雇佣蜂之分)∶
   蜜源:蜜源就是待求优化问题的可行解,是人工蜂群算法中所要处理的基本对象。蜜源的优劣用实际问题的适应度(目标函数)来评价。

   采蜜蜂:采蜜蜂采用贪婪准则,比较记忆中的最优解和邻域搜索解,当搜索解优于记忆最优解时,替换记忆解;反之,保持不变。在所有的采蜜蜂完成邻域搜索后,采蜜蜂回蜂房跳摆尾舞与跟随蜂共享蜜源信息。

   跟随蜂:根据采蜜蜂的蜜源信息以一定概率选择采蜜源,蜜量大的采蜜蜂吸引跟随蜂的概率大于蜜量小的采蜜蜂。同样,跟随蜂在采蜜源附近邻域搜索,采用贪婪准则,比较跟随蜂搜索解与原采蜜蜂的解,当搜索解优于原采蜜蜂的解时,替换原采蜜蜂的解,完成角色互换;反之,保持不变。

   侦查蜂:若某处蜜源陷入局部最优,采用侦查蜂大步长搜索的方式探索最优解。


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


   三、算法流程

   ① 初始化:在搜索空间中随机生成S、个蜜源位置,这些位置也就代表了第一代的采蜜蜂的最优位置

   ② 采蜜蜂在蜜源位置附近寻找新的蜜源:xij= +rand * (xij-xkj) 式中,j代表解的某一维度,在路径规划中也就是x、y、z的坐标,i代表目前的采蜜蜂,k是除了i之外的某个采蜜蜂编号。

   ③ 采蜜蜂回到蜂巢跳摆尾舞与跟随蜂共享蜜源信息,每一只跟随蜂根据蜜源适应度,以一定概率(轮盘赌法)选择具体的蜜源,并在周围采蜜。

   ④ 另外,若某处的蜜源在经历了设定的最大次数后仍未找到邻近更优的蜜源,此时考虑已经陷入局部最优,则调用侦查蜂采用较大步长的方式随机生成新的蜜源位置。xjj= xij+rand * map(j)


   四、轮盘选择法

   轮盘赌的核心思想就是对于每个待选择的点,其对应的概率越大,被选中的可能性就越大,通过将每个点对应的概率除以所有点对应概率之和的方式来对每个点对应的概率进行处理,处理后,每个点对应的概率相加即为1,然后将这些点依次摆放在0~1的一维数轴上,其概率值越大,所占用的数轴长度就越大(注意跟摆放位置无关,可任意摆放),摆放完成后每个点也就对应于0 ~ 1数轴上一个小区间,比如第1个点的概率是0.05,第2个点的概率是0.03,第3个点的概率是0.1 … …,则第1个点对应的区间为0 ~ 0.05,第2个点对应的区间为0.05 ~ 0.08 ,第3个点对应的区间率为0.08 ~ 0.18,以此类推,这样我们随机产生一个0 ~ 1之间的随机数,该随机数落在那个区间,那个点即为被选中的点。


   五、编程实现思路

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

   首先初始化第一代蜜源的位置,按照正态分布随机生成每个采蜜蜂的蜜源位置,即代表路径的关键点位置。然后使用B样条曲线由关键点生成路径,并计算每个采蜜蜂对应的蜜源也就是路径的适应度,路径越短,适应度越低(越好),然后更新全局最优。

   开始按照设定的迭代次数,进行循环迭代,在每一次迭代中,先让采蜜蜂在其当前蜜源位置附近寻找新的蜜源,对于每个采蜜蜂,首先随机选择一个其他采蜜蜂k,然后按照公式xij= +rand * (xij-xkj) ,更新当前采蜜蜂的蜜源位置,也就是代表路径的关键点的位置,然后计算新生成的蜜源位置的适应度,判断新蜜源与之前蜜源的适应度大小,若当前的蜜源位置更优,则对当前采蜜蜂的蜜源位置进行更新,若之前的更优,则将当前蜜蜂判断陷入局部最优的累加值加一(当累加达到设定的界限时,便认为当前采蜜蜂陷入了局部最优),然后判断是否更新种群最优。

   对于每个采蜜蜂均完成以上操作后,程序的第一阶段就完成了,采蜜蜂回到蜂巢跳摆尾舞与跟随蜂共享蜜源信息,每一只跟随蜂根据蜜源适应度,以按照轮盘赌的方式选择具体的蜜源,并根据其选择的蜜源,每只跟随蜂执行上面介绍的跟采蜜蜂一样操作。执行完后,程序的第二阶段完成了。

   注意:采蜜蜂跟跟随蜂最大的区别在于,每个采蜜蜂对应一个不同的蜜源,而跟随蜂的蜜源是根据采蜜蜂蜜源的适应度采用轮盘赌的方式选择的,也就是适用度好的蜜源可能对应多个跟随蜂,而适应度差的蜜源可能没有跟随蜂,这样更多的跟随蜂前往了适应度好的蜜源,并在其周围搜索新的蜜源,更容易找到更优的解(如果存在的话)

   开始执行第三部分,若某处的蜜源陷入了局部最优,则调用侦查蜂生成随机位置,并计算新位置的适应度,并判断是否更新全局最优,并重置该蜜源的陷入局部最优的标志位。

   第三部分介绍后,本轮迭代结束,开始进行下一次迭代 ,直至完成设定的迭代次数。

   注意:该程序中,并没有体现三种蜜蜂之间的身份转换


   六、运行效果示例:



   上面的示例中100次迭代后的适应度为161.81,而理论最优适应度为160.75,100次迭代耗时达到了3分20秒,规划效率不理想,规划质量还可以。


基于群智能的路径规划算法(四)------人工蜂群算法相关推荐

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

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

  2. 群智能算法之人工蜂群算法(ABC算法)

    人工蜂群算法(ABC算法)(Artificial Bee Colony) 该算法标准原型代码下载地址:https://abc.erciyes.edu.tr/index.htm ,包括C.Java.Ma ...

  3. 智能优化算法:人工蜂群算法-附代码

    智能优化算法:人工蜂群算法 文章目录 智能优化算法:人工蜂群算法 1.算法原理 1.1 蜂群的初始化 1.2 雇佣蜂阶段 1.3 跟随蜂阶段 1.4 探索蜂阶段 2.算法流程 3.算法结果 4.参考文 ...

  4. 人工蜂群算法python_人工蜂群算法简介与程序分析

    目前人工蜂群算法主要分为基于婚配行为与基于釆蜜行为两大类,本文研究的是基于釆蜜行为的人工蜂群算法. 蜜蜂采蜜 自然界中的蜜蜂总能在任何环境下以极高的效率找到优质蜜源,且能适应环境的改变.蜜蜂群的采蜜系 ...

  5. 【ABC算法】人工蜂群算法原理及代码

    一.人工蜂群算法的介绍     人工蜂群算法(Artificial Bee Colony, ABC)是由Karaboga于2005年提出的一种新颖的基于群智能的全局优化算法,其直观背景来源于蜂群的采蜜 ...

  6. 人工蜂群算法python_人工蜂群算法-python实现

    1 importnumpy as np2 from ABSIndividual importABSIndividual3 importrandom4 importcopy5 importmatplot ...

  7. 算法篇——人工蜂群算法python实现

    最终效果与测试函数 1迭代过程 2效果曲线 3测试函数 artiBeeColony.py 面向对象的实现方式,简单明了.如有转载请注明出处. 直接运行,有bug的评论区私聊 #encoding:utf ...

  8. 【ABC三维路径规划】基于matlab人工蜂群算法多无人机三维路径规划【含Matlab源码 170期】

    一.无人机简介 0 引言 随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化.完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水下 ...

  9. 【ABC三维路径规划】基于matlab人工蜂群算法无人机三维路径规划【含Matlab源码 021期】

    ⛄一.无人机简介 0 引言 随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化.完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水 ...

最新文章

  1. 北汽蓝谷和北汽新能源
  2. Python学习笔记17:标准库之数学相关(math包,random包)
  3. nodejs web开发入门: Simple-TODO Nodejs 实现版
  4. SpringBoot + WebMagic实现一个的爬虫框架
  5. MFC中静态文本控件显示的几种实现方式
  6. Lucene使用案例(包括索引的维护)
  7. job每分钟执行 oracle_Oracle Job 每个时间点执行示例
  8. 我的软件用了那些技术
  9. JavaScript中的XMLHttpRequest对象
  10. mybatis中resultType和resultMap的区别
  11. 隐藏网络计算机,如何在网络中隐藏自己的计算机名称
  12. jquery操作文档节点的属性
  13. linux 命令 —— pwd
  14. 卷积和反卷积输出的计算公式
  15. ecshop模板基础知识
  16. gii无法访问 yii2_yii2 学习历程——gii配置外部用户访问权限问题
  17. 2020考研数学一考研大纲原文
  18. 查看ajax传来的数据,jQuery AJAX 方法 success()后台传来的4种数据
  19. std::system
  20. 解决idea 打开Java项目文件黄色圈问题

热门文章

  1. PMP(项目管理专业人士资格认证)
  2. ubuntu上编译stepmania
  3. 金蝶K3案例教程固定资产后台配置
  4. 人生应该要有梦想,万一见鬼了呢?!
  5. 李白计算机乐谱,天谕手游李白乐谱代码是什么-天谕手游李白乐谱代码分享_快吧手游...
  6. Android 自定义Dialog实现(二)
  7. 基于DCF的跟踪算法综述
  8. java enumeration 创建_Java Enumeration接口 - Java 教程 - 自强学堂
  9. 基于GCCAVR的诺基亚5110液晶显示
  10. 基于CSMA/CA无线传感器网络的MAC层研究