白骨顶鸡优化算法(Coot Optimization Algorithm,COOT)

  • 一、算法灵感
  • 二、算法介绍
    • 2.1 初始化
    • 2.2 跟随者位置更新(探索阶段)
      • 2.2.1 主动更新
        • 2.2.1.1 随机运动
        • 2.2.1.2 链式运动
      • 2.2.2 被动更新
    • 2.3 领导者位置更新(开发阶段)
    • 2.4 COOT算法的伪代码
  • 三、实验结果
    • 3.1 F1收敛曲线
    • 3.2 F5收敛曲线
    • 3.3 F8收敛曲线
  • 四、改进白骨顶鸡优化算法
  • 五、参考文献

一、算法灵感

  白骨顶鸡优化算法(Coot Optimization Algorithm, COOT)是2021年提出的一种元启发式优化算法,灵感来源于白骨顶鸡的移动习性。算法对白骨顶鸡种群进行了层级划分,适应度值高者为种群领导者,其余为跟随者。跟随者具有两种位置更新方式,分别为主动更新和被动更新。主动更新过程中,跟随者根据链式运动或随机运动更新位置,并不依赖领导者;在被动更新过程中,跟随者需要向领导者方向发生靠拢。种群需要朝着最佳区域前进,因此在跟随者向领导者靠拢的同时,领导者也要同时不断调整自身位置向最优区域靠近。图1展示了白骨顶鸡的具体移动过程。

图1 白骨顶鸡移动过程

二、算法介绍

2.1 初始化

  在COOT中,初始化白骨顶鸡种群位置的计算公式如下:
CootPos(i)=rand(1,dim⁡).∗(ub−lb)+lb(1)CootPos{{(}}i{{)}} = {{rand(}}1,\dim{{)}}.*{{(}}ub - lb{{)}} + lb \tag{1}CootPos(i)=rand(1,dim).∗(ub−lb)+lb(1)其中,CootPos(i)CootPos(i)CootPos(i) 表示第i只白骨顶鸡的位置,ububub 和 lblblb 分别表示搜索空间的上界和下界,randrandrand 为 000 到 111 之间的随机数,dimdimdim 表示维度。
  从白骨顶鸡种群中随机选取 NLNLNL 只白骨顶鸡作为领导者,记为 LeaderPosLeaderPosLeaderPos,剩余的 NcootNcootNcoot 只白骨顶鸡为跟随者,记为 FollowPosFollowPosFollowPos,NLNLNL 和 NcootNcootNcoot 的计算公式如下:
NL=Npop×P(2)NL = Npop \times P \tag{2}NL=Npop×P(2)Ncoot=Npop−NL(3)Ncoot = Npop - NL \tag{3}Ncoot=Npop−NL(3)其中,NpopNpopNpop 为种群数量,PPP 为参数 0.10.10.1。

2.2 跟随者位置更新(探索阶段)

2.2.1 主动更新

  当一个取值范围为 [0,1][0,1][0,1] 的随机数 rand1>0.5rand_1>0.5rand1​>0.5 时,白骨顶鸡跟随者将选择主动更新策略,主动更新策略包括两种运动方式,通过一个取值范围为 [0,1][0,1][0,1] 的随机数 rand2rand_2rand2​ 来决定选择哪一种运动方式。

2.2.1.1 随机运动

  当 rand2<0.5rand_2<0.5rand2​<0.5 时白骨顶鸡跟随者进行随机运动,为了体现运动的随机性,首先在位置空间内生成一个随机位置 QQQ。其数学公式如下:
