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

一、理论基础

1、白骨顶鸡优化算法

白骨顶鸡优化算法(Coot optimization algorithm, COOT)由Iraj Naruei等人于2021年提出的一种新型启发式算法,其灵感来源于白骨顶鸡在水面上的两种不同运动模式。
在该算法中,作者主要模拟了随机运动和同步运动,并将这两种运动模拟为算法中的三种行为,即:个体随机运动、链式运动、最优个体引导运动。

1.1 个体随机运动

为了实现这一运动,考虑在搜索空间中根据式(1)的随机位置,并将白骨顶鸡移动到这个随机位置。 Q = r a n d ( 1 , d ) . ∗ ( u b − l b ) + l b (1) Q=rand(1,d).*(ub-lb)+lb\tag{1} Q=rand(1,d).(ublb)+lb(1)这种行为探索了搜索空间的不同部分。如果算法陷入局部最优,该行为将会使得算法跳出局部最优。鸡的新位置根据式(2)计算。 C o o t P o s ( i ) = C o o t P o s ( i ) + A × R 2 × ( Q − C o o t P o s ( i ) ) (2) CootPos(i)=CootPos(i)+A\times R_2\times(Q-CootPos(i))\tag{2} CootPos(i)=CootPos(i)+A×R2×(QCootPos(i))(2)其中, R 2 R_2 R2 [ 0 , 1 ] [0,1] [0,1]区间中的随机数, a a a根据式(3)计算。 A = 1 − L × ( 1 I t e r ) (3) A=1-L\times\left(\frac{1}{Iter}\right)\tag{3} A=1L×(Iter1)(3)其中, L L L是当前迭代次数, I t e r Iter Iter是最大迭代次数。

1.2 链式运动

两个个体的平均位置可用于实现链式运动。另一种实现链式运动的方法是:首先计算两个个体之间的距离向量,然后将其中一个个体向另一个个体移动大约距离向量的一半。本文使用了第一种方法,并根据式(4)计算出个体的新位置。 C o o t P o s ( i ) = 0.5 × ( C o o t P o s ( i − 1 ) + C o o t P o s ( i ) ) (4) CootPos(i)=0.5\times(CootPos(i-1)+CootPos(i))\tag{4} CootPos(i)=0.5×(CootPos(i1)+CootPos(i))(4)其中, C o o t P o s ( i − 1 ) CootPos(i-1) CootPos(i1)是第二个个体。

1.3 最优个体引导运动

1.3.1 根据组长调整位置

通常情况下,小组由小组前面的几只个体领导,其他个体必须根据小组的领导者(即组长)调整自己的位置,并向它们移动。可以考虑领导者的平均位置,种群可以根据该平均位置更新其位置。考虑到平均位置会导致过早收敛,为了实现这一运动,使用式(5)中的机制来选择领导者。 K = 1 + ( i   M O D   N L ) (5) K=1+(i\,MOD\,NL)\tag{5} K=1+(iMODNL)(5)其中, i i i是当前个体的位置索引, N L NL NL是领导者的数量, K K K是领导者的索引。
式(6)根据选定的领导者计算个体的下一个位置。 C o o t P o s ( i ) = L e a d e r P o s ( k ) + 2 × R 1 × cos ⁡ ( 2 R π ) × ( L e a d e r P o s ( k ) − C o o t P o s ( i ) ) (6) CootPos(i)=LeaderPos(k)+2\times R_1\times\cos(2R\pi)\times(LeaderPos(k)-CootPos(i))\tag{6} CootPos(i)=LeaderPos(k)+2×R1×cos(2Rπ)×(LeaderPos(k)CootPos(i))(6)其中, C o o t P o s ( i ) CootPos(i) CootPos(i)是个体的当前位置, L e a d e r P o s ( k ) LeaderPos(k) LeaderPos(k)是选中的领导者位置, R 1 R_1 R1 [ 0 , 1 ] [0,1] [0,1]区间中的随机数, R R R [ − 1 , 1 ] [-1,1] [1,1]区间中的随机数。

1.3.2 领导者引领团队走向最佳区域(领导运动)

