智能优化算法:人工蜂鸟算法 - 附代码

智能优化算法:人工蜂鸟算法

摘要:人工蜂鸟算法( AHA )是 ZHAO 等 于 2021 年提出的一种新型元启发式优化算法 . 该算法模拟了自然界中蜂鸟轴向飞行、对角飞行、全方位飞行 3 种特殊飞行技能和引导觅食、区域觅食、迁移觅食 3 种智能觅食策略,并通过引入访问表来实现蜂鸟寻找和选择食物来源的记忆功能,最终达到求解最优化问题的目的 .

1.人工蜂鸟算法

1.1 初始化

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(SuSL),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}} SuSL 分别表示搜索空间上、下限值; 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 只蜂鸟访问过.

1.2 引导觅食

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(d2)+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)+aD[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() 表示函数适应度值; 其他参数意义同上.

1.3 区域觅食

蜂鸟在访问了目标食物源后, 很可能会移动到自 己领地外的邻近区域寻找新的食物源, 而不是访问其 他现有的食物源. 邻近区域候选食物源位置更新数学 描述如下:
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)+bDxi(t)(8)
式中: b b b 表示服从正态分布 ( ( ( 均值 = 0 =0 =0, 标准偏差 = 1 =1 =1 ) 的区域因子; 其他参数意义同上.

1.4 迁徙觅食

当蜂鸟经常造访的区域缺乏食物时, 蜂鸟通常会 迁移到较远的食物来源区进行受食. 花蜜补充率最差 食物源位置更新数学描述如下:
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(SuSL)(9)
式中: x wor  x_{\text {wor }} xwor  表示种群中花蜜补充率最差的食物源位 置; 其他参数意义同上.

在这里插入图片描述

2.实验结果

在这里插入图片描述

3.参考文献

[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.

4.Matlab

5.Python

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能算法研学社(Jack旭)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值