1.背景
2023年,Jia等人受到自然界小龙虾社会行为启发,提出了小龙虾优化算法(Crayfsh Optimization Algorithm, COA)。
2.算法原理
2.1算法思想
COA基于小龙虾社会行为,主要包括觅食行为、避暑行为和竞争行为。觅食行为和竞争行为是COA的开发阶段,避暑行为是COA的探索阶段。(PS:真香🤣
2.2算法过程
温度和摄入量
温度变化会直接影响小龙虾的行为,当温度超过30摄氏度时,它们更喜欢寻找凉爽的地方。在适宜的温度下(15摄氏度到30摄氏度),小龙虾会增加觅食活动,而最佳温度是25摄氏度。因此,小龙虾的摄取量可近似为正态分布:
p
=
C
1
×
(
1
2
×
π
×
σ
)
×
exp
(
−
(
t
e
m
p
−
μ
)
2
2
σ
2
)
)
(1)
p=C_1\times\left(\frac1{\sqrt{2\times\pi}\times\sigma)}\times\exp\left(-\frac{(temp-\mu)^2}{2\sigma^2}\right)\right)\tag{1}
p=C1×(2×π×σ)1×exp(−2σ2(temp−μ)2))(1)
其中,temp为小龙虾当前温度:
t
e
m
p
=
r
a
n
d
×
15
+
20
(2)
temp=rand\times15+20\tag{2}
temp=rand×15+20(2)
避暑行为(探索阶段)
当温度>30时,温度过高,此时小龙虾就会选择加入洞穴过暑假:
X
s
h
a
d
e
=
(
X
G
+
X
L
)
/
2
(3)
X_{shade}=(X_G+X_L)/2\tag{3}
Xshade=(XG+XL)/2(3)
其中,XG表示迭个体最优位置,XL表示当前种群的最优位置。
当rand < 0.5时,表示没有其他小龙虾竞争洞穴,小龙虾将直接进入洞穴避暑:
X
i
,
j
t
+
1
=
X
i
,
j
t
+
C
2
×
r
a
n
d
×
(
X
s
h
a
d
e
−
X
i
,
j
t
)
(4)
X_{i,j}^{t+1}=X_{i,j}^t+C_2\times rand\times\left(X_{shade}-X_{i,j}^t\right)\tag{4}
Xi,jt+1=Xi,jt+C2×rand×(Xshade−Xi,jt)(4)
PS:综合式(3)来看,还是魔改PSO更新方式🤣
C2为递减递减因子,平衡探索与开发:
C
2
=
2
−
(
t
/
T
)
(5)
C_{2}=2 - (t/T)\tag{5}
C2=2−(t/T)(5)
在避暑阶段,小龙虾的目标是靠近洞穴,这代表了最优解。它们会朝着洞穴靠近,使得个体更接近最优解,增强了COA的开发能力,从而使算法收敛更快。
竞争行为(开发阶段)
温度> 30,rand≥0.5时,表明其他小龙虾也对洞穴感兴趣:
X
i
,
j
t
+
1
=
X
i
,
j
t
−
X
z
,
j
t
+
X
s
h
a
d
e
(6)
X_{i,j}^{t+1}=X_{i,j}^t-X_{z,j}^t+X_{shade}\tag{6}
Xi,jt+1=Xi,jt−Xz,jt+Xshade(6)
z为小龙虾随机个体:
z
=
r
o
u
n
d
(
r
a
n
d
×
(
N
−
1
)
)
+
1
(7)
z=round(rand\times(N-1))+1\tag{7}
z=round(rand×(N−1))+1(7)
在竞争阶段,小龙虾相互竞争,小龙虾Xi根据另一只小龙虾的位置Xz调整自己的位置,扩大了COA的搜索范围,增强了算法的探索能力。
觅食行为(开发阶段)
温度≤30℃时,适合小龙虾摄食:
X
f
o
o
d
=
X
G
(8)
X_{food}=X_G\tag{8}
Xfood=XG(8)
其中,Q表述为:
Q
=
C
3
×
r
a
n
d
×
(
f
i
t
n
e
s
s
i
/
f
i
t
n
e
s
s
f
o
o
d
)
(9)
Q=C_3\times rand\times(fitness_i/fitness_{food})\tag{9}
Q=C3×rand×(fitnessi/fitnessfood)(9)
小龙虾对食物大小的判断来自于最大食物的大小。当Q > (C3+1)/ 2时,表示食物太大:
X
f
o
o
d
=
exp
(
−
1
Q
)
×
X
f
o
o
d
(10)
X_{food}=\exp\left(-\frac1Q\right)\times X_{food}\tag{10}
Xfood=exp(−Q1)×Xfood(10)
当食物被撕碎变小后,第二和第三只爪子会交替地捡起食物放进嘴里。这里采用正弦函数和余弦函数的组合来模拟交替过程:
X
i
,
j
t
+
1
=
X
i
,
j
t
+
X
f
o
o
d
×
p
×
(
cos
(
2
×
π
×
r
a
n
d
)
−
sin
(
2
×
π
×
r
a
n
d
)
)
(11)
X_{i,j}^{t+1}=X_{i,j}^t+X_{food}\times p\times(\cos{(2\times\pi\times rand)}-\sin{(2\times\pi\times rand)})\tag{11}
Xi,jt+1=Xi,jt+Xfood×p×(cos(2×π×rand)−sin(2×π×rand))(11)
当Q≤(C3 +1)/ 2时,小龙虾直接进食:
X
i
,
j
t
+
1
=
(
X
i
,
j
t
−
X
f
o
o
d
)
×
p
+
p
×
r
a
n
d
×
X
i
,
j
t
(12)
X_{i,j}^{t+1}=\left(X_{i,j}^t-X_{food}\right)\times p+p\times rand\times X_{i,j}^t\tag{12}
Xi,jt+1=(Xi,jt−Xfood)×p+p×rand×Xi,jt(12)
伪代码
3.结果展示
使用测试框架,测试COA性能 一键run.m
CEC2005-F8:
Friedamn检验排名:
CEC2005-F14:
Friedamn检验排名:
PS:COA中规中矩🤣
4.参考文献
[1] Jia H, Rao H, Wen C, et al. Crayfish optimization algorithm[J]. Artificial Intelligence Review, 2023, 56(Suppl 2): 1919-1979.