获取更多资讯,赶快关注上面的公众号吧!
海鸥优化算法是印度学者Gaurav Dhiman于2018年提出的一种受生物启发的智能优化算法,该算法的主要灵感来自于自然界中海鸥的迁徙和攻击行为,这些行为经过数学建模和实现,可以在给定搜索空间中进行探索和利用。扫码关注公众号,后台回复“海鸥”或“SOA”可以获取Matlab代码。
一般来说,海鸥是群居性的,它们用自己的智慧来寻找并攻击猎物。海鸥最重要的是它们的迁徙和攻击行为。迁徙被定义为海鸥从一个地方到另一个地方的季节性迁移,以寻找最丰富食物来源,以提供足够的能量。该行为可描述为:
海鸥在迁徙过程中,会经常攻击其他候鸟,在攻击过程中,它们可以做出螺旋形的自然运动,如图1所示。
在迁移过程中,海鸥优化算法模拟了海鸥群如何向一个位置移动到另一个位置。在这个阶段,海鸥应该满足三个条件:
其中, C ⃗ s \vec{C}_{s} Cs表示与其他搜索代理不发生碰撞的搜索代理的位置, P ⃗ s \vec{P}_{s} Ps表示搜索代理的当前位置, 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。
其中 M ⃗ S \vec{M}_{S} MS表示搜索代理 P ⃗ S \vec{P}_{S} PS与最优搜索代理 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]范围内的随机数。
海鸥在迁徙过程中可以不断改变攻击角度和速度,并利用翅膀和重量来保持高度。当攻击猎物时,会在空中形成螺旋运动,如图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] [0≤k≤2π], 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} Ps(x)=(Ds×x′×y′×z′)+Pbs(x)(14)
其中 P ⃗ s ( x ) \vec{P}_s(x) Ps(x)保存了最优解并更新其他搜索代理的位置。
提出的SOA首先随机初始化种群,搜索代理在迭代过程中更新其相对于最优搜索代理的位置,完整算法见Algorithm 1。