获取更多资讯,赶快关注上面的公众号吧!

文章目录

  • 一种新的元启发式优化算法:狩猎搜索(Hunting Search,Hus)
    • 灵感
    • 狩猎搜索
      • 初始化优化问题和算法参数
      • 初始化狩猎群体(Hunting Group,HG)
      • 朝领导者移动
      • 位置校正-成员间协作
      • 重组

一种新的元启发式优化算法:狩猎搜索(Hunting Search,Hus)

灵感

狩猎搜索是一种模拟群体动物(狮子,狼等)捕食狩猎行为地元启发式算法,这些动物会采取一些策略包围和捕捉猎物。例如,狼就非常依赖这种捕猎方式,来捕食比自己更大更快的动物,它们选定目标猎物后,整个狼群就会逐渐向其靠近,狼聪明的地方在于它们不会站在风向上游以免猎物嗅到气味,而这可以应用到带有约束的问题中以避开不可行区域。在狩猎搜索算法中,每个捕食者就是特定问题的一个解,捕食者协同寻找和捕食猎物,类似于寻找全局最优点的优化过程,每个捕食者相对于猎物的位置决定了其捕获猎物的几率,类似地,目标函数值是由一组决策变量的值来决定的。

但是动物的群体捕食和优化问题也有不同,在动物的群体捕食中,解(猎物)是动态的,捕食者必须根据根据猎物的当前位置来校正自身位置,而在优化问题中,最优解是静态的且在优化过程中不会改变自身位置,为了实现在算法中模拟这种动态性,人工捕食者会朝着领导者移动,领导者是当前阶段拥有最优位置的捕食者(当前种群最优解),如果任意一个捕食者发现了比当前领导者更优的位置,则其成为下个阶段的领导者。

真实的动物不仅会慢慢朝猎物移动还会根据其他捕食者和猎物的位置校正自身位置,因此,算法中如果朝之前的领导者移动后,领导者并未变化,那么捕食者将根据其他成员的位置调整自身位置,这可以通过引入狩猎群体考虑率(Hunting Group Consideration Rate,HGCR)和位置校正率(Position Correction Rate,PCR)来实现。

还有,在真实动物的群体捕食中,如果猎物逃出了包围圈,捕食者会重新组织起来,再次包围猎物。在算法中,如果捕食者或解之间的位置太接近,那么算法就会将其打乱,试图在下次迭代中找到最优解。

狩猎搜索

通过以上分析,可以得到狩猎搜索算法如下:

Step1:指定优化问题和算法参数。

Step2:初始化捕猎群体(Hunting Group,HG)。

Step3:朝领导者移动。

Step4:位置校正。

Step5:群体重组。

Step6:重复Step3~5,直到满足终止条件。

初始化优化问题和算法参数

狩猎群体大小(Hunting Group Size,HGS),向领导者的最大移动量(maximum movement toward the Leader,MML),狩猎群体考虑率∈[0,1]\in[0,1]∈[0,1](Hunting Group Consideration Rate,HGCR)和位置校正率(Position Correction Rate,PCR)。

初始化狩猎群体(Hunting Group,HG)

基于狩猎群体大小HGS,随机生成对应数量的可行解并计算目标值,根据目标值选择领导者。

朝领导者移动

通过向领导者移动来生成捕食者新的位置x′=(x1′,x2′,⋯,xN′)x^\prime=\left( x^\prime_1,x^\prime_2,\cdots,x^\prime_N\right)x′=(x1′​,x2′​,⋯,xN′​):
xi′=xi+rand⁡×MML×(xiL−xi)(1)x_{i}^{\prime}=x_{i}+\operatorname{rand} \times M M L \times\left(x_{i}^{L}-x_{i}\right)\tag{1}xi′​=xi​+rand×MML×(xiL​−xi​)(1)

其中MMLMMLMML为朝着领导者移动的最大量,类似于步长,randrandrand为[0,1][0,1][0,1]内的随机数,xiLx_{i}^{L}xiL​为领导者第iii个维度的位置值。

对于每一个捕食者,如果朝领导者移动后结果变优,那么捕食者就移动到新的位置,否则返回原来的位置。这样处理有两个好处:

  1. 并没有和群体中最差的捕食者进行比较,从而允许弱者搜索其他解;
  2. 为了防止过早收敛,捕食者将当前位置和之前的位置进行比较,因而好的位置不会被淘汰。

通常情况下MMLMMLMML取值范围为0.01(对于具有多个自变量的大规模问题)~0.2(对于自变量较少的简单问题)

位置校正-成员间协作

