目录
- 1.摘要
- 2.算法原理
- 3.结果展示
- 4.参考文献
- 5.代码获取
1.摘要
本文提出了一种新型的自然启发元启发式算法——真菌生长优化算法(FGO),灵感来源于真菌在自然界中的生长行为。真菌的生长行为包括菌丝生长、分枝和孢子萌发,菌丝生长行为模拟了菌丝的扩展和趋化性,能够精确探索搜索空间,并有效地发现和利用富含营养的区域,避免了局部最优解的停滞和收敛速度过慢的问题。分枝行为则模拟了新菌丝从现有菌丝侧面生长,探索周围区域寻找更多资源,增强了算法的探索能力。孢子萌发行为则代表了现有菌丝如何探索新环境,寻找更加安全且富含营养的区域。在FGO中,孢子在优化初期随机降落,以促进探索过程;随着优化进程的推进,随机位置会逐渐转变为在当前最优解和随机位置之间的某个位置,从而在促进开发的同时防止过早收敛。
2.算法原理
菌丝尖端生长行为
在适当的条件下,菌丝会沿直线扩展,探索搜索空间并寻找富含营养的区域。然而,环境和化学因素可能会导致菌丝改变生长方向。此外,菌丝的生长速度受多种因素影响,如真菌物种、环境条件(湿度、温度、营养可用性)和菌丝的年龄。通常,年轻的菌丝生长速度较快,而在富含营养的区域,菌丝可能会出现指数级的生长。相反,在营养匮乏或不利的环境中,菌丝的生长会显著减慢。
增长速度和方向:探索算子
FGO中的生长速率通过一个与当前适应度值相关的指数函数来表示,其中适应度值较高的解对应于富营养区域,适应度值较低的解则代表营养匮乏的区域:
E = e f i ∑ k = 1 N f k \mathrm{E}=e^\frac{f_i}{\sum_{k=1}^Nf_k} E=e∑k=1Nfkfi
FGO通过将每个解的适应度值归一化,从而减小优化过程中指数值的影响。在没有波动的情况下,生长速率对于每个适应度值是恒定的,这会导致FGO的探索行为缺乏多样性,无法精准地探索搜索空间。为了解决这个问题,将归一化后的适应度值乘以一个介于0和1之间的随机数,使生长速率出现波动:
$$
\begin{aligned}
& \mathrm{E}=e^F \
& F=\frac{f_i}{\sum_{k=1}^Nf_k}\cdot r_1\cdot\mathscr{C} \
& \mathscr{E}=\left(1-\frac{t}{t_max}\right)^{\left(1-\frac{t}{t_{max}}\right)}
\end{aligned}
$$
在FGO中,生长速率和方向的变化是通过动态调整来模拟真菌生长行为的。生长速率受到一个系数 E E E的控制,该系数在优化初期较大,以加速搜索空间的探索;随着优化过程的推进,生长速率逐渐减小,从而促进当前解周围区域的开发。 D → \overrightarrow{D} D表示生长方向:
D → = S → a t − S → c t \overrightarrow{D}=\overrightarrow{S}_a^t-\overrightarrow{S}_c^t D=Sat−Sct
根据先前计算出的生长速率和方向,可以确定第 i i i条菌丝的新的生长路径:
S → i t + 1 = S → i t + E ⋅ D → \overrightarrow{S}_i^{t+1}=\overrightarrow{S}_i^t+\mathrm{E}\cdot\overrightarrow{D} Sit+1=Sit+E⋅D
菌丝的生长可能仅在某些维度上发生变化,而非在所有维度上均匀扩展。在FGO中,现有的菌丝生长与新的生长共同作用,根据一定的公式生成新的菌丝生长:
S i , j t + 1 = [ R j − r 3 ] S i , j t + ( 1 − [ R j − r 3 ] ) S i , j t + 1 S_{i,j}^{t+1}=[R_j-r_3]S_{i,j}^{t}+(1-[R_j-r_3])S_{i,j}^{t+1} Si,jt+1=[Rj−r3]Si,jt+(1−[Rj−r3])Si,jt+1
趋化行为:开发算子
在FGO中,开发算子模拟了趋化性行为,通过化学信号引导菌丝朝向富营养区域或其他有潜力的区域,以尽可能快速地找到更好的解:
D → i e = r 4 ⋅ ( S → a t − S → i t ) \overrightarrow{D}_i^e=r_4\cdot\left(\overrightarrow{S}_a^t-\overrightarrow{S}_i^t\right) Die=r4⋅(Sat−Sit)
第 i i i个菌丝向代表第一状态的最佳或随机选择的解的生长方向:
D → i e = r 4 ⋅ ( S → a t − S → i t ) + r → 5 ⊙ ( β ⋅ S → ∗ − S → i t ) ⋅ [ r 6 > R ] \overrightarrow{D}_i^e=\pmb{r}_4\cdot\left(\overrightarrow{S}_a^t-\overrightarrow{S}_i^t\right)+\overrightarrow{r}_5\odot\left(\beta\cdot\overrightarrow{S}^*-\overrightarrow{S}_i^t\right)\cdot[\pmb{r}_6>\mathscr{R}] Die=r4⋅(Sat−Sit)+r5⊙(β⋅S∗−Sit)⋅[r6>R]
在富含营养的环境中,菌丝的生长速率会显著提高,菌丝朝向当前最优解或随机选择的解移动的距离越大,其生长速率也越高。
η i = { r 7 , t < t m a x 2 f i , e l s e \eta_i= \begin{cases} r_7,t<\frac{t_{max}}{2} \\ f_i,else & \end{cases} ηi={r7,t<2tmaxfi,else
第 i i i菌丝按照第一状态的新生长:
S → i t + 1 = S → i t + η i ⋅ D → i e \overrightarrow{S}_i^{t+1}=\overrightarrow{S}_i^t+\eta_i\cdot\overrightarrow{D}_i^e Sit+1=Sit+ηi⋅Die
流程图
伪代码
3.结果展示
4.参考文献
[1] Abdel-Basset M, Mohamed R, Abouhawwash M. Fungal growth optimizer: A novel nature-inspired metaheuristic algorithm for stochastic optimization[J]. Computer Methods in Applied Mechanics and Engineering, 2025, 437: 117825.