1. 算法简介
(以下描述,均不是学术用语,仅供大家快乐的阅读)
秃鹰优化算(bald eagle search optimization algorithm)是根据秃鹰的捕食过程提出的优化算法。该算法提出(发表)于2019年,属于较新的优化算法。
秃鹰算法模拟了秃鹰捕食的三个阶段,选择区域、搜索猎物、俯冲捕猎。随着迭代次数的增加,秃鹰会改变其搜索方式。总体来说秃鹰算法是综合了粒子群算法和鲸鱼算法,不过其性能可以说是青出于蓝而胜于蓝了,毕竟每个个体搜索了三次。
2. 算法流程
本次的主角就是秃鹰了。秃鹰个体也是只有位置这一个属性,秃鹰种群数量为N,每只秃鹰的位置为,该位置的优劣由其适应度函数计算得出。
秃鹰捕食有三个阶段(搜索方式):选择阶段(Select stage),搜索阶段(Search stage),俯冲阶段(Swooping stage)。
2.1选择阶段
选择阶段,秃鹫会飞到当前最优个体附近,与最优个体的距离由全体个体的平均位置决定。
公式(1)中表示当前个体选择的新位置,alpha为[1.5,2]内的常数,r为[0,1]内均匀分布的随机数,为当前群体的平均位置。
如果新位置优于原位置,秃鹰则会飞行到新位置,否则留在原地。
2.2搜索阶段
搜索阶段,秃鹰会围绕当前位置,以阿基米德螺线方式搜索,其具体实现如下:
其中公式(5)中a为取值在[5,10]中的常数,R是取值在[0.5,2]中的常数,rand为[0,1]内的均匀随机数。
从公式(2)可以看出,秃鹰围绕自身飞行,飞行的距离由自身与群体中心的距离和自身与下一只秃鹰的距离决定。(如果当前秃鹰是群体中的最后一只,它的下一只秃鹰则为群体的第一只秃鹰)。
如果搜索得到的新位置优于原位置,秃鹰则会飞行到新位置,否则留在原地。
2.3俯冲阶段
俯冲阶段则是在当前的最优位置周围以螺线的方式搜索,其具体公式如下:
公式(6)c1,c2为常数,一般取值为2,rand为[0,1]内的均匀随机数。
可以看出次阶段,秃鹰会围绕着最优个体搜索,但又不是完全围绕最优个体搜索,公式(6)中,最优个体前有随机数作为系数。由于随机数的存在,该个体所围绕的中心会渐渐的向0靠近,故当0点为最优位置时,算法将取得较好的效果。
该阶段依然需要贪心算法,如果搜索得到的新位置优于原位置,秃鹰则会飞行到新位置,否则留在原地。
2.4流程图
可以看出秃鹰算法的每一次迭代过程中,每只秃鹫进行了三次适应度值计算,而其他大多数算法只进行了一次计算,所以在做对照实验时,应该将秃鹰算法的最大迭代次数或者种群数设置为其他算法的1/3。
3. 实验
适应度函数。
实验一:
问题维度(维度) | 2 |
总群数量(种群数) | 20 |
最大迭代次数 | 50 |
取值范围 | (-100,100) |
实验次数 | 10 |
C1 | 2 |
C2 | 2 |
alpha公式(1) | 2 |
a公式(5)(9) | 10 |
R公式(5)(9) | 1.5 |
从图像可以看出,秃鹰算法的收敛速度还是挺快的,在第3代时就已经非常集中了。考虑到它每代计算三次的作弊行为,也可以认为在第9代时收敛。
值 | |
---|---|
最优值 | 1.516652616780882E-23 |
最差值 | 3.311250131703701E-17 |
平均值 | 3.4414438428571417E-18 |
结果上看,也是非常的好,毕竟是三倍的付出,结果可以说是同等条件下算法中比较优秀的了。
由于有贪心步骤的存在,图像上看不出其俯冲阶段向0点靠近的行为。下面移除所有阶段的贪心步骤,看看秃鹰的运动过程。
实验二: 移除秃鹰算法的贪心步骤,自由飞翔。
可以看出移除贪心步骤后,种群不再收敛,给我的感觉是在0点和最优点之间的区域飞行,不过也不好说。
值 | |
---|---|
最优值 | 0.030622151048277216 |
最差值 | 0.41104809161705186 |
平均值 | 0.1993553041755197 |
实验结果也较为一般,明显弱于有贪心步骤时的结果。
如果算法确实会向0收敛,猜测会有下面两种结果:
(1) 在实验二的基础上,将上面适应度函数取值范围设置为[50,100]时,种群应该会聚集在左上角部分(最优解在右下角)。
(2) 在实验二的基础上,将适应度函数的最优解设为0,种群应该会收敛到原点。
实验三:在实验二的基础上将适应度函数取值范围设置为[50,100]
从图像可以看出,种群没有在最优解附近运动而是在左上角,甚至因为超出边界被停留在了边界上,说明种群有着向左上角运动的趋势。
实验四:在实验二的基础上,将最优解设置为a=b=0。
可以看出,这次收敛速度非常的快也非常的集中,几乎可以认为是在同一个点了。
值 | |
---|---|
最优值 | 4.208327662513449E-107 |
最差值 | 4.169966258795712E-89 |
平均值 | 4.170038576285687E-90 |
这个结果应该是目前所看到最好的结果了,不过很可惜是一个作弊行为得到的。只有当最优解在0处时才会得到。如果事先已知最优解为0,那还要算法干什么呢?
从实验三和实验四可以看出,与实验二后的猜想基本一致。
实验五:在实验四的基础上,去掉秃鹰的俯冲阶段。
可以看出,去除俯冲阶段后的秃鹰算法不再收敛到一个点,而是会在解空间内不断的搜索。这可以说明俯冲阶段将会使秃鹰群体向0点收敛,该阶段的实现公式应该进行改进。
4. 总结
秃鹰算法是根据秃鹰的觅食行为而提出的算法。算法的结构有些许复杂,每次迭代分为选择、搜索和俯冲三个阶段。主要搜索行为借助了螺线以及群体中心,可以看做是将粒子群算法和鲸鱼算法进行了融合,使用螺线来得到角度,使用自身与群体中心和下一个秃鹰得到距离,来计算新的位置。
由于每代中的各个个体计算了三次适应度函数,所有同等条件下其结果会优于其他算法,在对照实验时,应当将秃鹰算法的迭代次数或者种群数削减至原值的1/3。俯冲阶段由于最优位置前有0-1的随机系数,其个体的位置会逐渐收敛于0,当最优解不在0处时,其结果相对较差。该阶段须改进。
参考文献
Alsattar H A , Zaidan A A , Zaidan B B . Novel meta-heuristic bald eagle search optimisation algorithm[J]. Artificial Intelligence Review, 2020, 53(6). 提取码:uxsz
以下指标纯属个人yy,仅供参考
指标 | 星数 |
---|---|
复杂度 | ★★★★★★☆☆☆☆ |
收敛速度 | ★★★★★★☆☆☆☆ |
全局搜索 | ★★☆☆☆☆☆☆☆☆ |
局部搜索 | ★★★★☆☆☆☆☆☆ |
优化性能 | ★★★☆☆☆☆☆☆☆ |
跳出局部最优 | ★☆☆☆☆☆☆☆☆☆ |
改进点 | ★★★★☆☆☆☆☆☆ |
网友评论