2025年优化算法:真菌生长优化算法(Fungal Growth Optimizer,FGO)

news2025/4/4 16:44:23

真菌生长优化算法(Fungal Growth Optimizer,FGO) 是发表在中科院一区期刊“ARTIFICIAL INTELLIGENCE REVIEW”(IF:6.7)的2025年3月智能优化算法

01.引言

Fungal Growth Optimizer (FGO) 是一种基于真菌生长行为的元启发式优化算法,灵感来源于真菌的菌丝尖端生长、分支和孢子萌发三个关键生物学过程。该算法通过模拟真菌在复杂环境中寻找营养的机制,平衡探索与开发能力,有效解决高维、多模态优化问题。代码实现了FGO的核心数学模型,结合文献描述,以下从原理、流程和实现细节进行全面解析。

02.算法原理

在真菌包括一个真核生物王国,在环境中营养物质的循环中起着重要作用;它们是异养生物,即它们不能自己生产食物,必须从有机材料中获取营养。真菌包括大约 144,000 种已知物种,例如酵母菌、霉菌、霉菌和蘑菇。真菌与细菌和植物表现出共生关系,可以有性繁殖和无性繁殖。然而,它们也会引起动植物的各种疾病。真菌非常适合在复杂环境中生长,因为它们能够产生菌丝,从而形成复杂的菌丝网络。菌丝是真菌细胞的独特生长形式,具有丝状结构。形成菌丝体的主要菌丝生长行为是菌丝尖端生长、分枝和孢子萌发 。以下将简单介绍真菌生长优化算法原理。

1. 菌丝尖端生长 (Hyphal Tip Growth)

(1)探索阶段:通过指数生长模型模拟菌丝随机探索,公式:

其中r1为随机数,t为当前迭代次数。方向由随机个体差异驱动:S_new = S + E*(Sa - Sb)

(2)开发阶段:基于化学趋向性,分为两种策略:

  • 趋向最优解:方向向量包含当前最优解信息:

  • 避让有害区域:引入反向扰动项Ec,公式:

2. 菌丝分支 (Branching)

  • 侧向分支:结合随机个体差异和最优解方向:

其中E^L为分支生长速率,受适应度影响。

3. 孢子萌发 (Spore Germination)

  • ​位置更新:在最优解与随机个体间插值,并加入随机扰动

其中S_g为随机符号(±1),E为指数生长因子

03.算法算法流程(结合代码)

1.初始化阶段

S = initialization(N, dim, ub, lb);  
Sp = S;  % 个体历史最优  
fit = fobj(S);  
[Score, Position] = min(fit);  

初始化阶段通过均匀分布生成初始菌丝群体,每个菌丝代表解空间中的一个候选解。这里通过initialization函数实现了两种边界处理方式:

  • 单边界模式

    (当ub/lb为标量时):所有维度共享同一边界范围。

  • 多边界模式

    (当ub/lb为向量时):每个维度独立设置边界,更适应高维异构问题。

