1.背景
2024年,L Zareian受到自然行为启发,提出了鳑鮍(páng pí)鱼优化算法(Bitterling Fish Optimization, BFO)。
2.算法原理
2.1算法思想
鳑鮍鱼是自然界中为了生存展示智能行为的典范,其采用牡蛎产卵策略作为其保姆。BFO模拟了鳑鮍鱼交配行为,雌性鳑鮍鱼寻找比其他鱼更强的雄性鱼来找到合适的配对。
2.2算法过程
搜索并捕获牡蛎
鳑鮍鱼可以搜索问题空间并找到合适的配对牡蛎,它会锁定一只牡蛎并朝向它移动:
F
i
t
+
1
=
{
J
.
F
i
t
+
(
F
+
−
J
.
F
i
t
)
.
δ
r
≤
P
J
.
F
i
t
+
(
F
∗
−
J
.
F
i
t
)
.
δ
r
>
P
(1)
\left.F_i^{t+1}=\left\{\begin{array}{l}J.F_i^t+\left(F^+-J.F_i^t\right).\delta r\leq P\\J.F_i^t+\left(F^*-J.F_i^t\right).\delta r>P\end{array}\right.\right.\tag{1}
Fit+1={J.Fit+(F+−J.Fit).δr≤PJ.Fit+(F∗−J.Fit).δr>P(1)
其中,F*是最优解,J是鱼为了逃离或接近牡蛎而移动的步数或速度:
J
(
t
)
=
(
J
(
1
)
−
J
(
1
)
.
t
M
a
x
t
)
.
U
(
t
)
(2)
J(t)=\left(J(1)-\frac{J(1).t}{Maxt}\right).U(t)\tag{2}
J(t)=(J(1)−MaxtJ(1).t).U(t)(2)
J(1)是每条鱼在初始迭代中的步长和跳跃值,随机函数U表述为:
U
(
t
+
1
)
=
cos
(
t
×
cos
−
1
(
U
(
t
)
)
)
(3)
U(t+1)=\cos(t\times\cos^{-1}(U(t)))\tag{3}
U(t+1)=cos(t×cos−1(U(t)))(3)
参数p采用类似于arctan函数:
P
=
∣
1
−
t
1
+
t
2
∣
+
r
a
n
d
t
a
(4)
P=\left|1-\frac t{\sqrt{1+t^2}}\right|+\frac{rand}{t^a}\tag{4}
P=
1−1+t2t
+tarand(4)
逃跑行为
在鳑鮍鱼逃跑行为中,鳑鮍鱼位置:
F
i
t
+
1
=
{
J
.
F
i
t
+
(
F
∗
−
J
.
M
)
.
δ
r
≤
0.5
l
+
(
u
−
l
)
.
δ
r
>
0.5
(5)
\left.F_{i}^{t+1}=\left\{\begin{array}{c}{J.F_{i}^{t}+(F^{*}-J.M).\delta r\leq0.5}\\{l+(u-l).\delta r>0.5}\end{array}\right.\right.\tag{5}
Fit+1={J.Fit+(F∗−J.M).δr≤0.5l+(u−l).δr>0.5(5)
M为鱼群质心位置:
M
=
∑
i
=
1
n
F
i
t
n
(6)
M=\frac{\sum_{i=1}^{n}F_{i}^{t}}{n}\tag{6}
M=n∑i=1nFit(6)
产卵行为
雄鱼发现牡蛎后,可以吸引雌鱼在牡蛎中产卵,雄鱼可以使卵受精,在现有的鱼周围产生新的鱼:
F
i
t
+
1
=
F
i
t
+
R
∗
r
a
n
d
(
0
,
1
)
(7)
F_i^{t+1}=F_i^t+R*rand(0,1)\tag{7}
Fit+1=Fit+R∗rand(0,1)(7)
狩猎行为
一些较弱的幼鱼可能会被牡蛎或捕食者捕食:
d
(
F
i
t
)
=
f
(
F
i
t
)
∑
i
=
1
n
f
(
F
i
t
)
(8)
d(F_i^t)=\frac{f(F_i^t)}{\sum_{i=1}^nf(F_i^t)}\tag{8}
d(Fit)=∑i=1nf(Fit)f(Fit)(8)
伪代码
3.结果展示
4.参考文献
[1] Zareian L, Rahebi J, Shayegan M J. Bitterling fish optimization (BFO) algorithm[J]. Multimedia Tools and Applications, 2024: 1-34.