SCI二区|北极海鹦优化算法(APO)原理及实现【免费获取Matlab代码】


1.背景

2024年,W Wang受到北极海鹦的生存和捕食行为启发,提出了北极海鹦优化算法(Arctic Puffin Optimization, APO)。

在这里插入图片描述
在这里插入图片描述

2.算法原理

2.1算法思想

APO由空中飞行(探索阶段)和水下觅食(开发阶段)两部分构成。在探索阶段,引入了Levy飞行和速度因子机制,以增强算法跳出局部最优的能力并提高收敛速度。在开发阶段,采用了协同和自适应变化因子策略,确保算法能有效利用当前最佳解并指导搜索方向。

在这里插入图片描述

2.2算法过程

在这里插入图片描述

空中飞行阶段(探索)

北极海鹦通常以编队或群体的方式进行协调飞行,这种协作行为提高了飞行效率,并为合作狩猎创造了机会。它们保持相对较低的飞行高度,以方便捕获潜在的水下食物资源:
Y i t + 1 → = X i t → + ( X i t → − X r t → ) ∗ L ( D ) + R R = r o u n d ( 0.5 ∗ ( 0.05 + r a n d ) ) ∗ α (1) \overrightarrow{Y_{i}^{t+1}}=\overrightarrow{X_{i}^{t}}+\left(\overrightarrow{X_{i}^{t}}-\overrightarrow{X_{r}^{t}}\right)*L(D)+R\\R=round(0.5*(0.05+rand))*\alpha \tag{1} Yit+1 =Xit +(Xit Xrt )L(D)+RR=round(0.5(0.05+rand))α(1)
参数 α \alpha α表述为:
α ∼ N o r m a l ( 0 , 1 ) (2) \alpha\sim Normal(0,1)\tag{2} αNormal(0,1)(2)
俯冲是北极海鹦捕食时的关键策略,因为它们会迅速改变飞行方向以加快食物捕获:
Z i t + 1 → = Y i t + 1 → ∗ S S = tan ⁡ ( ( r a n d − 0.5 ) ∗ π ) (3) \overrightarrow{Z_i^{t+1}}=\overrightarrow{Y_i^{t+1}}*S\\ S=\tan((rand-0.5)*\pi)\tag{3} Zit+1 =Yit+1 SS=tan((rand0.5)π)(3)
在这种飞行策略中,北极海鹦在第一阶段通过引入速度系数S来调整其位移。S是一个速度系数,它允许北极海鹦通过调整其飞行速度的大小和方向,灵活地适应不同的摄食需求。随着参数S的增加,算法更加贴近北极海鹦的空中行为,使其在面对竞争和不确定性时更加灵活,从而适应更复杂的空中环境。
为了在各种场景下获得最优结果,算法选择合并两个阶段生成的候选位置,根据适应度对这些解决方案进行排序,并选择前N个个体形成新的种群:
P i t + 1 → = Y i t + 1 → ∪ Z i t + 1 → new = s o r t ( P i t + 1 → ) X i t + 1 → = n e w ( 1 : N ) (4) \begin{gathered} \overrightarrow{P_{i}^{t+1}} =\overrightarrow{Y_{i}^{t+1}}\cup\overrightarrow{Z_{i}^{t+1}} \\ \text{new} =sort\left(\overrightarrow{P_i^{t+1}}\right) \\ \overrightarrow{X_{i}^{t+1}} =new(1:N) \end{gathered}\tag{4} Pit+1 =Yit+1 Zit+1 new=sort(Pit+1 )Xit+1 =new(1:N)(4)

水下觅食阶段(开发)

