䲟鱼优化算法(Remora Optimization Algorithm,ROA)(原文作者)

䲟鱼优化算法(Remora Optimization Algorithm,ROA)(原文作者)

䲟鱼优化算法(Remora Optimization Algorithm,ROA)(原文作者)

一、算法灵感二、算法介绍2.1 初始化阶段2.2 吸附跟随(探索阶段)2.2.1 SFO 策略2.2.2 经验积累

2.3 为吃着想(开发阶段)2.3.1 WOA 策略2.3.2 宿主边觅食

2.4 ROA的伪代码

三、实验结果3.1 F1收敛曲线3.2 F5收敛曲线3.3 F8收敛曲线

四、参考文献

一、算法灵感

䲟鱼优化算法(Remora Optimization Algorithm, ROA)是2021年提出的一种元启发式优化算法,其灵感来自于海洋中䲟鱼的寄生行为。作为海洋中最聪明的鱼,为了免受敌人的入侵,同时也为了节省体力,䲟鱼会寄生在旗鱼、鲸鱼或其他生物上觅食。算法以䲟鱼寄生在旗鱼(Swordfish Optimization Algorithm, SFO)和鲸鱼(Whale Optimization Algorithm, WOA)身上为例。因此,ROA借鉴了SFO和WOA的部分更新公式,进行全局和局部的位置更新。此外,为了确定是否需要更换宿主,䲟鱼会在宿主周围进行小范围移动,即经验积累,若不需要更换宿主,则进行宿主边觅食。图1展示了䲟鱼捕食的详细过程。

图1 䲟鱼捕食过程

二、算法介绍

2.1 初始化阶段

在ROA中,初始化䲟鱼种群位置的计算公式如下:

X

i

=

l

b

+

r

a

n

d

×

(

u

b

l

b

)

(1)

{X_i} = lb + rand \times (ub - lb) \tag{1}

Xi​=lb+rand×(ub−lb)(1)式中,

X

i

{X_i}

Xi​ 为个体

i

{i}

i 的位置,

l

b

{lb}

lb 和

u

b

{ub}

ub 是搜索空间的下界和上界,

r

a

n

d

{rand}

rand 为

0

0

0 到

1

1

1 之间的随机数。

2.2 吸附跟随(探索阶段)

2.2.1 SFO 策略

当䲟鱼吸附在旗鱼身上时,䲟鱼会跟随旗鱼移动。基于SFO算法的精英策略,对SFO算法的公式进行了改进,得到了以下公式:

X

i

t

+

1

=

X

B

e

s

t

t

(

r

a

n

d

×

(

X

B

e

s

t

t

+

X

r

a

n

d

t

2

)

X

r

a

n

d

t

)

(2)

{X_i}^{t + 1} = {X^t_{Best}} - {\rm{(rand}} \times {\rm{(}}{{{X^t_{Best}} + {X^t_{rand}}} \over 2}{\rm{)}} - {X^t_{rand}}{\rm{)}} \tag{2}

Xi​t+1=XBestt​−(rand×(2XBestt​+Xrandt​​)−Xrandt​)(2)其中,

t

{t}

t 为当前迭代次数,

X

B

e

s

t

t

{X^t_{Best}}

XBestt​ 为当前最优䲟鱼个体,

X

r

a

n

d

t

{X^t_{rand}}

Xrandt​ 为当前随机䲟鱼个体。

2.2.2 经验积累

当䲟鱼吸附宿主身上时,会根据上一代䲟鱼的位置与当前宿主的位置,在宿主周围进行小范围移动,判断是否需要更换宿主,该过程类似经验上的积累,其数学计算公式如下:

X

a

t

t

=

X

i

t

+

(

X

i

t

X

p

r

e

)

×

r

a

n

d

n

(3)

{X_{att}} = {X_i}^t + {\rm{(}}{{\rm{X}}_i}^t - {X_{pre}}{\rm{)}} \times {randn} \tag{3}

Xatt​=Xi​t+(Xi​t−Xpre​)×randn(3)其中,

X

a

t

t

X_{att}

Xatt​ 是䲟鱼的一次试探性移动,

X

p

r

e

{X_{pre}}

Xpre​ 表示上一代䲟鱼的位置,可以看做是一种经验,

r

a

n

d

n

randn

randn 为

0

0

0 到

1

1

1 之间正态分布的随机数。 经过小范围移动之后,䲟鱼根会公式(4)判断是否需要切换宿主,切换宿主的公式如公式(5)所示:

f

(

X

i

t

)

>

f

(

X

a

t

t

)

(4)

f(X_i^t) > f({X_{att}}) \tag{4}

f(Xit​)>f(Xatt​)(4)

H

(

i

)

=

r

o

u

n

d

(

r

a

n

d

)

(5)

H(i) = {\rm{round}}({rand}) \tag{5}

H(i)=round(rand)(5)其中,

H

(

i

)

H(i)

H(i) 决定䲟鱼寄生的宿主,初始值为0或1,若

H

(

i

)

H(i)

H(i) 等于0,则吸附鲸鱼,若

H

(

i

)

H(i)

H(i) 等于1,则吸附旗鱼,round为四舍五入的函数,

f

(

X

i

t

)

f(X_i^t)

f(Xit​) 和

f

(

X

a

t

t

)

f({X_{att}})

f(Xatt​) 分别为

X

i

t

X_i^t

Xit​ 与

X

a

t

t

X_{att}

Xatt​ 的适应度值。

2.3 为吃着想(开发阶段)

2.3.1 WOA 策略

当宿主为鲸鱼时,䲟鱼会跟随鲸鱼同步移动,其计算公式如下:

X

i

t

+

1

=

D

×

e

k

×

cos

(

2

π

a

)

+

X

i

t

(6)