Q=rand(1,d).∗(ub−lb)+lb(4)Q = {{rand(}}1,d{{)}}.*{{(}}ub - lb{{)}} + lb \tag{4}Q=rand(1,d).∗(ub−lb)+lb(4)  然后白骨顶鸡个体会向移动到随机生成的位置,其数学公式如下:
FollowPos(i)=FollowPos(i)+A×R1×(Q−FollowPos(i))(5)FollowPos{{(}}i{{)}} = FollowPos{{(}}i{{)}} + A \times {R_1} \times {{(}}Q - FollowPos{{(}}i{{))}} \tag{5}FollowPos(i)=FollowPos(i)+A×R1​×(Q−FollowPos(i))(5)其中,FollowerPos(i)FollowerPos(i)FollowerPos(i) 表示第i个跟随者的位置,R1R_1R1​ 是区间 [0,1][0,1][0,1] 中的随机数,参数 AAA 为在 [0,1][0,1][0,1] 中线性递减的因子。其计算公式如下:
A=1−t×(1/MaxIter)(6)A = 1 - t \times {{(}}1/MaxIter{{)}} \tag{6}A=1−t×(1/MaxIter)(6)其中,ttt 是当前迭代次数,MaxIterMaxIterMaxIter 是最大迭代次数。

2.2.1.2 链式运动

  当 rand2>0.5rand_2>0.5rand2​>0.5 时,执行链式运动,算法将相邻两只白骨顶鸡的中间位置用于实现链式运动。其数学公式如下:
FollowPos(i)=0.5×(FollowPos(i−1)+FollowPos(i))(7)FollowPos{{(}}i{{)}} = 0.5 \times {{(}}FollowPos{{(}}i - 1{{)}} + FollowPos{{(}}i{{))}} \tag{7}FollowPos(i)=0.5×(FollowPos(i−1)+FollowPos(i))(7)其中,FollowPos(i−1)FollowPos(i-1)FollowPos(i−1) 是上一只白骨顶鸡跟随者的位置。

2.2.2 被动更新

  当 rand1<0.5rand_1<0.5rand1​<0.5 时,白骨顶鸡跟随者选择领导者引导更新位置。通常情况下,种群由前面的几只白骨顶鸡领导,其他个体必须根据领导者调整自己的位置,并向它们移动。为了实现这一运动利用式(8)的机制选择领导者。
k=1+(i)mod(NL)(8)k = 1 + (i){{mod(}}NL) \tag{8}k=1+(i)mod(NL)(8)其中,iii 是跟随者的索引数,kkk 是领导者的索引数,modmodmod 为取余函数。跟随者随领导者的位置更新公式如下:
FollowPos(i)=LeadPos(k)+2×R2×cos⁡(2Rπ)×(LeaderPos(k)−FollowPos(i))(9)FollowPos(i) = LeadPos(k) + 2 \times {R_2} \times \cos (2R\pi ) \times (LeaderPos(k) - FollowPos(i)) \tag{9}FollowPos(i)=LeadPos(k)+2×R2​×cos(2Rπ)×(LeaderPos(k)−FollowPos(i))(9)其中,LeaderPos(k)LeaderPos(k)LeaderPos(k) 为第 kkk 个领导者的位置,RRR 和 R2R_2R2​ 为区间 [0,1][0,1][0,1] 中的随机数,πππ 为圆周率的值。

2.3 领导者位置更新(开发阶段)