在北极海鹦的觅食行为中,它们经常采取集体策略,聚集在水面附近的鱼群周围,这种合作捕食行为提高了捕猎效率和成功率:
W i t + 1 → = { X r 1 t → + F ∗ L ( D ) ∗ ( X r 2 t → − X r 3 t → ) r a n d ≥ 0.5 X r 1 t → + F ∗ ( X r 2 t → − X r 3 t → ) r a n d < 0.5 (5) \left.\overrightarrow{W_{i}^{t+1}}=\begin{cases}\overrightarrow{X_{r1}^{t}}+F*L(D)*\left(\overrightarrow{X_{r2}^{t}}-\overrightarrow{X_{r3}^{t}}\right)rand\geq0.5\\\overrightarrow{X_{r1}^{t}}+F*\left(\overrightarrow{X_{r2}^{t}}-\overrightarrow{X_{r3}^{t}}\right)rand<0.5\end{cases}\right.\tag{5} Wit+1 = Xr1t +FL(D)(Xr2t Xr3t )rand0.5Xr1t +F(Xr2t Xr3t )rand<0.5(5)

随着捕食的进行,北极海鹦可能会在一段时间后感觉到当前觅食区域的食物资源枯竭或耗尽。为了继续满足它们的营养需求,它们必须改变它们在水下的位置,寻找更多的鱼或其他水下食物来源:
Y i t + 1 → = W i t + 1 → ∗ ( 1 + f ) f = 0.1 ∗ ( r a n d − 1 ) ∗ ( T − t ) T (6) \begin{aligned} &\overrightarrow{Y_{i}^{t+1}}=\overrightarrow{W_{i}^{t+1}}*(1+f) \\ &f=0.1*(rand-1)*\frac{(T-t)}{T} \end{aligned}\tag{6} Yit+1 =Wit+1 (1+f)f=0.1(rand1)T(Tt)(6)

躲避捕食者策略被用来描述北极海鹦在发现附近的捕食者时的行为。它们用一种特殊的声音或叫声来警告其他北极海鹦,表明危险的存在:
Z i t + 1 → = { X i t → + F ∗ L ( D ) ∗ ( X r 1 t → − X r 2 t → ) r a n d ≥ 0.5 X i t → + β ∗ ( X r 1 t → − X r 2 t → ) r a n d < 0.5 (7) \overrightarrow{Z_i^{t+1}}=\begin{cases}\overrightarrow{X_i^t}+F*L(D)*\left(\overrightarrow{X_{r1}^t}-\overrightarrow{X_{r2}^t}\right)rand\geq0.5\\\overrightarrow{X_i^t}+\beta*\left(\overrightarrow{X_{r1}^t}-\overrightarrow{X_{r2}^t}\right)rand<0.5\end{cases}\tag{7} Zit+1 = Xit +FL(D)(Xr1t Xr2t )rand0.5Xit +β(Xr1t Xr2t )rand<0.5(7)

北极海鹦在水下觅食时采用不同的策略,包括收集饲料、密集搜寻和躲避捕食者。在不同的条件下,这些策略可能导致不同的觅食结果。该算法选择将三个不同位置方程中的候选位置合并为一个新的解,以在各种情况下获得最优结果。根据适应度对解进行排序,并选出前N个个体:
P i t + 1 → = W i t + 1 → ∪ Y i t + 1 → ∪ Z i t + 1 → n e w = s o r t ( P i t + 1 → ) X i t + 1 → = n e w ( 1 : N ) (8) \overrightarrow{P_i^{t+1}}=\overrightarrow{W_i^{t+1}}\cup\overrightarrow{Y_i^{t+1}}\cup\overrightarrow{Z_i^{t+1}}\\ new=sort\left(\overrightarrow{P_{i}^{t+1}}\right)\\\overrightarrow{X_{i}^{t+1}}=new(1:N)\tag{8} Pit+1 =Wit+1 Yit+1 Zit+1 new=sort(Pit+1 )Xit+1 =new(1:N)(8)

流程图

在这里插入图片描述

伪代码

在这里插入图片描述

3.结果展示

在这里插入图片描述

在这里插入图片描述

4.参考文献

[1] Wang W, Tian W, Xu D, et al. Arctic puffin optimization: A bio-inspired metaheuristic algorithm for solving engineering design optimization[J]. Advances in Engineering Software, 2024, 195: 103694.

5.代码获取

  • 15
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小O的算法实验室

谢谢大佬的肯定!

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

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

打赏作者

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

抵扣说明:

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

余额充值