{X_i}^{t + 1} = D \times {e^k} \times \cos {\rm{(}}2\pi a{\rm{)}} + {X_i}^t \tag{6}

Xi​t+1=D×ek×cos(2πa)+Xi​t(6)

D

=

X

B

e

s

t

t

X

i

t

(7)

D = \left| {{X_{Best}}^t - {X_i}^t} \right| \tag{7}

D=

​XBest​t−Xi​t

​(7)

k

=

r

a

n

d

×

(

a

1

)

+

1

(8)

k = {rand} \times {\rm{(}}a - 1{\rm{)}} + 1 \tag{8}

k=rand×(a−1)+1(8)

a

=

(

1

+

t

T

)

(9)

a = - {\rm{(}}1 + {t \over T}{\rm{)}} \tag{9}

a=−(1+Tt​)(9)其中,

D

D

D 表示更新前最优位置与当前位置之间的距离,

k

k

k 为

1

-1

−1 到

1

1

1 之间的随机数,

a

a

a 在迭代中会在

[

2

,

1

]

[-2,1]

[−2,1] 之间线性递减,

T

T

T 为最大迭代次数。

2.3.2 宿主边觅食

宿主边觅食阶段是开发阶段的进一步细分,搜索范围减小,䲟鱼会在宿主周围寻找食物,不再考虑吸附,其数学计算公式如下:

X

i

t

+

1

=

X

i

t

+

A

(10)

{X_i}^{t + 1} = {X_i}^t + A \tag{10}

Xi​t+1=Xi​t+A(10)

A

=

B

×

(

X

i

t

C

×

X

B

e

s

t

)

(11)

A = B \times {\rm{(}}X_i^t - C \times {X_{Best}}{\rm{)}} \tag{11}

A=B×(Xit​−C×XBest​)(11)

B

=

2

×

V

×

r

a

n

d

V

(12)

B = 2 \times V \times {\rm{rand}} - V \tag{12}

B=2×V×rand−V(12)

V

=

2

(

1

t

T

)

(13)

V = 2*{\rm{(}}1 - {t \over T}{\rm{)}} \tag{13}

V=2∗(1−Tt​)(13)其中,

A

A

A 为䲟鱼移动的距离,其与䲟鱼和宿主体积有关,䲟鱼因子

C

C

C 用于限制䲟鱼的位置,其值为

0.1

0.1

0.1,

B

B

B 用于模拟宿主的体积,

V

V

V 用于模拟䲟鱼的体积。

2.4 ROA的伪代码

初始化䲟鱼数量

N

N

N 和最大迭代次数

T

T

T 等初始化种群:

X

i

(

i

=

1

,

2

,

.

.

.

,

N

)

X_i(i=1,2,...,N)

Xi​(i=1,2,...,N)While

t

<

T

t

t

X

b

e

s

t

X_{best}

Xbest​ For

i

=

1

i=1

i=1 to

N

N

N do If

H

(

i

)

H(i)

H(i)==0 then 使用公式 (6) 更新被鲸鱼带到的位置 Else If

H

(

i

)

H(i)

H(i)==1 then 使用公式 (2) 更新被旗鱼带到的位置 End If 通过公式(3)进行经验积累,并判断是否更换宿主 If

f

(

X

i

t

)

>

f

(

X

a

t

t

)

f(X_i^t) > f({X_{att}})

f(Xit​)>f(Xatt​) then 使用公式 (5) 切换宿主 Else 使用公式 (10) 进行宿主边觅食 End If End For

t

=

t

+

1

t=t+1

t=t+1End While返回吃的最饱的鱼(最优解)

X

b

e

s

t

X_{best}

Xbest​

三、实验结果

ROA在23个经典测试函数(设置维度

d

i

m

=

30

dim=30

dim=30)的F1、F5、F8中的收敛曲线,测试函数公式如下:

函数公式理论值F1

F

1

(

x

)

=

i

=

1

n

x

i

2

{F_1}(x) = \sum\nolimits_{i = 1}^n {x_i^2}

F1​(x)=∑i=1n​xi2​

0.00

0.00

0.00F5

F

5

(

x

)

=

i

=

1

n

1

[

100

(

x

i

+

1

x

i

2

)

2

+

(

x

i

1

)

2

]

{F_5}(x) = \sum\nolimits_{i = 1}^{n - 1} {[100{{({x_{i + 1}} - x_i^2)}^2} + {{({x_i} - 1)}^2}]}

F5​(x)=∑i=1n−1​[100(xi+1​−xi2​)2+(xi​−1)2]

0.00

0.00

0.00F8

F

8

(

x

)

=

i

=

1

n

x

i

sin

(

x

i

)

{F_8}(x) = \sum\nolimits_{i = 1}^n { - {x_i}\sin (\sqrt {|{x_i}|} )}

F8​(x)=∑i=1n​−xi​sin(∣xi​∣

​)

418.9829

×

d

i

m

-418.9829×dim

−418.9829×dim

3.1 F1收敛曲线

3.2 F5收敛曲线

3.3 F8收敛曲线

四、参考文献

[1] 贾鹤鸣, 智能优化算法及 MATLAB 实现[M], 清华大学出版社, 2024. [2] Heming Jia, Xiaoxu Peng, Chunbo Lang. Remora optimization algorithm[J]. Expert Systems With Applications. 2021, 185, 115665.

相关推荐

删除不使用的语言和字体
365提现多久能到账

删除不使用的语言和字体

🕒 09-05 👁️ 3431
2024 年最流行的 10 个前端框架
365提现多久能到账

2024 年最流行的 10 个前端框架

🕒 06-28 👁️ 4011
数据包模组检索 - MC百科
365bet登录

数据包模组检索 - MC百科

🕒 08-12 👁️ 1228