1. 算法简介
(以下描述,均不是学术用语,仅供大家快乐的阅读)
非洲野狗算法(Dingo Optimization Algorithm)模拟了非洲野狗的捕猎过程。该算法提出于2021年,新算法一个。
该算法模拟了非洲野狗捕猎的四个行为:围攻、追捕、食腐和存活。在每一次迭代过程中每个个体会执行这是四个行为中的一个或者几个,然后得到一个新的位置。
2. 算法流程
本次的主角是非洲野狗,动物世界常客,一种食腐动物。
种群中野狗的数量为N,每只野狗的位置为,该位置的优劣由其适应度函数计算得出。
算法中野狗有四种行为:围攻、追捕和食腐、存活。其中围攻、追捕和食腐三个行为是互斥行为。每只野狗会选择这三种行为中的一种,最后经过存活过程,然后才得到它的新位置。下面看看这四个步骤的具体实现。
2.1围攻
围攻行为顾名思义,会有数只野狗向着目标进行攻击。非洲野狗算法中则是随机选择一定数量的野狗在全局最优位置附近进行搜索并得到一个新位置。
公式(1)中na为围攻的野狗数量,为[2,N/2]中的随机整数。公式(1)的含义也比较好理解,就是这na只野狗到自己的距离(相当于位置关系)。
公式(2)中beta为[-2,2]内的均匀随机数。从公式(2)中可以看出,该公式会使新位置期望为。
2.2追捕行为
追捕行为在算法中的具体实现是在全局最优个体附近进行搜索。其公式如下:
其中beta1为[-2,2]中的均匀随机数,beta2为[-1,1]内的均匀随机数。X_r为野狗群体中的随机个体。
2.3食腐行为
食腐行为的实现公式如下:
式(4)中beta2为[-1,1],b为在{-1,1}中的随机取值。易知,式(4)的期望位置由两个,0点和x_i,故该步骤会使个体在0点和当前位置连成的线段中间反复横跳。
由于只有0为其不动点,故当正解在0时效果较好。
2.4 生存
在捕食完后,野狗仍会面临生存问题。每只野狗的生存概率与其适应度值有关。生存概率较小的个体需要重新到当前最优个体周围去觅食,以提高自己的生存概率。
公式(5)用于计算该野狗的生存概率。若其生存概率小于0.3,则该个体使用公式(6)来计算新位置。公式(6)中和为群体中不相同的两个随机个体,b为在{-1,1}中的随机取值。
当群体收敛后公式后的位置期望为和。不知道为何会如此设计,有不小的几率会使个体因为超出边界而停留在边界上。
2.5 流程
非洲野狗算法中每只野狗选择围攻、追捕和食腐这三个行为的概率由P、Q决定,一般P=0.5,Q=0.7。具体流程如下
rand1和rand2为[0,1]内的均匀随机数。算法流程图如下;
该算法也有贪心步骤,最优只有得到的值优于当前值,才会移动到新位置。
3. 实验
适应度函数。
实验一:
问题维度(维度) | 2 |
总群数量(种群数) | 20 |
最大迭代次数 | 50 |
取值范围 | (-100,100) |
实验次数 | 10 |
P | 0.5 |
Q | 0.7 |
从图像来看算法的收敛性和局部搜索能力都很强,最终也聚集到了正解附近,效果还是很不错的。
值 | |
---|---|
最优值 | 1.1871559347406859E-12 |
最差值 | 4.64538902285694E-7 |
平均值 | 6.730243432912446E-8 |
从结果来看,该算法的结果也比较优秀,效果也相对比较稳定。
实验二:移除贪心步骤,看看野狗们自由运动的图像。
可以看出图像几乎聚集在最优解与0点连线所在的直线上。这应该是围攻行为和食腐行为共同造成的。这两个步骤会使个体出现在和连成的线上。
4. 总结
非洲野狗算法模拟了非洲野狗的捕食过程。算法中每只野狗有围攻、追捕和食腐、存活四个行为。算法的收敛性和局部搜索能力都不错,但是算法主要在个体与0点连成的直线上搜索,全局搜索能力相对较弱,算法结果可能不太稳定。
参考文献
A Bio-Inspired Method for Engineering Design Optimization Inspired by Dingoes Hunting Strategies 提取码:4lkb
原文代码提取码:4lkb
以下指标纯属个人yy,仅供参考
指标 | 星数 |
---|---|
复杂度 | ★★★☆☆☆☆☆☆☆ |
收敛速度 | ★★★★☆☆☆☆☆☆ |
全局搜索 | ★★★☆☆☆☆☆☆☆ |
局部搜索 | ★★★★★☆☆☆☆☆ |
优化性能 | ★★★★★☆☆☆☆☆ |
跳出局部最优 | ★☆☆☆☆☆☆☆☆☆ |
改进点 | ★★★☆☆☆☆☆☆☆ |
网友评论