目录
- 1.背景
- 2.算法原理
- 2.1算法思想
- 2.2算法过程
- 3.结果展示
- 4.参考文献
- 5.代码获取
1.背景
2024年,W Zhao受到自然界中电鳗群体觅食行为启发,提出了电鳗觅食优化算法(Electric Eel Foraging Optimization, EEFO)。
2.算法原理
2.1算法思想
EEFO灵感来自于自然界中电鳗群体觅食行为,其对交互行为、休息行为、狩猎行为和迁移行为四种关键觅食行为进行数学建模。
2.2算法过程
交互行为
在EEFO中,每条电鳗都是一个候选解,每一步得到的最佳候选解被认为是目标猎物。这种相互作用表明,每条鳗鱼都利用鳗鱼的位置信息与其他个体进行合作互动。电鳗可以通过使用种群中所有个体的位置信息,与从种群中随机选择的任何鳗鱼进行互动。
{ { v i ( t + 1 ) = x j ( t ) + C × ( x ˉ ( t ) − x i ( t ) ) p 1 > 0.5 v i ( t + 1 ) = x j ( t ) + C × ( x r ( t ) − x i ( t ) ) p 1 ⩽ 0.5 f i t ( x j ( t ) ) < f i t ( x i ( t ) ) { v i ( t + 1 ) = x i ( t ) + C × ( x ˉ ( t ) − x j ( t ) ) p 2 > 0.5 v i ( t + 1 ) = x i ( t ) + C × ( x r ( t ) − x j ( t ) ) p 2 ⩽ 0.5 f i t ( x j ( t ) ) ⩾ f i t ( x i ( t ) ) (1) \begin{cases} \begin{cases} v_i(t + 1) = x_j(t)+C\times(\bar{x}(t)-x_i(t)) p_1 > 0.5\\ v_i(t + 1) = x_j(t)+C\times(x_r(t)-x_i(t)) p_1 \leqslant 0.5\end{cases} fit\big(x_j(t)\big) < fit(x_i(t)\big)\\ \\ \begin{cases} v_i(t + 1) = x_i(t)+C\times(\bar{x}(t)-x_j(t)) p_2 > 0.5\\ v_i(t + 1) = x_i(t)+C\times(x_r(t)-x_j(t)) p_2 \leqslant 0.5\end{cases} fit\big(x_j(t)\big) \geqslant fit(x_i(t))\end{cases}\tag{1} ⎩ ⎨ ⎧{vi(t+1)=xj(t)+C×(xˉ(t)−xi(t))p1>0.5vi(t+1)=xj(t)+C×(xr(t)−xi(t))p1⩽0.5fit(xj(t))<fit(xi(t)){vi(t+1)=xi(t)+C×(xˉ(t)−xj(t))p2>0.5vi(t+1)=xi(t)+C×(xr(t)−xj(t))p2⩽0.5fit(xj(t))⩾fit(xi(t))(1)
其中,平均位置和随机个体表述为:
x ‾ ( t ) = 1 n ∑ i = 1 n x i ( t ) x r = L o w + r × ( U p − L o w ) (2) \overline{x}(t)=\frac1n\sum_{i=1}^nx_i(t)\\x_r=Low+r\times(Up-Low)\tag{2} x(t)=n1i=1∑nxi(t)xr=Low+r×(Up−Low)(2)
休息行为
为了提高搜索效率,将鳗鱼位置向量的任意一维投影到搜索空间的主对角线上,在该区域建立一个休息区域。为了确定鳗鱼的休息区域,搜索空间和鳗鱼的位置都归一化为0-1的范围。鳗鱼位置的一个随机选择的维度被投射到归一化搜索空间的主对角线上。投影位置被认为是鳗鱼休息区域的中心。
{ X ∣ X − Z ( t ) ∣ ⩽ α 0 × ∣ Z ( t ) − x p r e y ( t ) ∣ } α 0 = 2 ⋅ ( e − e t T ) (3) \begin{aligned}&\left\{X|X-Z(t)|\leqslant\alpha_{0}\times\left|Z(t)-x_{prey}(t)\right|\right\}\\&\alpha_{0}=2\cdot\left(e-e^{\frac{t}{T}}\right)\end{aligned}\tag{3} {X∣X−Z(t)∣⩽α0×∣Z(t)−xprey(t)∣}α0=2⋅(e−eTt)(3)
Z ( t ) = L o w + z ( t ) × ( U p − L o w ) z { t = x r a n d { n r a n d { d { t − L o w r a n d { d U p r a n d { d − L o w r a n d { d (4) Z(t)=Low+z(t)\times(Up-Low)\\z\{t=\frac{x_{rand\{n}^{rand\{d}\{t-Low^{rand\{d}}{Up^{rand\{d}-Low^{rand\{d}}\tag{4} Z(t)=Low+z(t)×(Up−Low)z{t=Uprand{d−Lowrand{dxrand{nrand{d{t−Lowrand{d(4)
在进行休息行为之前,在其休息区域内获得鳗鱼的休息位置:
R i ( t + 1 ) = Z ( t ) + α × ∣ Z ( t ) − x p r e y ( t ) ∣ α = α 0 × sin ( 2 π r 2 ) (5) \begin{aligned}&R_{i}(t+1)=Z(t)+\alpha\times\left|Z(t)-x_{prey}(t)\right|\\&\alpha=\alpha_{0}\times\sin(2\pi r_{2})\end{aligned}\tag{5} Ri(t+1)=Z(t)+α×∣Z(t)−xprey(t)∣α=α0×sin(2πr2)(5)
其中α为静息区的尺度,r2为(0,1)内的随机数。尺度α使静息区的范围随着迭代的进行而减小,休息行为:
ν i ( t + 1 ) = R i ( t + 1 ) + n 2 × ( R i ( t + 1 ) r o u n d ( r a n d ) × x i ( t ) ) n 2 ∼ N ( 0 , 1 ) (6) \begin{aligned}&\nu_{i}(t+1)= R_{i}(t+1)+n_{2}\times(R_{i}(t+1)round(rand)\times x_{i}(t))\\&n_{2}\sim N(0,1)\end{aligned}\tag{6} νi(t+1)=Ri(t+1)+n2×(Ri(t+1)round(rand)×xi(t))n2∼N(0,1)(6)
狩猎行为
当鳗鱼发现猎物时,它们通过低电器官放电不断地与同伴交流和合作:
{ X ∣ X − x p r e y ( t ) ∣ ⩽ β 0 × ∣ x ‾ ( t ) − x p e r y ( t ) ∣ } β 0 = 2 × ( e − e t T ) (7) \begin{Bmatrix}X\big|X-x_{prey}(t)\big|\leqslant\beta_0\times\big|\overline{x}(t)-x_{pery}(t)\big|\end{Bmatrix}\\\beta_0=2\times\begin{pmatrix}e-e^{\frac{t}{T}}\end{pmatrix}\tag{7} {X X−xprey(t) ⩽β0× x(t)−xpery(t) }β0=2×(e−eTt)(7)
其中,β0为狩猎区域的初始尺度。猎物位置为:
H p r e y ( t + 1 ) = x p r e y ( t ) + β × ∣ x ‾ ( t ) − x p e r y ( t ) ∣ β = β 0 × sin ( 2 π r 3 ) (8) \begin{aligned}&H_{prey}(t+1) = x_{prey}(t)+\beta\times\left|\overline{x}(t)-x_{pery}(t)\right|\\&\beta=\beta_{0}\times\sin(2\pi r_{3})\end{aligned}\tag{8} Hprey(t+1)=xprey(t)+β×∣x(t)−xpery(t)∣β=β0×sin(2πr3)(8)
其中,β为狩猎区域的尺度,r3为(0,1)范围内的随机数。尺度β使狩猎区域的范围随着时间的推移而变小。鳗鱼在狩猎过程中所表现出的卷曲行为:
v i ( t + 1 ) = H p r e y ( t + 1 ) + η × ( H p r e y ( t + 1 ) − r o u n d ( r a n d ) × x i ( t ) ) (9) \begin{matrix}v_i(t+1)&=&H_{prey}(t+1)+\eta\times(H_{prey}(t+1)-round(rand)\times x_i(t))\end{matrix}\tag{9} vi(t+1)=Hprey(t+1)+η×(Hprey(t+1)−round(rand)×xi(t))(9)
η表示卷曲因子:
η = e r 4 ( 1 − t ) T × cos ( 2 π r 4 ) (10) \eta=e^{\frac{r_4(1-t)}{T}}\times\cos(2\pi r_4)\tag{10} η=eTr4(1−t)×cos(2πr4)(10)
迁移行为
当鳗鱼发现猎物时,它们往往会从休息区迁移到捕猎区,迁徙行为:
ν i ( t + 1 ) = − r 5 × R i ( t + 1 ) + r 6 × H r ( t + 1 ) − L × ( H r ( t + 1 ) − x i ( t ) ) H r ( t + 1 ) = x p r e y ( t ) + β × ∣ x ˉ ( t ) − x p r e y ( t ) ∣ (11) \begin{aligned}&\nu_{i}(t + 1) = - r_{5}\times R_{i}(t+1) + r_{6}\times H_{r}(t+1)-L\times(H_{r}(t+1) - x_{i}(t))\\&H_{r}(t+1)=x_{prey}(t)+\beta\times\left|\bar{x}(t)-x_{prey}(t)\right|\end{aligned}\tag{11} νi(t+1)=−r5×Ri(t+1)+r6×Hr(t+1)−L×(Hr(t+1)−xi(t))Hr(t+1)=xprey(t)+β×∣xˉ(t)−xprey(t)∣(11)
鳗鱼可以通过低放电感知猎物的位置,因此它可以随时调整自己的位置。如果鳗鱼在觅食过程中感觉到猎物的靠近,它们就会移动到候选位置;否则,鳗鱼将停留在当前位置。
x i ( t + 1 ) = { x i ( t ) f i t ( x i ( t ) ) ⩽ f i t ( ν i ( t + 1 ) ) v i ( t + 1 ) f i t ( x i ( t ) ) > f i t ( ν i ( t + 1 ) ) (12) x_i(t+1)=\left\{\begin{array}{ccc}x_i(t)&&fit(x_i(t) )\leqslant fit(\nu_i(t+1) )\\v_i(\text{t} + 1)&&fit(x_i(t) )>fit(\nu_i(t+1) )\end{array}\right.\tag{12} xi(t+1)={xi(t)vi(t+1)fit(xi(t))⩽fit(νi(t+1))fit(xi(t))>fit(νi(t+1))(12)
流程图
伪代码
3.结果展示
4.参考文献
[1] Zhao W, Wang L, Zhang Z, et al. Electric eel foraging optimization: A new bio-inspired optimizer for engineering applications[J]. Expert Systems with Applications, 2024, 238: 122200.