智能优化算法:猎食者优化算法

文章目录

  • 智能优化算法:猎食者优化算法
    • 1.算法原理
      • 1.初始化
      • 2.猎食者搜索
    • 2.实验结果
    • 3.参考文献
    • 4.Matlab

摘要:猎食者优化算法(Hunter–prey optimization,HPO),是于2022年提出的一种新型智能优化算法,该算法通过模拟动物猎食的过程,来对问题进行寻优,具有收敛速度快,寻优能力强的特点。

1.算法原理

1.初始化

与其他优化算法一样,猎食者种群在搜索范围内随机初始化位置。
xi=rand⁡(1,d).∗(ub−lb)+lb(1)x_{i} = \operatorname{rand}(1, d) . *(u b-l b)+l b \tag{1} xi​=rand(1,d).∗(ub−lb)+lb(1)
其中,xix_ixi​是猎食的位置,lblblb是问题变量的最小值(下界),ububub是问题变量的最大值(上界),ddd是问题变量的数量(维度)。

2.猎食者搜索

对于猎食者的搜索机制,式(2)给出了其数学模型:
xi,j(t+1)=xi,j(t)+0.5[(2CZPpos(j)−xi,j(t))+(2(1−C)Zμ(j)−xi,j(t))](2)x_{i, j}(t+1)=x_{i, j}(t)+0.5\left[\left(2 C Z P_{p o s(j)}-x_{i, j}(t)\right)+\left(2(1-C) Z \mu(j)-x_{i, j}(t)\right)\right] \tag{2} xi,j​(t+1)=xi,j​(t)+0.5[(2CZPpos(j)​−xi,j​(t))+(2(1−C)Zμ(j)−xi,j​(t))](2)
其中,x(t)x(t)x(t)是当前猎食者位置,x(t+1)x(t+1)x(t+1)是猎食者的下一次迭代位置,是PposP_{pos}Ppos​猎物的位置,μ\muμ是所有位置的平均值,ZZZ是由式(3)计算的自适应参数:
P=R⃗1<C;IDX=(P==0)Z=R2⊗IDX+R⃗3⊗(∼IDX)(3)\begin{array}{l} P=\vec{R}_{1}<C ; I D X=(P==0) \\ Z=R_{2} \otimes I D X+\vec{R}_{3} \otimes(\sim I D X) \end{array} \tag{3} P=R1​<C;IDX=(P==0)Z=R2​⊗IDX+R3​⊗(∼IDX)​(3)
其中, R→1\overrightarrow R1R1 和R→3\overrightarrow R3R3 是[0,1]内的随机向量,PPP是 R→1<C\overrightarrow R1<CR1<C的索引值, R→2\overrightarrow R2R2是[ 0 , 1 ] 内的随机数,IDXIDXIDX是满足条件(P==0P==0P==0)的向量R→1\overrightarrow R1R1 的索引值,CCC是探索和开发之间的平衡参数,其值在迭代过程中从1减小到0.02,计算如下:
C=1−it(0.98MaxIt)(4)C=1-i t\left(\frac{0.98}{M a x I t}\right) \tag{4} C=1−it(MaxIt0.98​)(4)
其中,ititit是当前迭代次数,MaxItMaxItMaxIt是最大迭代次数。计算猎物的位置( PposP_{pos}Ppos​),以便首先根据式(5)计算所有位置的平均值(μ\muμ),然后计算每个搜索个体与该平均位置的距离。
μ=1n∑i=1nx⃗i(5)\mu=\frac{1}{n} \sum_{i=1}^{n} \vec{x}_{i} \tag{5} μ=n1​i=1∑n​xi​(5)
根据式(6)计算欧几里得距离:
Deuc(i)=(∑j=1d(xi,j−μj)2)12(6)D_{e u c(i)}=\left(\sum_{j=1}^{d}\left(x_{i, j}-\mu_{j}\right)^{2}\right)^{\frac{1}{2}}\tag{6} Deuc(i)​=(j=1∑d​(xi,j​−μj​)2)21​(6)
根据式(7),距离位置平均值最大的搜索代理被视为猎物(PposP_{pos}Ppos​):
P⃗pos =x⃗i∣iis index of Max⁡(end)sort⁡(Deuc )(7)\vec{P}_{\text {pos }}=\vec{x}_{i} \mid i \text { is index of } \operatorname{Max}(\mathrm{end}) \operatorname{sort}\left(D_{\text {euc }}\right) \tag{7} Ppos ​=xi​∣i is index of Max(end)sort(Deuc ​)(7)
如果每次迭代都考虑到搜索代理与平均位置(μ\muμ)之间的最大距离,则该算法将具有延迟收敛性。根据狩猎场景,当猎食者捕获猎物时,猎物会死亡,而下一次,猎食者会移动到新的猎物位置。为了解决这个问题,考虑一种递减机制,如式(8)所示:
kbest =round⁡(C×N)(8)\text { kbest }=\operatorname{round}(C \times N) \tag{8}  kbest =round(C×N)(8)
其中NNN是搜索代理的数量。改变式(7),将猎物的位置计算为式(9):
P⃗pos =x⃗i∣iis sorted Deuc (kbest )(9)\vec{P}_{\text {pos }}=\vec{x}_{i} \mid i \text { is sorted } D_{\text {euc }}(\text { kbest }) \tag{9} Ppos ​=xi​∣i is sorted Deuc ​( kbest )(9)
在算法开始时,kbestkbestkbest的值等于NNN。最后一个距离搜索个体的平均位置(μ\muμ)最远的搜索个体被选择为猎物,并被猎食者捕获。假设最佳安全位置是最佳全局位置,因为这将使猎物有更好的生存机会,猎食者可能会选择另一个猎物。式(10)用于更新猎物位置:
xi,j(t+1)=Tpos(j)+CZcos⁡(2πR4)×(Tpos(j)−xi,j(t))(10)x_{i, j}(t+1)=T_{p o s(j)}+C Z \cos \left(2 \pi R_{4}\right) \times\left(T_{p o s(j)}-x_{i, j}(t)\right)\tag{10} xi,j​(t+1)=Tpos(j)​+CZcos(2πR4​)×(Tpos(j)​−xi,j​(t))(10)
其中,x(t)x(t)x(t)是猎物的当前位置;x(t+1)x(t+1)x(t+1)是猎物的下一次迭代位置; TposT_{pos}Tpos​是全局最优位置;ZZZ是由式(3)计算的自适应参数;R4R_4R4​是范围[ − 1 , 1 ]内的随机数;CCC是探索和开发之间的平衡参数,其值在算法的迭代过程中减小,并由式(4)计算;coscoscos函数及其输入参数允许下一个猎物位置在不同半径和角度的全局最优位置,并提高开发阶段的性能。为了选择猎食者和猎物,结合式(2)和(10)提出了式(11):
xi(t+1)={xi(t)+0.5[(2CZPpos (j)−xi(t))+(2(1−C)Zμ(j)−xi(t))]if R5<βTpos +CZcos⁡(2πR4)×(Tpos −xi(t))else (11)x_{i}(t+1)=\left\{\begin{array}{ll} x_{i}(t)+0.5\left[\left(2 C Z P_{\text {pos }(j)}-x_{i}(t)\right)+\left(2(1-C) Z \mu(j)-x_{i}(t)\right)\right] & \text { if } R_{5}<\beta \\ T_{\text {pos }}+C Z \cos \left(2 \pi R_{4}\right) \times\left(T_{\text {pos }}-x_{i}(t)\right) & \text { else } \end{array}\right .\tag{11} xi​(t+1)={xi​(t)+0.5[(2CZPpos (j)​−xi​(t))+(2(1−C)Zμ(j)−xi​(t))]Tpos ​+CZcos(2πR4​)×(Tpos ​−xi​(t))​ if R5​<β else ​(11)
其中,R5R_5R5​是[ 0 , 1 ] 范围内的随机数,β\betaβ是一个调节参数。

算法流程:

步骤1:设置算法相关参数;并初始化种群。

步骤2:计算适应度值,并记录最优位置。

步骤3:根据(11)对猎食者或猎物位置进行更新。

步骤4:判断是否满足停止条件,如果满足则输出最优解,否则充分步骤2-3。

2.实验结果

3.参考文献

[1] Naruei, I., Keynia, F., Sabbagh Molahosseini, A. Hunter-prey optimization: algorithm and applications[J]. Soft Computing, 2022, 26: 1279-1314.

4.Matlab

智能优化算法:猎食者优化算法-附代码相关推荐

  1. 基于粒子群算法优化的Elman神经网络数据预测-附代码

    基于粒子群算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于粒子群算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...

  2. 基于布谷鸟算法优化的Elman神经网络数据预测-附代码

    基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...

  3. 基于鲸鱼算法优化的Elman神经网络数据预测-附代码

    基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...

  4. 基于海鸥算法优化的Elman神经网络数据预测-附代码

    基于海鸥算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于海鸥算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...

  5. 基于遗传算法优化的Elman神经网络数据预测-附代码

    基于遗传算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于遗传算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...

  6. python 随机森林调参_Python机器学习实践:随机森林算法训练及调参-附代码

    原标题:Python机器学习实践:随机森林算法训练及调参-附代码 文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 来源 | 博客园 作者 | 战争热诚 ...

  7. 基于蜣螂优化的Elman神经网络数据预测-附代码

    基于蜣螂算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于蜣螂算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...

  8. 【AI超级美发师】深度学习算法打造染发特效(附代码)

    [新智元导读]如今,在类似天天P图.美图秀秀等手机APP中,给指定照片或视频中的人物更换头发颜色已经是再正常不过的事情了.那么本文便介绍了该功能背后如AI头发分割模块.头发换色.颜色增强与修正模块等技 ...

  9. 快速排序 c++_算法浅谈——分治算法与归并、快速排序(附代码和动图演示)

    本文始发于个人公众号:TechFlow 在之前的文章当中,我们通过海盗分金币问题详细讲解了递归方法. 我们可以认为在递归的过程当中,我们通过函数自己调用自己,将大问题转化成了小问题,因此简化了编码以及 ...

  10. Python 还能实现图片去雾?FFA 去雾算法、暗通道去雾算法用起来!(附代码)...

    授权自AI科技大本营(ID:rgznai100) 本文约3600字,建议阅读7分钟. 本文为你介绍FFA去雾算法和暗通道去雾算法搭建. 在过去的几十年中,单图像去雾作为基本的低级视觉任务已引起了计算机 ...

最新文章

  1. 常见设计模式,单例模式(双重检测锁方式)示例
  2. feign 回退原因_0503-Hystrix保护应用-feign的hystrix支持
  3. python if条件判断_python if not in 多条件判断代码
  4. Json转换值类型字段为空字符串时报错问题
  5. Py修行路 python基础 (二十)模块 time模块,random模块,hashlib模块,OS及sys模块...
  6. 第十二节: EF的三种模式(二) 之 ModelFirst模式(SQLServer为例)
  7. python面向对象——类(下)
  8. sandboxie游戏不能运行在虚拟环境中如何解决_火爆全球的游戏专业,你还不来莫道克大学亲身感受一下?...
  9. C++仿函数和typename的用法
  10. 渗透测试 2 --- XSS、CSRF、文件上传、文件包含、反序列化漏洞
  11. MFC 鼠标光标资源 及 更换
  12. Ubuntu18.04安装使用Qt编译海康威视SDK DEMO
  13. 【LaTeX】下载及安装步骤
  14. SuperSocket服务器架设(一):认识SuperSocket
  15. java获取机器序列号_Java后台实现查询电脑本机CPU序列号工具类
  16. bootstrap FileInput多文件上传插件使用详解(包括Java代码)
  17. QQ特殊字符制作方式
  18. 曾舜晞代言全面迸发!海信全面屏哈利手机发布
  19. 关于SIGHCLD和SIGCLD
  20. LaTex:实现在Springer可以使用bibtex自动生成引用文献,而不用写Bibitem

热门文章

  1. java8函数式编程闭包_java8入门必备—函数式编程思维——函数式语言向语言和运行时让渡控制权的途径——迭代让位于高阶函数、闭包...
  2. (day 52 - 先序后序遍历计数 ) 剑指 Offer 55 - II. 平衡二叉树
  3. spring中配置ioc中的常用注解
  4. 八皇后问题-python描述
  5. python适用于什么系统_Python适合在什么系统
  6. 电脑投屏电视怎么设置_手机投屏怎么设置全屏
  7. Vue中默认main.js
  8. 小白Linux入门之:CentOS基础命令
  9. 三维重建笔记_多视几何_求基本矩阵F_六/七/八点法_误差评估
  10. 【一天一个C++小知识】015:c++11线程创建的三种方法