智能优化算法(源码)-海鸥优化算法(SOA)

在这里插入图片描述

获取更多资讯,赶快关注上面的公众号吧!

海鸥优化算法是印度学者Gaurav Dhiman于2018年提出的一种受生物启发的智能优化算法,该算法的主要灵感来自于自然界中海鸥的迁徙和攻击行为,这些行为经过数学建模和实现,可以在给定搜索空间中进行探索和利用。扫码关注公众号,后台回复“海鸥”或“SOA”可以获取Matlab代码

生物学泛型

一般来说,海鸥是群居性的,它们用自己的智慧来寻找并攻击猎物。海鸥最重要的是它们的迁徙和攻击行为。迁徙被定义为海鸥从一个地方到另一个地方的季节性迁移,以寻找最丰富食物来源,以提供足够的能量。该行为可描述为:

  • 在迁徙过程中,它们成群结队地迁徙。海鸥的初始位置不同,以避免相互碰撞;
  • 在一个群体中,海鸥可以朝着最适合生存的海鸥的方向前进;
  • 其他海鸥可以根据最适合的海鸥更新它们的初始位置。

海鸥在迁徙过程中,会经常攻击其他候鸟,在攻击过程中,它们可以做出螺旋形的自然运动,如图1所示。

图1 海鸥的迁徙和攻击行为

数学模型

迁徙(探索)

在迁移过程中,海鸥优化算法模拟了海鸥群如何向一个位置移动到另一个位置。在这个阶段,海鸥应该满足三个条件:

  • 避免碰撞:为了避免与邻居(即其他海鸥)的碰撞,引入了额外的变量 A A A,用于计算新搜索代理的位置,如图2所示:
    C ⃗ s = A × P ⃗ s ( x ) (5) \vec{C}_{s}=A \times \vec{P}_{s}(x)\tag{5} C s=A×P s(x)(5)

其中, C ⃗ s \vec{C}_{s} C s表示与其他搜索代理不发生碰撞的搜索代理的位置, P ⃗ s \vec{P}_{s} P s表示搜索代理的当前位置, x x x表示当前迭代次数, A A A表示给定搜索空间中搜索代理的移动行为。
A = f c − ( x × ( f c /  Max  iteration  ) ) (6) A=f_{c}-\left(x \times\left(f_{c} / \text { Max }_{\text {iteration }}\right)\right)\tag{6} A=fc(x×(fc/ Max iteration ))(6)
where: x = 0 , 1 , 2 , … x=0,1,2, \ldots x=0,1,2,, Max iteration  _{\text {iteration }} iteration 
其中引入 f c f_c fc是为了控制采用变量 A A A的频率,使其从 f c f_c fc线性递减至0。 f c f_c fc可以设置为2。

  • 朝最优的邻居方向移动:在邻居避免碰撞之后,搜索代理朝着最优邻居的方向移动,如图3所示:
    M ⃗ S = B × ( P b s → ( x ) − P ⃗ S ( x ) ) (7) \vec{M}_{S}=B \times\left(\overrightarrow{P_{b s}}(x)-\vec{P}_{S}(x)\right)\tag{7} M S=B×(Pbs (x)P S(x))(7)

其中 M ⃗ S \vec{M}_{S} M S表示搜索代理 P ⃗ S \vec{P}_{S} P S与最优搜索代理 P b s → \overrightarrow{P_{b s}} Pbs 的相对位置。 B B B的行为是随机的,这是为了在探索和开发之间取得适当的平衡, B B B的计算公式为:
B = 2 × A 2 × r d (8) B=2 \times A^{2} \times r d\tag{8} B=2×A2×rd(8)
其中 r d rd rd是[0,1]范围内的随机数。

  • 靠近最优搜索代理:最后,搜索代理可以根据最优搜索代理更新自己的位置,如图4所示。
    D s ⃗ = ∣ C s ⃗ + M s ⃗ ∣ (9) \vec {D_s}=|\vec {C_s}+\vec {M_s}|\tag{9} Ds =Cs +Ms (9)
    其中 D s ⃗ \vec {D_s} Ds 表示搜索代理与最优搜索代理之间的距离。

攻击(利用)

海鸥在迁徙过程中可以不断改变攻击角度和速度,并利用翅膀和重量来保持高度。当攻击猎物时,会在空中形成螺旋运动,如图5所示。


x , y , z x,y,z x,y,z平面内的行为可以描述为:
x ′ = r × c o s ( k ) (10) x^\prime=r\times cos(k)\tag{10} x=r×cos(k)(10)

y ′ = r × s i n ( k ) (11) y^\prime=r\times sin(k)\tag{11} y=r×sin(k)(11)

z ′ = r × k (12) z^\prime=r\times k\tag{12} z=r×k(12)

r = u × e k v (13) r=u\times e^{kv}\tag{13} r=u×ekv(13)

其中, r r r为螺旋每一圈的半径, k k k [ 0 ≤ k ≤ 2 π ] [0\le k \le 2\pi] [0k2π], u u u v v v是定义螺旋形状的常量, e e e是自然对数的底。搜索代理更新后的位置计算如下:
P ⃗ s ( x ) = ( D s ⃗ × x ′ × y ′ × z ′ ) + P ⃗ b s ( x ) (14) \vec{P}_s(x)=(\vec{D_s}\times x^\prime \times y^\prime \times z^\prime)+\vec{P}_{bs}(x)\tag{14} P s(x)=(Ds ×x×y×z)+P bs(x)(14)

其中 P ⃗ s ( x ) \vec{P}_s(x) P s(x)保存了最优解并更新其他搜索代理的位置。

提出的SOA首先随机初始化种群,搜索代理在迭代过程中更新其相对于最优搜索代理的位置,完整算法见Algorithm 1。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

松间沙路hba

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

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

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

打赏作者

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

抵扣说明:

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

余额充值