1. 算法简介
(以下描述,均不是学术用语,仅供大家快乐的阅读)
天鹰算法(Aquila Optimizer)是根据天鹰捕猎的行为提出的优化算法。算法提出于2021年,较新的算法一枚。(查了半天也不知道天鹰是个啥动物,孤陋寡闻了算是)
天鹰算法中个体的搜索也分为两阶段,为扩展搜索和收缩搜索。从名字可以看出扩展阶段,搜索范围较大,收缩阶段搜索范围较小。
2. 算法流程
本算法的主角就是天鹰了。
与大多数算法一样,天鹰算法中的个体只有位置这一个属性。天鹰的种群数量为N,每只鹰的位置为 ,该位置的优劣由其适应度函数计算得出。
根据迭代次数,将天鹰的行为分为扩展阶段和收缩阶段。其中扩展阶段为前2/3次迭代,后1/3次迭代时间为收缩阶段。
2.1扩展阶段
扩展阶段总体来说是让个体在当前最优个体附近进行搜索。
扩展阶段有两种更新位置的方式,每个个体随机选择其中一种来得到自己的新位置。
公式(1)中为当前的全局最优解,为当前所有个体的平均位置,rand为[0,1]内的均匀随机数。公式(2)中,表示群体中的随机个体。公式(3)(4)中的d为当前维度值。
首先看看公式(3)和公式(4)的图像。
可以看出,公式(3)和公式(4)的曲线是两个类似反向阻尼的曲线。可是这两个公式的变量是维度d,只有维度非常大时才会呈现上图的情况,较小维度上几乎可以认为其值为10。
该阶段每个个体随机选择公式(1)或者公式(2)来计算自己的新位置。其中公式(1)随着迭代次数的增加和种群的收敛,逐渐向0靠近。公式(2)则是在随机个体周围进行搜索。(四个公式,只有公式(2)勉强能用)。
2.2 收缩阶段
与扩展阶段类似,在收缩阶段中,每个个体也是在两个更新位置的方式中随机选择一个来计算自己的新位置。
其中是(5)中为x取值范围的最大最小值,rand为[0,1]内的均匀随机数。公式(6)中的G2为[-1,1]内的均匀随机数,levy为列维飞行随机数。公式(7)中r1为[-1,1]内的均匀随机数。
该阶段,每个个体会随机选择公式(5)(6)中的一个来计算自己的新位置。随着种群的收敛,公式(5)将向则靠近,期望为解空间中心-0.5。而公式(6)则会向着0靠近。
2.3流程图
在天鹰算法的两个阶段,都需要添加贪心算法保证个体的新位置优于其原位置。
从其实现公式中可以看出,四个位置更新公式中,公式(1)(6)会向0收敛,公式(5)会收敛到常数,只有公式(2)勉强能用,所以该算法的性能应该不太行。
3. 实验
适应度函数。
实验一:
问题维度(维度) | 2 |
总群数量(种群数) | 20 |
最大迭代次数 | 50 |
取值范围 | (-100,100) |
实验次数 | 10 |
从图像上看,其效果不差,但是最终离正解还是有一定的距离,局部搜索能力欠佳。虽然公式(1)(6)会使新位置收敛到0,但由于贪心算法的兜底,在图像上并没有显示出来。
值 | |
---|---|
最优值 | 0.005404808270018164 |
最差值 | 19.398149544638596 |
平均值 | 6.123727179786971 |
从结果来看,这个结果几乎已经无法接受了,结果较差且不太稳定。
下面我们看看移除贪心算法后,群体的运动图像,看是否会像前面所说向0点聚集。
实验二:移除原算法中的贪心步骤。
可以看出,在前期群体还能向着正解靠近,到了后期,部分个体明显的向着0点(图像中心)聚集,也印证了之前的说法。
值 | |
---|---|
最优值 | 0.05297912524033737 |
最差值 | 5.344528430379567 |
平均值 | 1.1799885325237747 |
看结果却比实验一好了不少,应该是由于缺少了贪心算法的约束,个体能够到达的位置更加多样,找到较优解的概率也增大了一点点,也不太行。
4. 总结
天鹰算法模拟了天鹰的捕食过程,将其搜索猎物过程分为扩展阶段和搜索阶段,扩展阶段大范围搜索猎物,收缩阶段,小范围捕获猎物。但是算法的实现与设计有着较大的出入,实现上有较大的概率让个体位置收敛到0,面对正解不在0的问题时,算法无法取得较好的结果。
参考文献
Aquila Optimizer: A novel meta-heuristic optimization algorithm 提取码: 3ctk
原文代码 提取码: 3ctk
以下指标纯属个人yy,仅供参考
指标 | 星数 |
---|---|
复杂度 | ★★★★★☆☆☆☆☆ |
收敛速度 | ★★☆☆☆☆☆☆☆☆ |
全局搜索 | ★★★☆☆☆☆☆☆☆ |
局部搜索 | ★☆☆☆☆☆☆☆☆☆ |
优化性能 | ★★☆☆☆☆☆☆☆☆ |
跳出局部最优 | ★☆☆☆☆☆☆☆☆☆ |
改进点 | ★★★☆☆☆☆☆☆☆ |