团队必须朝着一个目标(最佳区域)前进,因此领导者需要更新它们对目标的位置。在跟随者向领导者靠拢的同时,领导者也要不断地向最优区域靠近。有时,领导者必须离开当前的最佳位置,才能找到更好的位置,有效提升了算法跳出局部最优值的能力。 L e a d e r P o s ( i ) = { B × R 3 × cos ⁡ ( 2 R π ) × ( g B e s t − L e a d e r P o s ( i ) ) + g B e s t R 4 < 0.5 B × R 3 × cos ⁡ ( 2 R π ) × ( g B e s t − L e a d e r P o s ( i ) ) − g B e s t R 4 ≥ 0.5 (7) LeaderPos(i)=\begin{dcases}B\times R_3\times\cos(2R\pi)\times(gBest-LeaderPos(i))+gBest\quad R_4<0.5\\[2ex]B\times R_3\times\cos(2R\pi)\times(gBest-LeaderPos(i))-gBest\quad R_4\geq0.5\end{dcases}\tag{7} LeaderPos(i)=B×R3×cos(2Rπ)×(gBestLeaderPos(i))+gBestR4<0.5B×R3×cos(2Rπ)×(gBestLeaderPos(i))gBestR40.5(7)其中, g B e s t gBest gBest是迄今为止发现的最佳位置, R 3 R_3 R3 R 4 R_4 R4 [ 0 , 1 ] [0,1] [0,1]区间中的随机数, R R R [ − 1 , 1 ] [−1,1] [1,1]区间中的随机数, B B B根据式(8)计算。 B = 2 − L × ( 1 I t e r ) (8) B=2-L\times\left(\frac{1}{Iter}\right)\tag{8} B=2L×(Iter1)(8)其中, L L L是当前迭代次数, I t e r Iter Iter是最大迭代次数。
2 × R 3 2×R_3 2×R3产生更大的随机运动,因此算法不会陷入局部最优。这意味着算法在开发阶段也在进行探索。 cos ⁡ ( 2 R π ) \cos(2R\pi) cos(2Rπ)搜索具有不同半径的最佳个体,以在该个体周围找到更好的位置。

2、COOT算法伪代码

COOT算法伪代码如图1所示。
在这里插入图片描述

图1 COOT算法伪代码

二、仿真实验与结果分析

将COOT与SSA、MVO和GWO进行对比,以文献[1]中表1和表2的F1、F3、F4(单峰函数/30维)、F9、F11、F13(多峰函数/30维)为例,实验设置种群规模为30,最大迭代次数为500,每种算法独立运算30次,结果显示如下:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

函数:F1
SSA:最差值: 4.3517e-06,最优值:2.6046e-08,平均值:3.0027e-07,标准差:7.8379e-07,秩和检验:3.0199e-11
MVO:最差值: 1.8419,最优值:0.59588,平均值:1.1932,标准差:0.37714,秩和检验:3.0199e-11
GWO:最差值: 4.9496e-27,最优值:2.6417e-29,平均值:1.0244e-27,标准差:1.2287e-27,秩和检验:3.4971e-09
COOT:最差值: 1.2453e-25,最优值:5.921e-46,平均值:4.1784e-27,标准差:2.2731e-26,秩和检验:1
函数:F3
SSA:最差值: 6259.0882,最优值:361.6992,平均值:1836.9734,标准差:1241.9126,秩和检验:3.0199e-11
MVO:最差值: 454.1313,最优值:100.3723,平均值:234.5366,标准差:88.998,秩和检验:3.0199e-11
GWO:最差值: 6.8352e-05,最优值:4.4812e-09,平均值:7.5173e-06,标准差:1.4181e-05,秩和检验:3.0199e-11
COOT:最差值: 2.0864e-18,最优值:4.5224e-52,平均值:6.9547e-20,标准差:3.8092e-19,秩和检验:1
函数:F4
SSA:最差值: 18.1705,最优值:3.4931,平均值:10.9622,标准差:3.8599,秩和检验:3.0199e-11
MVO:最差值: 3.1682,最优值:1.0197,平均值:1.9046,标准差:0.56173,秩和检验:3.0199e-11
GWO:最差值: 5.62e-06,最优值:6.5853e-08,平均值:8.6401e-07,标准差:1.1074e-06,秩和检验:3.0199e-11
COOT:最差值: 5.7662e-11,最优值:2.6987e-23,平均值:2.3332e-12,标准差:1.0601e-11,秩和检验:1
函数:F9
SSA:最差值: 83.5763,最优值:14.9244,平均值:50.8352,标准差:20.3717,秩和检验:4.111e-12
MVO:最差值: 252.2225,最优值:46.3223,平均值:125.0884,标准差:43.268,秩和检验:4.111e-12
GWO:最差值: 76.7443,最优值:5.6843e-14,平均值:6.589,标准差:14.3414,秩和检验:1.5148e-10
COOT:最差值: 3.8654e-12,最优值:0,平均值:2.0274e-13,标准差:7.8121e-13,秩和检验:1
函数:F11
SSA:最差值: 0.049122,最优值:0.00043358,平均值:0.014355,标准差:0.012203,秩和检验:4.111e-12
MVO:最差值: 0.96905,最优值:0.70859,平均值:0.84999,标准差:0.073388,秩和检验:4.111e-12
GWO:最差值: 0.021262,最优值:0,平均值:0.0033834,标准差:0.0069694,秩和检验:0.34456
COOT:最差值: 5.5511e-15,最优值:0,平均值:3.9598e-16,标准差:1.2641e-15,秩和检验:1
函数:F13
SSA:最差值: 50.4004,最优值:0.00027893,平均值:15.1287,标准差:14.3801,秩和检验:1.0188e-05
MVO:最差值: 0.78326,最优值:0.06473,平均值:0.21457,标准差:0.17072,秩和检验:0.00069125
GWO:最差值: 1.5333,最优值:0.20309,平均值:0.62509,标准差:0.30599,秩和检验:0.00076973
COOT:最差值: 2.9726,最优值:0.058763,平均值:0.45485,标准差:0.54704,秩和检验:1

实验结果表明:COOT算法具有良好的性能和竞争力。

三、参考文献

[1] Iraj Naruei, Farshid Keynia. A new optimization method based on COOT bird natural life model[J]. Expert Systems With Applications, 2021, 183: 115352.

猜你喜欢

转载自blog.csdn.net/weixin_43821559/article/details/124118935