在这一步中,对捕食者之间的协作进行建模,以更有效地进行捕食。在朝领导者移动后,捕食者会再根据其他捕食者的位置和随机扰动选择其他位置以便找到更优的解,而这只有在前一步中领导者没有变化的情况下才会执行。新的位置x′=(x1′,x2′,…,xN′)x^{\prime}=\left(x_{1}^{\prime}, x_{2}^{\prime}, \ldots, x_{N}^{\prime}\right)x′=(x1′​,x2′​,…,xN′​)将按照下式生成:
xi′←{xi′∈{xi1,xi2,…,xiHGS}with probability HGCRxi′∈Xiwith probability (1−HGCR)(2)x_{i}^{\prime} \leftarrow\left\{\begin{array}{l} x_{i}^{\prime} \in\left\{x_{i}^{1}, x_{i}^{2}, \ldots, x_{i}^{H G S}\right\} \quad \text { with probability } \mathrm{HGCR} \\ x_{i}^{\prime} \in X_{i} \quad \text { with probability }(1-\mathrm{HGCR}) \end{array}\right.\tag{2}xi′​←{xi′​∈{xi1​,xi2​,…,xiHGS​} with probability HGCRxi′​∈Xi​ with probability (1−HGCR)​(2)

其中HGCR为从群体HG中选择某一维度值的概率,(1-HGCR)为值域中随机选择值的概率。(这其实有点像和声搜索里的和声记忆率),通常情况下HGCR取值范围为[0.95,1)[0.95,1)[0.95,1)。

然后再检查新的位置的每一个维度,以确定是否进行校正:
xi′←{Yes with probability PCRNo with probability (1−PCR)(3)x_{i}^{\prime} \leftarrow\left\{\begin{array}{l} \text { Yes with probability } P C R \\ \text { No with probability }(1-P C R) \end{array}\right.\tag{3}xi′​←{ Yes with probability PCR No with probability (1−PCR)​(3)

注意,校正过程只会在从HG中选择值时执行,这其实和和声搜索里的音调调节思想相同。那么算法选择邻域值的概率就是PCR×HGCRPCR\times HGCRPCR×HGCR,如果位置校正决策xi′x^\prime_ixi′​为YES,那么xi′x^\prime_ixi′​按照下式进行校正:
xi′←xi′+τ(4)x^\prime_i\leftarrow x^\prime_i+\tau \tag{4}xi′​←xi′​+τ(4)

其中τ\tauτ为bw×u(−1,1)b w \times u(-1,1)bw×u(−1,1),bwb wbw为任意距离带宽,bwb wbw通常按照指数函数递减:
bw=a×e−b×iteration(5)b w=a \times \mathrm{e}^{-b \times i t e r a t i o n}\tag{5}bw=a×e−b×iteration(5)

aaa和bbb为常数,'iteration’为当前迭代次数。

重组

随着搜索过程的进行,捕食者很可能陷入局部最优,此时捕食者应该进行重组以获取最优位置。重组过程如下:如果领导者与最差捕食者之间的目标函数值差值小于常量ϵ1\epsilon_{1}ϵ1​且未终止,那么按下式对每个捕食者进行重组:
xi′=xi+rand⁡×[r(max⁡(xi),min⁡(xi))−xi]α×ENβ(6)x_{i}^{\prime}=x_{i}+\frac{\operatorname{rand} \times\left[r\left(\max \left(x_{i}\right), \min \left(x_{i}\right)\right)-x_{i}\right]}{\alpha \times E N^{\beta}}\tag{6}xi′​=xi​+α×ENβrand×[r(max(xi​),min(xi​))−xi​]​(6)

其中r(max⁡(xi),min⁡(xi))r\left(\max \left(x_{i}\right), \min \left(x_{i}\right)\right)r(max(xi​),min(xi​))表示随机选择变量xix_ixi​的最大或最小值,ENENEN为群体目前为止陷入局部最优的代数。参数α\alphaα和β\betaβ用于确定算法的全局收敛率,值越小收敛越慢。通常对于大规模优化问题,这两个值可以设置相对小一点

群体智能优化算法之狩猎搜索(Hunting Search,Hus)相关推荐

  1. 群体智能优化算法之布谷鸟搜索(CS)

    获取更多资讯,赶快关注上面的公众号吧! 文章目录 第六章 布谷鸟搜索[1] 6.1 介绍 6.2 人工布谷鸟搜索 6.2.1 随机变量 6.2.2 随机游走 6.2.2.1 幂律 6.2.3 赫维赛德 ...

  2. 【群体智能优化算法】粒子群算法(PSO)入门实践

    1.群体智能 群体智能源于对以蚂蚁.蜜蜂等为代表的社会性昆虫的群体行为的研究.最早被用在细胞机器人系统的描述中.它的控制是分布式的,不存在中心控制.群体具有自组织性. 群体智能优化算法主要模拟了昆虫. ...

  3. 小嘿嘿之群体智能优化算法

    常见群体智能优化算法 遗传算法 定义 基本知识点 编码 适应度函数 算法流程 选择 交叉 变异 粒子群算法(Particle Swarm Optimization,PSO) 背景思想 位置和速度迭代公 ...

  4. 群体智能优化算法之鲸鱼优化算法(Whale Optimization Algorithm,WOA)

    获取更多资讯,赶快关注上面的公众号吧! 文章目录 鲸鱼优化算法(Whale Optimization Algorithm,WOA) 1.1 灵感 1.2 数学建模和优化算法 1.2.1 包围捕食(En ...

  5. 群体智能优化算法学习

    这是开通CSDN以来的第一篇博文,之前专门开通过新浪博客,想记录下一些学习的心得,可自己一直拖沓,没好好学习,这个就用来作为自律的练习,坚持下来的好习惯!!! 本来对优化算法了解特别少,基本属于零的状 ...

  6. 群体智能优化算法之灰狼优化算法

    转载自我的个人网站 https://wzw21.cn/2022/01/07/gwo/ 目录 灰狼优化算法 灰狼群体 模型与算法 灰狼优化算法 灰狼群体 灰狼属于犬科动物,被认为是顶级的掠食者,它们处于 ...

  7. (源码)群体智能优化算法之灰狼优化(Grey Wolf Optimizer,GWO)

    获取更多资讯,赶快关注上面的公众号吧! 文章目录 第三十三章 灰狼优化(Grey Wolf Optimizer,GWO) 启发 数学模型和算法 社会等级 包围捕食 狩猎 攻击猎物(利用) 搜索猎物(探 ...

  8. 群体智能优化算法之细菌觅食优化算法(Bacterial Foraging Optimization Algorithm,BFOA)

    获取更多资讯,赶快关注上面的公众号吧! 文章目录 第十四章 细菌觅食优化算法 14.1 介绍 14.2 BFOA的基本原理与流程 14.2.1 趋向性操作 14.2.2 复制操作 14.2.3 迁徙操 ...

  9. 群体智能优化算法之鲸鱼优化算法

    转载自我的个人网站 https://wzw21.cn/2022/01/08/woa/ 目录 鲸鱼优化算法 鲸鱼群体 模型与算法 鲸鱼优化算法 鲸鱼群体 鲸鱼是世界上最大的哺乳动物,是有情感的高智商动物 ...

  10. Matlab群体智能优化算法之大鲹鱼优化算法(GTO)

    Giant Trevally Optimizer : A Novel Metaheuristic Algorithm for Global Optimization and Challenging 一 ...

最新文章

  1. 《人工智能北京共识》发布, 智源研究院成立伦理与安全研究中心
  2. 利用ConfigParser读取配置文件
  3. ubuntu下KDvelop中怎么显示行号
  4. 函数形参传递概念及问题分析
  5. Golang——数组遍历、最大值、求和、多维数组
  6. 1024带给程序员的福利
  7. 判断点是否在三角形内
  8. 马云现身敦煌种梭梭树:蚂蚁森林即将突破1亿棵树
  9. 安装福昕高级PDF编辑器提示安装错误解决办法
  10. ES6--阮一峰版笔记
  11. java地铁最短_南京地铁最短路径以及最少换乘算法C++不用类
  12. nebula模拟器_nebula模拟器
  13. 用python来做一个APP | python GUI 基础(实战)
  14. 【MM模块】Physical Inventory  库存盘点流程
  15. 微信推广二维码接口使用总结
  16. ArcGIS三维资源收集帖
  17. 拼题A 7-7 计算存款利息
  18. java基础语法(继承)
  19. element的el-table列标题添加自定义图标
  20. UI设计好学吗?UI设计的流程是什么

热门文章

  1. Jarslink Demo Alibaba(教程 源码)
  2. IDEA 对接口进行快速测试(Create Test)
  3. python手动抛出异常
  4. kotlin埋点_GitHub - shajinyang/ilvdo-event-track: 埋点框架
  5. jdbc 自增id 原理_如何实现 Oracle 的自增序列,两步轻松搞定
  6. pythonopencv算法_OpenCV算法精解 基于Python与C++pdf
  7. qt中如何模拟按钮点击_怎么在qt中实现一个按钮列表?
  8. Java基础:继承的综合案例 —— 群主发普通红包
  9. formData:解决formData使用append追加后console仍为空
  10. dir_recurse是 php函数,php关于url、文件、目录、ip的相关问题汇总