智能优化算法:真菌优化算法
FGO 模拟了真菌的菌丝生长、分枝及孢子萌发行为:菌丝生长可精确搜索空间至营养丰富区域,为 FGO 提供多搜索模式,既避免陷入局部最优,又加快收敛速度;菌丝分枝通过新菌丝探索周边区域,为优化过程提供探索性方案;孢子萌发起始在一个随机位置,随着优化过程的进行,这个随机位置会转变为介于目前最佳解决方案和随机位置之间的一个位置,促进探索的同时防止过早收敛。
1.算法原理
1.1 真菌种群初始化
真菌种群的初始位置为:
S
i
j
(
t
)
=
S
j
L
+
r
i
j
⊙
(
S
j
U
−
S
j
L
)
(19)
S_{ij}^{(t)} = S_j^L + r_{ij} \odot (S_j^U - S_j^L) \tag{19}
Sij(t)=SjL+rij⊙(SjU−SjL)(19)
式中:
- i = 1 , 2 , … , N i=1,2,\dots,N i=1,2,…,N; j = 1 , 2 , … , d j=1,2,\dots,d j=1,2,…,d;
- S i j ( t ) S_{ij}^{(t)} Sij(t) 为 t t t 次迭代后种群中第 i i i 个菌丝在第 j j j 维变量上的位置值;
- S j U S_j^U SjU、 S j L S_j^L SjL 为第 j j j 维变量的上界与下界;
- r i j ∼ U ( 0 , 1 ) r_{ij} \sim U(0,1) rij∼U(0,1) 为均匀随机数;
- N N N 为种群规模; d d d 为问题维度。
1.2真菌生长阶段
通过模拟大量菌丝的生长速度和方向,以适当地探索搜索空间。这一行为的生长方向和速率如下:
{
S
i
k
+
1
=
S
i
k
+
E
D
E
=
e
F
(20)
\begin{cases} S_i^{k+1} = S_i^k + E D \\ E = e^F \end{cases} \tag{20}
{Sik+1=Sik+EDE=eF(20)
{
F
=
f
i
∑
k
=
1
N
f
k
r
1
μ
μ
=
(
1
−
t
t
max
)
(
1
−
t
t
max
)
D
=
S
α
k
−
S
c
k
(21)
\begin{cases} F = \dfrac{f_i}{\sum_{k=1}^N f_k} r_1 \mu \\ \mu = \left(1 - \dfrac{t}{t_{\max}}\right)^{\left(1-\frac{t}{t_{\max}}\right)} \\ D = S_\alpha^k - S_c^k \end{cases} \tag{21}
⎩
⎨
⎧F=∑k=1Nfkfir1μμ=(1−tmaxt)(1−tmaxt)D=Sαk−Sck(21)
式中:
- E E E 为增长速率; f i f_i fi 为第 i i i 个菌丝的适应度值;
- t max t_{\max} tmax 为最大迭代次数;
- D D D 为生长方向,由当前子种群中随机选择的 2 个解的差值来确定。如果差值小于零,则当前菌丝将改变方向;否则,将继续沿当前方向生长。
真菌生长通过化学趋向性感知营养梯度场从而探索开发营养丰富区域:
S
i
k
+
1
=
{
S
i
k
+
η
i
D
i
e
2
+
E
c
⋅
[
r
11
>
r
13
]
,
r
14
<
r
15
S
i
k
+
η
i
D
i
e
1
+
E
c
⋅
[
r
12
>
E
p
]
,
otherwise
(22)
S_i^{k+1} = \begin{cases} S_i^k + \eta_i D_i^{e2} + E_c \cdot \left[r_{11} > r_{13}\right], r_{14} < r_{15} \\ S_i^k + \eta_i D_i^{e1} + E_c \cdot \left[r_{12} > E_p\right], \text{otherwise} \end{cases} \tag{22}
Sik+1={Sik+ηiDie2+Ec⋅[r11>r13],r14<r15Sik+ηiDie1+Ec⋅[r12>Ep],otherwise(22)
式中:
i
=
1
,
2
,
…
,
N
i=1,2,\dots,N
i=1,2,…,N。
式(21)中涉及符号的具体含义如下:
{
D
i
e
1
=
r
4
⋅
(
S
a
−
S
i
)
+
r
5
⊙
(
β
S
∗
−
S
i
)
⋅
[
r
6
>
R
]
D
i
,
j
e
2
=
r
j
⋅
(
S
i
,
j
−
S
j
∗
)
⋅
[
R
j
>
r
3
]
,
j
=
1
,
2
,
…
d
E
c
=
(
r
9
−
0.5
)
r
10
⊙
(
S
a
−
S
b
)
η
i
=
{
r
7
,
t
<
t
max
2
f
i
,
otherwise
归一化处理:
η
i
=
η
i
∑
k
=
1
N
η
k
+
2
r
8
(23)
\begin{cases} D_i^{e1} = r_4 \cdot (S_a - S_i) + r_5 \odot (\beta S^* - S_i) \cdot [r_6 > R] \\ D_{i,j}^{e2} = r_j \cdot (S_{i,j} - S_j^*) \cdot [R_j > r_3], j=1,2,\dots d \\ E_c = (r_9 - 0.5) r_{10} \odot (S_a - S_b) \\ \eta_i = \begin{cases} r_7, t < \dfrac{t_{\max}}{2} \\ f_i, \text{otherwise} \end{cases} \\ \text{归一化处理: } \eta_i = \dfrac{\eta_i}{\sum_{k=1}^N \eta_k} + 2 r_8 \end{cases} \tag{23}
⎩
⎨
⎧Die1=r4⋅(Sa−Si)+r5⊙(βS∗−Si)⋅[r6>R]Di,je2=rj⋅(Si,j−Sj∗)⋅[Rj>r3],j=1,2,…dEc=(r9−0.5)r10⊙(Sa−Sb)ηi=⎩
⎨
⎧r7,t<2tmaxfi,otherwise归一化处理: ηi=∑k=1Nηkηi+2r8(23)
式中:
- r j r_j rj 为 0 ∼ 1 0\sim1 0∼1 的均匀随机数; E p E_p Ep 为预先定义的概率;
- R R R 为 0 0 0 和 1 1 1 之间的预定义参数;
- η i \eta_i ηi 为营养分配机制的开发算子; S i ∗ S^*_i Si∗ 为最优解;
- β ∈ ( − 1 , 1 ) \beta \in (-1,1) β∈(−1,1),控制方向, β = 1 \beta=1 β=1 趋向最优, β = − 1 \beta=-1 β=−1 反向扰动;
- D i e 1 D_i^{e1} Die1 和 D i , j e 2 D_{i,j}^{e2} Di,je2 分别为营养物质丰富区的趋向和规避行为。
综上所述,每个菌丝的新生长是根据以下公式生成的:
S
i
k
+
1
=
{
(
15
)
,
p
i
<
E
r
(
17
)
else
,
i
=
1
,
2
,
…
,
N
(24)
S_i^{k+1} = \begin{cases} (15), p_i < E_r \\ (17) \text{else}, \end{cases} \quad i=1,2,\dots,N \tag{24}
Sik+1={(15),pi<Er(17)else,i=1,2,…,N(24)
{
p
i
=
f
i
−
min
(
f
)
max
(
f
)
−
min
(
f
)
+
ε
E
r
=
φ
+
(
1
−
φ
)
⋅
(
1
−
t
t
max
)
(25)
\begin{cases} p_i = \dfrac{f_i - \min(f)}{\max(f) - \min(f) + \varepsilon} \\ E_r = \varphi + (1 - \varphi) \cdot \left(1 - \dfrac{t}{t_{\max}}\right) \end{cases} \tag{25}
⎩
⎨
⎧pi=max(f)−min(f)+εfi−min(f)Er=φ+(1−φ)⋅(1−tmaxt)(25)
式中:
- ε \varepsilon ε 为极小小数; φ \varphi φ 为预定概率;
- 所有菌丝在优化过程开始时都会探索搜索空间,随着优化过程的进行,某些 p i > E r p_i > E_r pi>Er 的菌丝会向营养丰富的菌丝区域发展。
1.3 侧向分支和孢子萌发阶段
在侧向分支阶段,生长通过其他个体和全局最优 2 个方向生成新分支:
S
i
,
j
k
+
1
=
[
R
j
<
r
3
]
⋅
S
i
,
j
k
+
(
1
−
[
R
j
<
r
3
]
)
⋅
(
S
i
,
j
k
+
r
5
E
L
D
i
e
p
1
+
(
1
−
r
5
)
⋅
E
L
D
i
e
p
2
)
,
(26)
S_{i,j}^{k+1} = [R_j < r_3] \cdot S_{i,j}^k + (1 - [R_j < r_3]) \cdot (S_{i,j}^k + r_5 E^L D_i^{ep1} + (1 - r_5) \cdot E^L D_i^{ep2}), \tag{26}
Si,jk+1=[Rj<r3]⋅Si,jk+(1−[Rj<r3])⋅(Si,jk+r5ELDiep1+(1−r5)⋅ELDiep2),(26)
式中
j
=
1
,
2
,
…
,
d
j=1,2,\dots,d
j=1,2,…,d。
{
E
L
=
1
+
e
f
i
∑
k
=
1
N
f
k
⋅
[
r
6
<
r
7
]
D
i
e
p
1
=
S
a
−
S
b
D
i
e
p
2
=
S
c
−
S
∗
(27)
\begin{cases} E^L = 1 + e^{\frac{f_i}{\sum_{k=1}^N f_k}} \cdot [r_6 < r_7] \\ D_i^{ep1} = S_a - S_b \\ D_i^{ep2} = S_c - S^* \end{cases} \tag{27}
⎩
⎨
⎧EL=1+e∑k=1Nfkfi⋅[r6<r7]Diep1=Sa−SbDiep2=Sc−S∗(27)
式中:
- E L E_L EL 为分支生长速率,当 r 6 < r 7 r_6 < r_7 r6<r7 时, [ r 6 < r 7 ] = 1 [r_6 < r_7] = 1 [r6<r7]=1,算法倾向于开发,利用适应度高的个体信息生成分支;当 [ r 6 ≥ r 7 ] [r_6 \ge r_7] [r6≥r7] 时, [ r 6 < r 7 ] = 0 [r_6 < r_7] = 0 [r6<r7]=0,算法倾向于探索,仅通过基础速率生成分支;
- D i e p 1 D_i^{ep1} Diep1 为随机个体间的差分方向; D i e p 2 D_i^{ep2} Diep2 为随机个体与最优解的差分方向。
新孢子根据迄今为止最佳解决方案和 2 个随机选择的解决方案的平均值分配位置:
{
S
i
,
j
k
+
1
=
[
R
j
<
r
3
]
⋅
S
i
,
j
k
+
(
1
−
[
R
j
<
r
3
]
)
⋅
∂
∂
=
(
(
t
t
max
)
S
j
∗
+
(
1
−
t
t
max
)
S
a
,
j
k
2
+
S
b
k
)
2
+
S
g
r
5
E
⋅
∣
S
c
,
j
k
+
S
a
,
j
k
+
S
b
,
j
k
3
−
S
i
,
j
k
∣
(28)
\begin{cases} S_{i,j}^{k+1} = [R_j < r_3] \cdot S_{i,j}^k + (1 - [R_j < r_3]) \cdot \partial \\ \partial = \dfrac{\left( \dfrac{\left( \frac{t}{t_{\max}} \right) S_j^* + \left( 1 - \frac{t}{t_{\max}} \right) S_{a,j}^k}{2} + S_b^k \right)}{2} + S_g r_5 E \cdot \left| \dfrac{S_{c,j}^k + S_{a,j}^k + S_{b,j}^k}{3} - S_{i,j}^k \right| \end{cases} \tag{28}
⎩
⎨
⎧Si,jk+1=[Rj<r3]⋅Si,jk+(1−[Rj<r3])⋅∂∂=2
2(tmaxt)Sj∗+(1−tmaxt)Sa,jk+Sbk
+Sgr5E⋅
3Sc,jk+Sa,jk+Sb,jk−Si,jk
(28)
式中:
- j = 1 , 2 , … , d j=1,2,\dots,d j=1,2,…,d;
- S g S_g Sg 以 50 % 50\% 50% 概率取 + 1 +1 +1 或 − 1 -1 −1,控制生长方向。
在所提出的 FGO 中,孢子萌发和侧分枝之间的权衡以
0.5
0.5
0.5 的概率实现,定义如下式:
S
i
k
+
1
=
{
(
20
)
,
r
7
<
0.5
(
22
)
,
else
,
i
=
1
,
2
,
…
,
N
(29)
S_i^{k+1} = \begin{cases} (20), r_7 < 0.5 \\ (22), \text{else} \end{cases} ,i=1,2,\dots,N \tag{29}
Sik+1={(20),r7<0.5(22),else,i=1,2,…,N(29)
2.算法结果Matlab&Python

3.参考文献
[1] Yifan Lang, Yuelin Gao. Fungal growth optimizer: A novel nature-inspired metaheuristic algorithm for stochastic optimization. Computer Methods in Applied Mechanics and Engineering. https://doi.org/10.1016/j.cma.2025.117825.

1804

被折叠的 条评论
为什么被折叠?



