注:该算法已按照智能优化算法APP标准格式进行整改,可直接集成到APP中,方便大家与自己的算法进行对比。
虫草优化算法(Caterpillar Fungus Optimizer, CFO)是一种受冬虫夏草(Ophiocordyceps sinensis)寄生行为机制启发的新型智能优化算法。自然界中,虫草依赖其卓越的环境感知与策略性寄生行为,在湿润、植被茂密的高原土壤中精准锁定宿主幼虫,并通过动态调整的生长路径实现高效扩张。这一过程不仅体现出虫草对生态环境的深度适应性,更蕴含着令人惊叹的生物智能演化逻辑。CFO正是模拟虫草在复杂生态系统中的三大关键行为机制:基于湿度感知的多因子搜索策略、波动推进与螺旋上升的空间探索过程,以及在局部最优与再寄生之间的双重寄生决策模型。这些机制被系统抽象为可调控的数学算子——波动推进算子负责在水平维度广泛探索,而螺旋上升算子则在垂直维度中逐步聚焦,全方位实现搜索空间的高效覆盖。
该成果于2025年7月最新发表在计算机领域一区期刊Renewable Energy上,具有出色的应用前景。
冬虫夏草(Ophiocordyceps sinensis),因其在冬季潜伏、夏季生长的周期性特征而得名,是一种传统而珍贵的中药材。其药理功效显著,包括增强免疫功能、提升细胞活性、抗氧化及抗疲劳等。在中国悠久的医药史中,虫草最早可追溯至秦汉时期,并在《神农本草经》中首次被记载,如下图所示。
此外,如图所示的唐代《苏摩腊萨》中也记载了虫草的药用价值。在同一历史时期,虫草已在中国广泛应用,并以商品形式传播至亚洲其他地区,如下图所示。
虫草主要生长于中国西南部的高海拔山区,如青藏高原与川西高原。这些平均海拔超过4500米的高原地带,具有独特的地理与气候特征,如低温、低氧、日照充足等,为虫草的繁殖与生长提供了理想的生态环境。
冬虫夏草独特的形态结构来源于其对蝙蝠蛾属(Hepialus)幼虫的寄生行为。一般来说,蝙蝠蛾的一生经历卵期、幼虫期、蛹期和成虫期。图 (a) 展示了虫草在蝙蝠蛾处于蛹期时的寄生过程。
虫草的寄生行为表现为:其子囊孢萌发后产生分枝芽管,并侵入蛾类幼虫体内,进而繁殖菌丝体。被感染的幼虫活动能力逐渐减弱,最终爬入地下2至3厘米左右的植物根系层。此后,其体态会变得僵硬,呈“头朝上、尾朝下”的特征性姿势(图 (b)),体内则已被虫草菌丝所填充。完成寄生的虫草一般于7月至8月间在土壤中潜伏,吸收养分进入休眠阶段。随着次年5月至6月气温升高,虫草感应环境变化,从幼虫头部缓慢长出子座并突破土壤表层,土壤湿度受地下水位与土壤类型的共同影响,是吸引虫草和宿主幼虫的重要生态因子。这种独特的高原湿润生态系统与虫草的生物习性共同构成了其理想的寄生繁殖环境。在寻找宿主幼虫的过程中,虫草倾向于采用随机搜索机制,并根据不同阶段的环境条件动态调整搜索策略。这种探索行为在水平与垂直两个维度上体现出由多因子驱动的复杂机制,分别可抽象为“波动推进算子”与“螺旋上升算子”,用于模拟虫草在生态空间中的分布搜索过程。
1 算法原理详解
受虫草独特形成过程的启发,本节将详细阐述所提出的虫草优化算法(CFO)的概念框架与模型构建方法。为便于抽象虫草复杂的自然生命周期,并有效简化建模过程,本文引入了以下三个建模原则:
在每一轮虫草生命周期的繁殖过程中,每个子囊孢囊仅释放一个子囊孢子,每个子囊孢子仅能感染一只幼虫;
在寄生阶段中,统一设定为:每个虫草在最多尝试两次寄生行为后可视为成功寄生;
寄生成功的幼虫总数保持恒定,该数量用于模拟自然界中虫草种群数量的多样性,同时设定寄生成功概率为 50%,用于引入行为不确定性与种群动态约束。
(1)探索算子(Exploration Operator)
在探索阶段,首先根据当前的适应度值对种群中的虫草个体进行降序排序。随后,每个虫草个体将从两个不同的探索机制中随机选择其一,两个选项的选择概率相等,以确保种群探索方向的多样性与全局覆盖能力。
波动推进算子(Wave Advance Operator):当选择该算子时,虫草个体将在搜索空间中表现出一种类波动推进(wave-like advance)的行为。这一机制模拟虫草在土壤水平维度上的扩散行为,其搜索路径具有一定的非线性与周期性振荡特征,以增加对解空间的广域探索能力。 该机制可建立如下数学表达式:
其中, 表示第 个虫草个体在搜索阶段的位置; 是一个介于 之间的随机数; 表示适应度值最小的虫草个体的位置; 和 分别表示第 个和第 个虫草个体的位置。由于虫草个体的适应度值按降序排列,因此第 个虫草个体的性能优于第 个。 被设计为
其中, 是一个介于 范围内的随机常数。搜索系数 描述了虫草个体向更优位置移动时的随机搜索步长。此外,随着随机步长的引入,虫草个体能够在搜索空间中探索新的区域,并在全局范围内发现更优解。因此,虫草通过其感知能力高效探索搜索空间,从而提高发现最优解的概率。
螺旋上升算子:在螺旋上升算子阶段,虫草的搜索机制数学上描述为
其中,𝑟3 是范围在 [0,1] 内的随机数。𝛽 表示虫草在螺旋上升算子阶段的搜索步长,其计算公式为
其中,𝑟4 表示在 [0,1] 区间内均匀分布的随机数;𝑟5 是随机取值为 1 或 2 的随机整数。参数 𝑟5 是为整个种群随机选取的。系数
(2)幼虫寄生
虫草展现出在最优寄生与再寄生之间的策略选择,如下图所示。该选择性寄生行为的数学建模,有助于提升虫草优化算法(CFO)向更高寄生成功率的收敛能力。此方法结合了全局搜索特征的再寄生行为和局部搜索特征的最优寄生行为。这种双重策略显著增强了所提 CFO 的搜索效率,促进了对搜索空间的更全面探索与利用。
在再寄生行为阶段,虫草继续与同一幼虫保持寄生关系。然而,幼虫会被具有更优适应度的虫草重新寄生,以提高寄生的可靠性,其数学表达可表示为
其中,
与再寄生行为不同,最优寄生行为主要发生在虫草遇到已被寄生的幼虫的情况下。因此,在最优寄生行为阶段,虫草倾向于寻找最有利的生长条件,其定义为
其中,𝑟7 是在 [0,1] 区间内均匀分布的随机数;𝜆 表示虫草在迭代初期具有较大的搜索步长,而在迭代后期搜索步长逐渐减小。此外,随着迭代次数接近最大值,参数 𝜆 逐渐趋近于零。该渐进式调整由搜索步长参数控制,使得算法能够从大范围探索平滑过渡到更精细的小范围开发。通过这一自适应策略,所提虫草优化算法(CFO)得以不断优化搜索轨迹,持续收敛至全局最优解。
虫草优化算法(CFO)的伪代码如下所示:
2 结果展示





