摘要:人工蜂鸟算法( AHA )是 ZHAO 等 于 2021 年提出的一种新型元启发式优化算法 . 该算法模拟了自然界中蜂鸟轴向飞行、对角飞行、全方位飞行 3 种特殊飞行技能和引导觅食、区域觅食、迁移觅食 3 种智能觅食策略,并通过引入访问表来实现蜂鸟寻找和选择食物来源的记忆功能,最终达到求解最优化问题的目的 .
AHA 将 n n n 只蜂鸟放置在 n n n 种食物源上, 随机初 始化食物源位置:
x i = S L + r ⋅ ( S u − S L ) , i = 1 , 2 , ⋯ , n (1) x_i=S_{\mathrm{L}}+r \cdot\left(S_{\mathrm{u}}-S_{\mathrm{L}}\right), i=1,2, \cdots, n \tag{1} xi=SL+r⋅(Su−SL),i=1,2,⋯,n(1)
式中: x i x_i xi 表示第 i i i 个食物源位置; n n n 表示种群规模; S u 、 S L S_u 、 S_{\mathrm{L}} Su、SL 分别表示搜索空间上、下限值; r r r 表示 [ 0 , 1 ] [0,1] [0,1] 之 间均匀分布的随机数.
食物来源访问表初始化如下:
V i , j = { 0 , if i ≠ j null, i = j , i = 1 , 2 , ⋯ , n ; j = 1 , 2 , ⋯ , n (2) V_{i, j}=\left\{\begin{array}{cc} 0, & \text { if } i \neq j \\ \text { null, } & i=j \end{array}, i=1,2, \cdots, n ; j=1,2, \cdots, n\right. \tag{2} Vi,j={0, null, if i=ji=j,i=1,2,⋯,n;j=1,2,⋯,n(2)
式中: i = j i=j i=j 表示蜂鸟在特定的食物来源处受食; i ≠ j i \neq j i=j 表示当前迭代中第 j j j 个食物源被第 i i i 只蜂鸟访问过.
AHA 中, 蜂鸟为了获得更多的花蜜, 会在相同 访问级别的食物源中访问花蜜补充率最高的食物源. 在受食过程中, 通过引人方向切换向量描述全向飞 行、对角飞行和轴向飞行 3 种技能, 用于控制 d d d 维空 间中的一个或多个方向是否可行. 轴向飞行、对角飞 行、全向飞行技能分别描述如下:
D ( i ) = { 1 , if i = rand ( [ 1 , d ] ) 0 , else (3) \begin{gathered} D^{(i)}= \begin{cases}1, & \text { if } i=\operatorname{rand}([1, d]) \\ 0, & \text { else }\end{cases} \end{gathered} \tag{3} D(i)={1,0, if i=rand([1,d]) else (3)
D ( i ) = { 1 , if i = P ( j ) , j ∈ [ 1 , k ] , P = rand ( k ) , k ∈ { 2 , [ r 1 ⋅ ( d − 2 ) + 1 ] } 0 , else (4) D^{(i)}= \begin{cases}1, & \text { if } i=P(j), j \in[1, k], P=\operatorname{rand}(k), \\ k \in\left\{2,\left[r_1 \cdot(d-2)+1\right]\right\} \\ 0, & \text { else }\end{cases} \tag{4} D(i)=⎩ ⎨ ⎧1,k∈{2,[r1⋅(d−2)+1]}0, if i=P(j),j∈[1,k],P=rand(k), else (4)
D ( i ) = 1 (5) D^{(i)}=1 \tag{5} D(i)=1(5)
式中: D ( i ) D^{(i)} D(i) 表示飞行技能; i = rand ( [ 1 , d ] ) i=\operatorname{rand}([1, d]) i=rand([1,d]) 表示生成从 1 到 d d d 的随机整数; rand ( k ) \operatorname{rand}(k) rand(k) 表示创建从 1 到 k k k 的 随机整数排列; r 1 r_1 r1 表示 [ 0 , 1 ] [0,1] [0,1] 之间均匀分布的随机 数; d d d 表示问题维度. 其中 i = 1 , 2 , ⋯ , d i=1,2, \cdots, d i=1,2,⋯,d.
凭借这些飞行技能, 蜂鸟可以访问目标食物源, 从而获得候选食物源. 候选食物源位置更新数学描述 如下:
v i ( t + 1 ) = x i , tar ( t ) + a ⋅ D [ x i ( t ) − x i , tar ( t ) ] (6) v_i(t+1)=x_{i, \text { tar }}(t)+a \cdot D\left[x_i(t)-x_{i, \text { tar }}(t)\right] \tag{6} vi(t+1)=xi, tar (t)+a⋅D[xi(t)−xi, tar (t)](6)
式中: v i ( t + 1 ) v_i(t+1) vi(t+1) 表示第 t + 1 t+1 t+1 次迭代第 i i i 个候选食物源 位置; x i ( t ) x_i(t) xi(t) 表示第 t t t 次迭代第 i i i 个食物源位置; x i , tar x_{i, \text { tar }} xi, tar ( t ) (t) (t) 表示第 i i i 只蜂鸟将访问的目标食物源位置; a a a 表 示服从正态分布 ( ( ( 均值 = 0 =0 =0, 标准偏差 = 1 =1 =1 ) 的引导因子.
依据式 (6), 引导受食第 i i i 个食物源的位置更新 如下:
x i ( t + 1 ) = { x i ( t ) f [ x i ( t ) ] ⩽ f [ v i ( t + 1 ) ] v i ( t + 1 ) f [ x i ( t ) ] > f [ v i ( t + 1 ) ] (7) x_i(t+1)=\left\{\begin{array}{cc} x_i(t) & f\left[x_i(t)\right] \leqslant f\left[v_i(t+1)\right] \\ v_i(t+1) & f\left[x_i(t)\right]>f\left[v_i(t+1)\right] \end{array}\right. \tag{7} xi(t+1)={xi(t)vi(t+1)f[xi(t)]⩽f[vi(t+1)]f[xi(t)]>f[vi(t+1)](7)
式中: x i ( t + 1 ) x_i(t+1) xi(t+1) 表示第 ( t + 1 ) (t+1) (t+1) 次迭代第 i i i 个食物源位 置; f ( ⋅ ) f(\cdot) f(⋅) 表示函数适应度值; 其他参数意义同上.
蜂鸟在访问了目标食物源后, 很可能会移动到自 己领地外的邻近区域寻找新的食物源, 而不是访问其 他现有的食物源. 邻近区域候选食物源位置更新数学 描述如下:
v i ( t + 1 ) = x i ( t ) + b ⋅ D ⋅ x i ( t ) (8) v_i(t+1)=x_i(t)+b \cdot D \cdot x_i(t) \tag{8} vi(t+1)=xi(t)+b⋅D⋅xi(t)(8)
式中: b b b 表示服从正态分布 ( ( ( 均值 = 0 =0 =0, 标准偏差 = 1 =1 =1 ) 的区域因子; 其他参数意义同上.
当蜂鸟经常造访的区域缺乏食物时, 蜂鸟通常会 迁移到较远的食物来源区进行受食. 花蜜补充率最差 食物源位置更新数学描述如下:
x wor ( t + 1 ) = S L + r ⋅ ( S u − S L ) (9) x_{\text {wor }}(t+1)=S_{\mathrm{L}}+r \cdot\left(S_{\mathrm{u}}-S_{\mathrm{L}}\right) \tag{9} xwor (t+1)=SL+r⋅(Su−SL)(9)
式中: x wor x_{\text {wor }} xwor 表示种群中花蜜补充率最差的食物源位 置; 其他参数意义同上.
[1]Zhao Weiguo,Wang Liying,Mirjalili Seyedali. Artificial hummingbird algorithm: A new bio-inspired optimizer with its engineering applications[J]. Computer Methods in Applied Mechanics and Engineering,2022,388.
[2] 崔东文,袁树堂.基于WPD-AHA-ELM模型的水质时间序列多步预测[J/OL].三峡大学学报(自然科学版):1-8[2022-12-20].DOI:10.13393/j.cnki.issn.1672-948X.2023.01.002.