智能优化算法:真菌优化算法

智能优化算法:真菌优化算法


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(SjUSjL)(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) rijU(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μμ=(1tmaxt)(1tmaxt)D=SαkSck(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(SaSi)+r5(βSSi)[r6>R]Di,je2=rj(Si,jSj)[Rj>r3],j=1,2,dEc=(r90.5)r10(SaSb)ηi= r7,t<2tmaxfi,otherwise归一化处理ηi=k=1Nηkηi+2r8(23)
式中:

  • r j r_j rj 0 ∼ 1 0\sim1 01 的均匀随机数; 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)+εfimin(f)Er=φ+(1φ)(1tmaxt)(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+(1r5)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+ek=1Nfkfi[r6<r7]Diep1=SaSbDiep2=ScS(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] [r6r7] 时, [ 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+(1tmaxt)Sa,jk+Sbk +Sgr5E 3Sc,jk+Sa,jk+Sb,jkSi,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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能算法研学社(Jack旭)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值