LeaderPos(i)={B×R3×cos⁡(2Rπ)×(gBest−LeaderPos(i))+gBestR4<0.5B×R3×cos⁡(2Rπ)×(gBest−LeaderPos(i))−gBestR4≥0.5(10)LeaderPos(i) = \left\{ \begin{aligned} {B \times {R_3} \times \cos (2R\pi ) \times (gBest - LeaderPos(i)) + gBest\qquad{R_4} < 0.5} \cr {B \times {R_3} \times \cos (2R\pi ) \times (gBest - LeaderPos(i)) - gBest\qquad{R_4} \ge 0.5} \cr \end{aligned}\right. \tag{10}LeaderPos(i)={B×R3​×cos(2Rπ)×(gBest−LeaderPos(i))+gBestR4​<0.5B×R3​×cos(2Rπ)×(gBest−LeaderPos(i))−gBestR4​≥0.5​(10)其中,LeaderPos(i)LeaderPos(i)LeaderPos(i) 为第 iii 个领导者的位置,gBestgBestgBest 是种群最优位置,R3R_3R3​ 和 R4R_4R4​ 是区间 [0,1][0, 1][0,1] 中的随机数,参数 BBB 为在 [0,2][0, 2][0,2] 中线性递减的因子,BBB 根据公式(11)计算:
B=2−t×(1/MaxIter)(11)B = 2 - t \times {{ (}}1/MaxIter) \tag{11}B=2−t×(1/MaxIter)(11)

2.4 COOT算法的伪代码

  1. 初始化白骨顶鸡数量 NNN 和最大迭代次数 MaxIterMaxIterMaxIter 等
  2. 根据(2)、(3)式对种群进行层级划分,并对种群进行初始化:CootPosi(i=1,2,...,N)CootPos_i (i=1,2,...,N)CootPosi​(i=1,2,...,N)
  3. while t<MaxItert < MaxItert<MaxIter do
  4.   分别计算跟随者和领导者的适应度值,并找到适应度值最佳的白骨顶鸡 gBestgBestgBest
  5.   For i=1i = 1i=1 to NcootNcootNcoot do
  6.     If rand1>0.5rand_1>0.5rand1​>0.5 then
  7.       If rand2<0.5rand_2<0.5rand2​<0.5 then
  8.         根据式(5)更新跟随者位置
  9.       Else
  10.         根据式(7)更新跟随者位置
  11.       End If
  12.     Else
  13.       根据(9)式更新跟随者位置
  14.     End If
  15.   End For
  16.   For i=1i = 1i=1 to NPNPNP do
  17.     根据(10)式更新领导者位置
  18.   End For
  19. End While
  20. 返回吃的最饱的白骨顶鸡(最优解) gBestgBestgBest

三、实验结果

COOT在23个经典测试函数(设置维度 dim=30dim=30dim=30)的F1、F5、F8中的收敛曲线,测试函数公式如下:

函数 公式 理论值
F1 F1(x)=∑i=1nxi2{F_1}(x) = \sum\nolimits_{i = 1}^n {x_i^2} F1​(x)=∑i=1n​xi2​ 0.000.000.00
F5 F5(x)=∑i=1n−1[100(xi+1−xi2)2+(xi−1)2]{F_5}(x) = \sum\nolimits_{i = 1}^{n - 1} {[100{{({x_{i + 1}} - x_i^2)}^2} + {{({x_i} - 1)}^2}]} F5​(x)=∑i=1n−1​[100(xi+1​−xi2​)2+(xi​−1)2] 0.000.000.00
F8 F8(x)=∑i=1n−xisin⁡(∣xi∣){F_8}(x) = \sum\nolimits_{i = 1}^n { - {x_i}\sin (\sqrt {|{x_i}|} )}F8​(x)=∑i=1n​−xi​sin(∣xi​∣​) −418.9829×dim-418.9829×dim−418.9829×dim

3.1 F1收敛曲线

3.2 F5收敛曲线

3.3 F8收敛曲线

四、改进白骨顶鸡优化算法

点这里:改进的白骨顶鸡优化算法(Improved Coot Optimization Algorithm,ICOOT)

五、参考文献

[1] Naruei I, Keynia F. A new optimization method based on COOT bird natural life model[J]. Expert Systems with Applications, 2021, 183, 115352.

白骨顶鸡优化算法(Coot Optimization Algorithm,COOT)相关推荐

  1. 改进的白骨顶鸡优化算法(Improved Coot Optimization Algorithm,ICOOT)(原文作者)

    改进的白骨顶鸡优化算法(Improved Coot Optimization Algorithm,ICOOT)(原文作者) 一.算法灵感 二.算法介绍 2.1 初始化 2.2 跟随者位置更新(探索阶段 ...

  2. 基于白骨顶鸡优化算法的函数寻优算法

    文章目录 一.理论基础 1.白骨顶鸡优化算法 1.1 个体随机运动 1.2 链式运动 1.3 最优个体引导运动 1.3.1 根据组长调整位置 1.3.2 领导者引领团队走向最佳区域(领导运动) 2.C ...

  3. 多目标优化算法:多目标白骨顶鸡优化算法MOCOOT(提供Matlab代码)

    一.算法简介 白骨顶鸡优化算法(Coot optimization algorithm,COOT)由Iraj Naruei和Farshid Keynia于2021年提出.该算法主要模拟了白骨顶鸡在水中 ...

  4. 多旅行商问题:鹈鹕优化算法(Pelican Optimization Algorithm,POA)求解多仓库多旅行商问题(提供Matlab代码)

    一.鹈鹕优化算法 鹈鹕优化算法(Pelican Optimization Algorithm,POA)由Pavel Trojovský和Mohammad Dehghani 于2022年提出,该算法模拟 ...

  5. Adam优化算法(Adam optimization algorithm)

    Adam优化算法(Adam optimization algorithm) Adam优化算法基本上就是将Momentum和RMSprop结合在一起. 初始化 2.在第t次迭代中,用mini-batch ...

  6. 两种鲸鱼优化算法 (whale optimization algorithm, WOA)及仿真实验——附代码

    目录 摘要: 算法设计: WOA总体流程图如下: 增强型WOA(E-WOA) 仿真运行效果: 完整程序: 摘要: 鲸鱼优化算法 (whale optimization algorithm,WOA)是 ...

  7. 【WOA】鲸鱼优化算法(Whale Optimization Algorithm,WOA)理论分析与matlab性能仿真,使用CEC2017测试

    一.WOA鲸鱼优化理论简介 WOA算法设计的既精妙又富有特色,它源于对自然界中座头鲸群体狩猎行为的模拟, 通过鲸鱼群体搜索.包围.追捕和攻击猎物等过程实现优时化搜索的目的.在原始的WOA中,提供了包围 ...

  8. 【深度学习笔记】优化算法( Optimization Algorithm)

    本文依旧是吴恩达<深度学习工程师>课程的笔记整理与拓展. 一.优化算法的目的与挑战 优化算法主要是用来加快神经网络的训练速度,使得目标函数快速收敛. 优化问题面临的挑战有病态解.鞍点.梯度 ...

  9. 瞪羚优化算法Gazelle optimization algorithm附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

最新文章

  1. PEAR, PECL和Perl的区别
  2. 动态规划法求最大字段和时间复杂度_九章算法 | 动态规划:最长上升子序列
  3. android 之ListView分页效果以及从网络上加载数据一系列的综合运用
  4. Beyond Compare4长期使用方法
  5. k8s service服务发现详解:ipvs代理模式、服务类型
  6. servlet的理解
  7. JAVA开发工具整理
  8. mysql null 0 空_MySQL中 null与not null和null与空值''的区别
  9. kettle预览点两下才出数_谁才是娱乐圈油腻王中王?
  10. 【转】所需即所获:像 IDE 一样使用 vim
  11. 网站设计| 网站设计模板素材
  12. 【TextView】实现QQ一键加群功能
  13. 在团购网上空手赚钱项目,你敢做就敢赚!
  14. 《那些年啊,那些事——一个程序员的奋斗史》——66
  15. 汉谷拼形是克服“提笔忘字”最犀利的武器
  16. 收藏一个快要消亡的技术古董
  17. C++流式输入输出加速 给 cin/cout 装个小火箭
  18. 湘潭大学oracle上机试题,湘潭大学计算机考题2010
  19. Qt大屏电子看板系统源码
  20. 大数据治理平台架构技术方案(ppt)

热门文章

  1. 计算机电源用什么端子,关于电源接线端子 你应该知道的一些知识
  2. 几个html页面怎么连接,如何使用flas连接我的两个HTML页面
  3. img srcset sizes 的作用
  4. 利用Open Street Map生成地图文件
  5. 用户可以与计算机进行人机对话是什么性,人机对话考试是什么意思 有哪些利弊...
  6. 动态规划-状态转移方程练习
  7. photoshop污点修复画笔工具
  8. [论文研读]Compiler Optimization of Accelerator Data Transfers
  9. Python自定义高精度小数计算来获取巴塞尔问题的近似值
  10. Linux驱动开发之蜂鸣器驱动实验