3、MATLAB核心代码
.rtcContent { padding: 30px; } .lineNode {font-size: 14pt; font-family: "新宋体", Menlo, Monaco, Consolas, "Courier New", monospace; font-style: normal; font-weight: normal; }%微信公众号搜索:淘个代码,获取更多免费代码%禁止倒卖转售,违者必究!!!!!%唯一官方店铺:https://mbd.pub/o/author-amqYmHBs/work%代码清单:https://docs.qq.com/sheet/DU3NjYkF5TWdFUnpu
%% ***************************************************************%% Clear spacefunction [BestSolution,BestFitness,Curve]= CFO(Search_Num,Max_Iterations,lb,ub,dimension,func)if numel(lb) ~= dimension lb = repmat(lb,1,dimension); ub = repmat(ub,1,dimension);end%% Create a pre-stored matrix of iteration resultsCurve = zeros(1,Max_Iterations);% BestF =zeros(run_Num,1);% BestS = zeros(run_Num,dimension); %% Pre-allocate variable memory Cordycepes_P = zeros(Search_Num,dimension); Cordycepes_F = zeros(1,Search_Num); %% Initialization for n=1:Search_Num Cordycepes_P(n,:) = (ub-lb).*rand(1,dimension)+lb; Cordycepes_P(n,:) = BoundCheck( Cordycepes_P(n,:), ub, lb); Cordycepes_F(1,n) = func( Cordycepes_P(n,:) ); end %% Single iteration for it=1:Max_Iterations %% Caterpillar fungus main % research_operator [Cordycepes_P,Cordycepes_F] = Exploration_operator( Cordycepes_P, Cordycepes_F, ub, lb, it, Max_Iterations, func); % parasitism_operation [Cordycepes_P,Cordycepes_F] = Parasitization_operation( Cordycepes_P, Cordycepes_F, ub, lb, it, Max_Iterations, func); % Results Save Curve(it)=min(Cordycepes_F); end [BestFitness,index] = min( Cordycepes_F ); BestSolution = Cordycepes_P(index,:);
end
参考文献
[1]Yang B, Liang B, Zhou S, et al. A novel bio-inspired caterpillar fungus (Ophiocordyceps sinensis) optimizer for SOFC parameter identification via GRNN[J]. Renewable Energy, 2025: 123995.
完整代码获取
后台回复关键词:
TGDM869
获取更多代码:

或者复制链接跳转:https://docs.qq.com/sheet/DU3NjYkF5TWdFUnpu

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



