非洲秃鹫优化算法详解(African vultures optimization algorithm,AVOA),附完整MATLAB代码

时间:2025-03-13 07:26:34

1. 非洲秃鹫优化(AVOA)

作为Abdollahzadeh等人[68]于2021年提出的一种新颖的基于种群的优化技术,AVOA模仿了非洲秃鹫的生活习惯和觅食行为。发表在中科院1区Computers & Industrial Engineering上。

2.2. 非洲秃鹫优化(AVOA)

作为一种新型的基于种群的优化技术,由Abdollahzadeh等人提出。[69] 在2021年,AVOA模拟了非洲秃鹫的生活习性和觅食行为。非洲秃鹫很少对其他动物发起攻击,但可能会杀死弱小或生病的动物,甚至以人类尸体为食。这些食肉鸟类的一个有趣特征是它们的秃头,这在调节体温和保护自己免受细菌侵害方面起着重要作用。在自然环境中,秃鹫不断地长途跋涉,从一个地方到另一个地方寻找更好的食物来源,旋转飞行是它们的常见模式。通常,在找到食物供应后,秃鹫会聚集在一起争夺食物。弱小的秃鹫会围在强壮的秃鹫周围等待食物,而后者则会因为吃腻了而感到厌倦。基于上述生物学概念,AVOA算法的数学模型分为四个独立的阶段。每个步骤的简要描述如下。

2.2.1. 阶段一:确定组内最佳秃鹫

一旦生成了AVOA算法的初始随机种群,就评估所有解决方案的目标值,从第一组中选出最佳解决方案,第二组中选出对应于第二最佳解决方案的秃鹫。此外,其余的秃鹫被安排在第三组。由于这两个最佳秃鹫具有指导作用,公式(12)旨在帮助当前个体确定在每次迭代中应该向哪只秃鹫移动。

X B = { Bestvulture 1 , if  p i = L 1 Bestvulture 2 , if  p i = L 2 (12) X_B = \begin{cases} \text{Bestvulture}_1, & \text{if } p_i = L_1 \\ \text{Bestvulture}_2, & \text{if } p_i = L_2 \end{cases} \tag{12} XB={Bestvulture1,Bestvulture2,if pi=L1if pi=L2(12)

其中 X B X_B XB 表示最佳秃鹫, Bestvulture 1 \text{Bestvulture}_1 Bestvulture1 Bestvulture 2 \text{Bestvulture}_2 Bestvulture2 分别表示第一组和第二组中的最佳值, L 1 L_1 L1 L 2 L_2 L2 表示在优化操作之前测量的两个参数,范围在0到1之间,其中 L 1 + L 2 = 1 L_1 + L_2 = 1 L1+L2=1。从每组 p i p_i pi 中选择最佳解决方案的概率是根据轮盘赌机制计算的,其公式如下。

p i = f i ∑ i = 1 m f i (13) p_i = \frac{f_i}{\sum_{i=1}^{m} f_i} \tag{13} pi=i=1mfifi(13)

其中 f i f_i fi 表示秃鹫的适应度值, m m m 是第一组和第二组中秃鹫的总数。

2.2.2. 阶段二:秃鹫的饥饿率

当秃鹫感到满足时,它们具有较高的能量水平,可以更远距离寻找食物。相反,如果它们没有足够的能量,饥饿的秃鹫会变得具有攻击性,因此与附近的秃鹫争夺食物。基于此,秃鹫的饥饿程度建模如下。

F = ( 2 × rand + 1 ) × z × ( 1 − t T ) (14) F = (2 \times \text{rand} + 1) \times z \times (1 - \frac{t}{T}) \tag{14} F=(2×rand+1)×z×(1Tt)(14)
此外
g = h × ( sin ⁡ 2 ( π 2 × t T ) + cos ⁡ ( π 2 × t T ) − 1 ) (15) g = h \times (\sin^2(\frac{\pi}{2} \times \frac{t}{T}) + \cos(\frac{\pi}{2} \times \frac{t}{T}) - 1) \tag{15} g=h×(sin2(2π×Tt)+cos(2π×Tt)1)(15)

其中 F F F 表示秃鹫的饥饿程度, rand \text{rand} rand 是0到1之间的随机数, z z z 是-1到1之间的随机数, t t t T T T 分别是当前迭代次数和最大迭代次数, h h h 是区间[-2, 2]内的随机数, w w w 是常数。

从公式(14)中可以看出,参数 F F F 随着迭代次数的增加呈下降趋势。因此,还需要构建AVOA算法中探索阶段和开发阶段之间的过渡。在这里,当 ∣ F ∣ ≥ 1 |F| \geq 1 F1 时,意味着秃鹫感到满足并在不同区域寻找新的食物,这也被称为探索阶段。另一方面,当 ∣ F ∣ < 1 |F| < 1 F<1 时,秃鹫在解决方案的邻域内寻找食物,AVOA进入开发阶段。

2.2.3. 阶段三:探索

在自然界中,秃鹫具有出色的视觉能力,可以发现垂死的动物。当秃鹫开始饥饿时,它们会花费大量时间仔细检查生活环境,并长途跋涉寻找食物。考虑到秃鹫的习惯,AVOA的探索阶段设计了两种不同的机制,以尽可能多地探索不同的随机区域。每种机制都通过一个称为 P i P_i Pi 的参数选择,该参数必须在搜索操作之前在区间[0, 1]内分配一个值。数学模型可以表示如下。

if rand ≤ P i : \text{if rand} \leq P_i: if randPi:

X i ( t + 1 ) = X B ( t ) − D i ( t ) × X i ( t ) (16) X_i(t + 1) = X_B(t) - D_i(t) \times X_i(t)\tag{16} Xi(t+1)=XB(t)Di(t)×Xi(t)(16)

D i ( t ) = ∣ C × X B ( t ) − X i ( t ) ∣ (17) D_i(t) = |C \times X_B(t) - X_i(t)|\tag{17} Di(t)=C×XB(t)Xi(t)(17)

if rand > P i : \text{if rand} > P_i: if rand>Pi:

X i ( t + 1 ) = X B ( t ) − F + rand × ( ( u b − l b ) × rand ) (18) X_i(t + 1) = X_B(t) - F + \text{rand} \times ((ub - lb) \times \text{rand})\tag{18} Xi(t+1)=XB(t)F+rand×((ublb)×rand)(18)

其中 X i ( t + 1 ) X_i(t + 1)