初始适应度计算后,记录全局最优解(Position)及其适应度(Score)。此步骤为算法后续的“营养分配”和“菌丝行为选择”提供基准。

    2.  主循环结构

    while t < Tmax
        if rand < rand  % 随机选择生长或分支
            %% 菌丝尖端生长
            for i=1:N
                % 计算探索概率Er
                p = (fit(i)-min(fit))/(max(fit)-min(fit)+eps);
                Er = M + (1 - t/Tmax)*(1 - M);
                if p < Er  % 探索
                    F = (fit(i)/sum(fit)) * rand * (1 - t/Tmax)^(1 - t/Tmax);
                    E = exp(F);
                    S(i,:) = S(i,:) + E*(Sa - Sb);  % 随机方向生长
                else       % 开发
                    Ec = (rand-0.5).*rand.*(Sa - Sb);  % 环境扰动
                    if rand < rand  % 避让策略
                        De2 = rand.*(S(i,:) - Position).*(rand>rand);
                        S(i,:) = S(i,:) + De2.*nutrients(i) + Ec*(rand>rand);
                    else            % 趋向策略
                        De = rand*(Sa - S(i,:)) + rand*(beta*Position - S(i,:));
                        S(i,:) = S(i,:) + De.*nutrients(i) + Ec*(rand>Ep);
                    end
                end
            end
        else
            %% 分支与孢子萌发
            if rand < 0.5  % 分支
                EL = 1 + exp(fit(i)/sum(fit))*(rand>rand);
                S(i,:) = S(i,:) + r5*EL*(Sb - Sc) + (1-r5)*EL*(Sa - Position);
            else           % 孢子萌发
                mu = sign(rand-0.5)*rand*exp(F);
                S(i,:) = ((t/Tmax)*Position + (1-t/Tmax)*Sa + Sb)/2 + mu*abs(mean(Sabc)-S(i,:));
            end
        end
        % 边界处理与适应度更新
        S = min(max(S, lb), ub);
        [fit, Position, Score] = updateFitness(S, fit, fobj);
    end  

      主循环通过rand < rand实现随机行为选择:

      • ​菌丝尖端生长​(约50%概率):模拟菌丝在当前位置的延伸,包含探索与开发两种策略。

      • ​分支与孢子萌发​(约50%概率):模拟菌丝侧向分支或孢子扩散,增强全局搜索能力。

      这种随机机制避免了算法陷入固定模式,同时通过后续的适应度评估实现动态行为调节:表现差的个体更倾向于探索,表现优的个体偏向开发。

      3.菌丝尖端生长

      子模块1:探索阶段

      F = (fit(i)/sum(fit)) * rand * (1 - t/Tmax)^(1 - t/Tmax);  
      E = exp(F);  
      S(i,:) = S(i,:) + E*(Sa - Sb);  
      • ​营养驱动:F的计算结合个体适应度占比(fit(i)/sum(fit)),使高适应度个体(营养丰富区域)生长速率更快。

      • ​时间衰减:(1 - t/Tmax)^(...)项在迭代后期抑制探索,逐步转向开发。

      • ​随机扰动:方向向量Sa - Sb通过随机选择个体引入多样性,避免局部最优。

      子模块2:开发阶段

      De = rand*(Sa - S(i,:)) + rand*(beta*Position - S(i,:));  
      S(i,:) = S(i,:) + De.*nutrients(i) + Ec*(rand>Ep); 
      • ​双目标驱动:方向向量包含随机个体差异(Sa - S(i,:))和全局最优吸引(beta*Position - S(i,:)),平衡局部搜索与全局收敛。

      • ​环境扰动:Ec项模拟外界环境变化,当rand > Ep时触发扰动,帮助逃离次优区域。

      ​4. 分支与孢子萌发

      子模块1:侧向分支​​​​​​​

      EL = 1 + exp(fit(i)/sum(fit))*(rand>rand);  
      Dep1 = S(b,:) - S(c,:);  
      Dep2 = S(a,:) - Position;  
      S(i,:) = S(i,:) + r5*EL*Dep1 + (1-r5)*EL*Dep2; 

      自适应分支强度:EL项通过指数函数放大高适应度个体的分支能力,使优质区域被更密集搜索。

      ​混合方向策略:Dep1(随机差异)与Dep2(趋向最优解)通过r5权重混合,兼具探索与开发特性

      子模块2:孢子萌发​​​​​​​

      mu = sign(rand-0.5)*rand*exp(F);  
      S(i,:) = ((t/Tmax)*Position + (1-t/Tmax)*Sa + Sb)/2 + mu*abs(mean(Sabc)-S(i,:));  
      • ​时空插值:(t/Tmax)*Position + ...在迭代初期偏向随机位置(Sa, Sb),后期偏向全局最优,实现从探索到开发的平滑过渡。

      • ​定向扰动:mu项通过sign(rand-0.5)随机化扰动方向(正/负),结合exp(F)控制扰动强度,模拟孢子随风扩散的不确定性。

      5. 边界处理与适应度更新​​​​​​​

      S(i,:) = min(max(S(i,:), lb), ub);  
      if nF < fit(i)  
          Sp(i,:) = S(i,:);  
          fit(i) = nF;  
          if nF < Score  
              Position = S(i,:);  
              Score = nF;  
          end  
      end  
      • 硬边界约束:通过min/max函数将解强制限制在定义域内,简单但可能导致边界聚集。改进方向可引入反射边界或自适应缩放。

      • ​精英保留策略:仅接受更优解更新个体历史最优(Sp)和全局最优(Position),保证算法单调收敛。

      • ​收敛曲线记录:每次评估后更新Convergence_curve,为后续分析提供迭代过程可视化数据。

      算法特性总结

      (1)​多模态处理能力:

      • 孢子萌发机制通过随机插值和扰动,有效跳出局部最优,适合多峰优化问题。

      • 分支行为在优质解周围生成多样性解,避免早熟收敛。

      ​(2)自适应平衡探索与开发:

      • 时间衰减因子(1 - t/Tmax)逐步降低探索强度。

      • 营养分配nutrients动态调整个体搜索倾向。

      ​(3)计算复杂度:

      • 时间复杂度为O(Tmax*N*dim),与主流元启发式算法(如PSO、GA)相当。

      • 空间复杂度为O(N*dim),适合大规模并行计算。

      论文伪代码:

      04.论文中算法对比图

      [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.

      05.本代码效果图

      ✅作者简介:信号处理方向在校博士研究生,目前专研于MATLAB算法及科学绘图等,熟知各种信号分解算法、神经网络时序、回归和分类预测算法、数据拟合算法以及滤波算法。提供一个可以相互学习相互进步的平台

      🚩技术信仰:知行合一,让每一行代码都成为解决问题的利器

      🔍后台私信备注个人需求(比如TOC-BP)定制以下TOC算法优化模型(看到秒回):

      1.回归/时序/分类预测类:BP、RF、XGBoost、RBF、LSSVM、SVM、ELM、DELM、ESN、RELM等等均可,优化算法优化BP为例,可达到以下效果:

      (1)优化BP神经网络的数据时序预测

      (2)优化BP神经网络的数据回归(多输入多输出)预测

      (3)优化BP神经网络的数据回归预测

      2.分解类:EEMD、VMD、REMD、CEEMDAN、ICEEMDAN、SVMD等分解模型均可,优化算法优化VMD/ICEEMDAN为例,可达到以下效果:

      (1)基于改进天鹰优化算法(IAO)优化的VMD参数

      (2)基于改进天鹰优化算法(IAO)优化ICEEMDAN参数

      3.去噪算法算法类:VMD/CEEMDAN/ICEEMDAN/SVMD+小波阈值/SVD去噪,可在去噪算法前加智能优化算法优化参数以VMD-WT/SVD为例,可达到以下效果:

      (1)基于VMD-SpEn(样本熵)联合小波阈值去噪

      (2)基于SVMD-SVD的信号去噪算法

      (3)基于ZOA优化VMD-IAWT岩石声发射信号降噪算法

      本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2327307.html

      如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

      相关文章

      阿里通义千问发布全模态开源大模型Qwen2.5-Omni-7B

      Qwen2.5-Omni 是一个端到端的多模态模型&#xff0c;旨在感知多种模态&#xff0c;包括文本、图像、音频和视频&#xff0c;同时以流式方式生成文本和自然语音响应。汇聚各领域最先进的机器学习模型&#xff0c;提供模型探索体验、推理、训练、部署和应用的一站式服务。https:/…

      论文阅读:基于增强通用深度图像水印的混合篡改定位技术 OmniGuard

      一、论文信息 论文名称:OmniGuard: Hybrid Manipulation Localization via Augmented Versatile Deep Image Watermarking作者团队:北京大学发表会议:CVPR2025论文链接:https://arxiv.org/pdf/2412.01615二、动机与贡献 动机: 随着生成式 AI 的快速发展,其在图像编辑领…

      深挖 DeepSeek 隐藏玩法·智能炼金术2.0版本

      前引&#xff1a;屏幕前的你还在AI智能搜索框这样搜索吗&#xff1f;“这道题怎么写”“苹果为什么红”“怎么不被发现翘课” &#xff0c;。看到此篇文章的小伙伴们&#xff01;请准备好你的思维魔杖&#xff0c;开启【霍格沃茨模式】&#xff0c;看我如何更新秘密的【知识炼金…

      【新手初学】SQL注入getshell

      一、引入 木马介绍&#xff1a; 木马其实就是一段程序&#xff0c;这个程序运行到目标主机上时&#xff0c;主要可以对目标进行远程控制、盗取信息等功能&#xff0c;一般不会破坏目标主机&#xff0c;当然&#xff0c;这也看黑客是否想要搞破坏。 木马类型&#xff1a; 按照功…

      DAY 34 leetcode 349--哈希表.两个数组的交集

      题号349 我尝试硬解失败 /*class Solution {public int[] intersection(int[] nums1, int[] nums2) {int n1nums1.length;int n2nums2.length;int sizeMath.min(n1,n2);int []arrnew int[size];int count0;for(int i0;i<n1;i){outerloop:for(int j0;j<n2;j){if(nums1[i…

      14-SpringBoot3入门-MyBatis-Plus之CRUD

      1、整合 13-SpringBoot3入门-整合MyBatis-Plus-CSDN博客 2、表 3、crud package com.sgu;import com.sgu.mapper.UserMapper; import com.sgu.pojo.User; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.spri…

      三轴云台之相机技术篇

      一、结构设计 三轴云台通常由空间上三个互相垂直的框架构成&#xff0c;包括内框&#xff08;俯仰框&#xff09;、中框&#xff08;方位框&#xff09;和外框&#xff08;横滚框&#xff09;。这些框架分别负责控制相机的俯仰运动、方位运动和横滚运动&#xff0c;从而实现对目…

      Bugku-再也没有纯白的灵魂

      下载文件发现是兽音先用https://roar.iiilab.com/加密flag 得到“~呜嗷嗷嗷嗷呜啊嗷啊呜呜嗷呜呜~嗷嗷~啊嗷啊呜嗷嗷~嗷~嗷~呜呜嗷呜啊啊”&#xff0c;与密文对比对比发现字段少个啊&#xff0c;并且B对应嗷&#xff0c;U对应呜&#xff0c;G对应啊&#xff0c;K对应~补充啊后…

      多模态大语言模型arxiv论文略读(一)

      Does Transliteration Help Multilingual Language Modeling? ➡️ 论文标题&#xff1a;Does Transliteration Help Multilingual Language Modeling? ➡️ 论文作者&#xff1a;Ibraheem Muhammad Moosa, Mahmud Elahi Akhter, Ashfia Binte Habib ➡️ 研究机构: Pennsyl…

      单元测试原则之——不要模拟不属于你的类型

      在单元测试中,不要模拟不属于你的类型(Don’t mock types you don’t own)是一个重要的原则。这是因为外部库或框架的类型(如第三方依赖)可能会在未来的版本中发生变化,而你的模拟可能无法反映这些变化,从而导致测试失效。 以下是一个基于Java Mockito 的示例,展示如何…

      算法与数据结构面试题

      算法与数据结构面试题 加油&#xff01; 考查数据结构本身 什么是数据结构 简单地说&#xff0c;数据结构是以某种特定的布局方式存储数据的容器。这种“布局方式”决定了数据结构对于某些操作是高效的&#xff0c;而对于其他操作则是低效的。首先我们需要理解各种数据结构&a…

      边缘检测技术现状初探2:多尺度与形态学方法

      一、多尺度边缘检测方法 多尺度边缘检测通过在不同分辨率/平滑度下分析图像&#xff0c;实现&#xff1a; 粗尺度&#xff08;大σ值&#xff09;&#xff1a;抑制噪声&#xff0c;提取主体轮廓细尺度&#xff08;小σ值&#xff09;&#xff1a;保留细节&#xff0c;检测微观…

      【AI News | 20250402】每日AI进展

      AI Repos 1、Dolphin 由数据海洋AI与清华大学联合研发的Dolphin多任务语音识别模型正式亮相。该模型覆盖东亚、南亚、东南亚及中东地区40余种语言&#xff0c;并支持22种汉语方言&#xff0c;训练数据量超21万小时&#xff08;含自有及开源数据&#xff09;&#xff0c;具备语…

      操作系统高频(七)虚拟地址与页表

      操作系统高频&#xff08;六&#xff09;虚拟地址与页表 1.什么是文件系统&#xff1f;它的作用是什么&#xff1f;⭐ 存储管理&#xff1a;文件系统负责管理计算机的存储设备&#xff0c;如硬盘、固态硬盘等。它将文件存储在这些设备上&#xff0c;并负责分配和回收存储空间…

      openEuler24.03 LTS下安装Flume

      目录 前提条件 下载Flume 解压 设置环境变量 修改日志文件 测试Flume 在node2安装Flume 前提条件 Linux安装好jdk Flume一般需要配合Hadoop使用&#xff0c;安装好Hadoop完全分布式集群&#xff0c;可参考&#xff1a;openEuler24.03 LTS下安装Hadoop3完全分布式 下载F…

      现代几何风格网页标牌标识logo海报标题设计psai英文字体安装包 Myfonts – Gilroy Font Family

      Gilroy 是一款具有几何风格的现代无衬线字体。它是原始 Qanelas 字体系列的弟弟。它有 20 种粗细、10 种直立字体和与之匹配的斜体。Light 和 ExtraBold 粗细是免费的&#xff0c;因此您可以随心所欲地使用它们。设计时考虑到了强大的 opentype 功能。每种粗细都包括扩展语言支…

      ControlNet-Tile详解

      一、模型功能与应用 1. 模型功能 ControlNet-Tile模型的主要功能是图像的细节增强和质量提升。它通过以下几个步骤实现这一目标&#xff1a; 语义分割&#xff1a;模型首先对输入的图像进行语义分割&#xff0c;识别出图像中不同的区域和对象。这一步是为了让模型理解图像的内…

      leetcode 2873. 有序三元组中的最大值 I

      欢迎关注更多精彩 关注我&#xff0c;学习常用算法与数据结构&#xff0c;一题多解&#xff0c;降维打击。 文章目录 题目描述题目剖析&信息挖掘解题思路方法一 暴力枚举法思路注意复杂度代码实现 方法二 公式拆分动态规划思路注意复杂度代码实现 题目描述 [2873] 有序三元…

      RabbitMQ应用2

      RabbitMQ应用2 一.实际业务逻辑订单系统中使用MQ&#xff08;不写订单系统逻辑&#xff09;1.项目的创建和准备2.代码实现ControllerConfigurationproperties 二.物流系统使用MQ&#xff08;不实现物流系统业务&#xff09;1.项目创建同订单&#xff08;一样&#xff09;2.代码…

      Windows 实战-evtx 文件分析--笔记

      Windows 取证之EVTX日志 - 蚁景网安实验室 - 博客园 一.evtx日志文件是什么 从 Windows NT 6.0&#xff08;也就是 Windows Vista 和 Windows Server 2008&#xff09;开始&#xff0c;微软引入了一种全新的日志文件格式&#xff0c;称为 evtx。这种格式取代了之前 Windows 系…