白骨顶鸡优化算法(Coot Optimization Algorithm,COOT)
白骨顶鸡优化算法(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算法的伪代码
- 初始化白骨顶鸡数量 NNN 和最大迭代次数 MaxIterMaxIterMaxIter 等
- 根据(2)、(3)式对种群进行层级划分,并对种群进行初始化:CootPosi(i=1,2,...,N)CootPos_i (i=1,2,...,N)CootPosi(i=1,2,...,N)
- while t<MaxItert < MaxItert<MaxIter do
- 分别计算跟随者和领导者的适应度值,并找到适应度值最佳的白骨顶鸡 gBestgBestgBest
- For i=1i = 1i=1 to NcootNcootNcoot do
- If rand1>0.5rand_1>0.5rand1>0.5 then
- If rand2<0.5rand_2<0.5rand2<0.5 then
- 根据式(5)更新跟随者位置
- Else
- 根据式(7)更新跟随者位置
- End If
- Else
- 根据(9)式更新跟随者位置
- End If
- End For
- For i=1i = 1i=1 to NPNPNP do
- 根据(10)式更新领导者位置
- End For
- End While
- 返回吃的最饱的白骨顶鸡(最优解) 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=1nxi2 | 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−xisin(∣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)相关推荐
- 改进的白骨顶鸡优化算法(Improved Coot Optimization Algorithm,ICOOT)(原文作者)
改进的白骨顶鸡优化算法(Improved Coot Optimization Algorithm,ICOOT)(原文作者) 一.算法灵感 二.算法介绍 2.1 初始化 2.2 跟随者位置更新(探索阶段 ...
- 基于白骨顶鸡优化算法的函数寻优算法
文章目录 一.理论基础 1.白骨顶鸡优化算法 1.1 个体随机运动 1.2 链式运动 1.3 最优个体引导运动 1.3.1 根据组长调整位置 1.3.2 领导者引领团队走向最佳区域(领导运动) 2.C ...
- 多目标优化算法:多目标白骨顶鸡优化算法MOCOOT(提供Matlab代码)
一.算法简介 白骨顶鸡优化算法(Coot optimization algorithm,COOT)由Iraj Naruei和Farshid Keynia于2021年提出.该算法主要模拟了白骨顶鸡在水中 ...
- 多旅行商问题:鹈鹕优化算法(Pelican Optimization Algorithm,POA)求解多仓库多旅行商问题(提供Matlab代码)
一.鹈鹕优化算法 鹈鹕优化算法(Pelican Optimization Algorithm,POA)由Pavel Trojovský和Mohammad Dehghani 于2022年提出,该算法模拟 ...
- Adam优化算法(Adam optimization algorithm)
Adam优化算法(Adam optimization algorithm) Adam优化算法基本上就是将Momentum和RMSprop结合在一起. 初始化 2.在第t次迭代中,用mini-batch ...
- 两种鲸鱼优化算法 (whale optimization algorithm, WOA)及仿真实验——附代码
目录 摘要: 算法设计: WOA总体流程图如下: 增强型WOA(E-WOA) 仿真运行效果: 完整程序: 摘要: 鲸鱼优化算法 (whale optimization algorithm,WOA)是 ...
- 【WOA】鲸鱼优化算法(Whale Optimization Algorithm,WOA)理论分析与matlab性能仿真,使用CEC2017测试
一.WOA鲸鱼优化理论简介 WOA算法设计的既精妙又富有特色,它源于对自然界中座头鲸群体狩猎行为的模拟, 通过鲸鱼群体搜索.包围.追捕和攻击猎物等过程实现优时化搜索的目的.在原始的WOA中,提供了包围 ...
- 【深度学习笔记】优化算法( Optimization Algorithm)
本文依旧是吴恩达<深度学习工程师>课程的笔记整理与拓展. 一.优化算法的目的与挑战 优化算法主要是用来加快神经网络的训练速度,使得目标函数快速收敛. 优化问题面临的挑战有病态解.鞍点.梯度 ...
- 瞪羚优化算法Gazelle optimization algorithm附matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.
最新文章
- PEAR, PECL和Perl的区别
- 动态规划法求最大字段和时间复杂度_九章算法 | 动态规划:最长上升子序列
- android 之ListView分页效果以及从网络上加载数据一系列的综合运用
- Beyond Compare4长期使用方法
- k8s service服务发现详解:ipvs代理模式、服务类型
- servlet的理解
- JAVA开发工具整理
- mysql null 0 空_MySQL中 null与not null和null与空值''的区别
- kettle预览点两下才出数_谁才是娱乐圈油腻王中王?
- 【转】所需即所获:像 IDE 一样使用 vim
- 网站设计| 网站设计模板素材
- 【TextView】实现QQ一键加群功能
- 在团购网上空手赚钱项目,你敢做就敢赚!
- 《那些年啊,那些事——一个程序员的奋斗史》——66
- 汉谷拼形是克服“提笔忘字”最犀利的武器
- 收藏一个快要消亡的技术古董
- C++流式输入输出加速 给 cin/cout 装个小火箭
- 湘潭大学oracle上机试题,湘潭大学计算机考题2010
- Qt大屏电子看板系统源码
- 大数据治理平台架构技术方案(ppt)
热门文章
- 计算机电源用什么端子,关于电源接线端子 你应该知道的一些知识
- 几个html页面怎么连接,如何使用flas连接我的两个HTML页面
- img srcset sizes 的作用
- 利用Open Street Map生成地图文件
- 用户可以与计算机进行人机对话是什么性,人机对话考试是什么意思 有哪些利弊...
- 动态规划-状态转移方程练习
- photoshop污点修复画笔工具
- [论文研读]Compiler Optimization of Accelerator Data Transfers
- Python自定义高精度小数计算来获取巴塞尔问题的近似值
- Linux驱动开发之蜂鸣器驱动实验