SCI、中科院1区Top算法:SMA-CNN-BiGRU-Attention)黏菌优化深度学习-融合注意力机制预测程序

文摘   教育   2024-10-31 09:07   中国  

适用平台:Matlab2023及以上

SMA 黏菌优化算法,于2020年发表在SCI1Top期刊《Future Generation Computer Systems》上。

利用该计算机1Top算法对我们的CNN-BiGRU-Attention时序和空间特征结合-融合注意力机制的回归预测程序代码中的超参数如:卷积核大小、BiGRU单元个数、学习率等进行优化。

黏菌算法的背景:

论文提到的黏菌是指多头黏菌(Physarum polycephalum)黏菌是一种生活在寒冷湿润地方的真核生物。它的主要营养阶段是黏菌体,也是文的主要研究阶段。在这个阶段,黏菌体会寻找食物,并将食物包围起来,分泌酶来消化食物。在迁移过程中,前端会延伸成扇形,形成一个相互连接的血管网络,使细胞质能够流动。由于它们独特的形态和特征,它们可以同时利用多个食物来源形成连接它们的血管网络。

该论文进行了一系列实验,包括定性分析、定量分析测试。定性分析包括

接近食物: 黏菌通过空气中的气味接近食物,黏菌接近食物时呈圆形与扇形结构运动。
包围食物: 黏菌静脉接触的食物浓度越高,生物振荡的传播波越强,细胞质流动越快。

抓取食物: 黏菌在食物浓度低时更慢地接近食物,找到优质食物时更快接近食物。

实验结果表明:SMA通过模拟黏菌对多个食物来源的利用,引入了多源信息融合的思想。黏菌能够同时利用多个资源,这使得算法更具鲁棒性,能够更好地处理多目标优化和多模态问题。

黏菌算法SMA的创新点:

模拟生物行为:

SMA模拟了黏菌在寻找食物时的行为,将生物的智能行为引入优化算法。这种生物行为模拟的方式可以使算法更适应复杂和动态的问题领域。

自适应性和灵活性:

SMA具有自适应性和灵活性,能够根据环境的变化调整搜索策略。算法可以动态地调整离开当前位置的概率、搜索模式和资源利用策略,使其更适应不同的问题和环境。

多源信息融合:

SMA通过模拟黏菌对多个食物来源的利用,引入了多源信息融合的思想。黏菌能够同时利用多个资源,这使得算法更具鲁棒性,能够更好地处理多目标优化和多模态问题。

动态搜索模式调整:

SMA根据食物来源的质量动态调整搜索模式,类似于黏菌在高质量食物区域采用更集中的搜索方法,而在低质量食物区域进行更广泛的探索。这种动态搜索模式调整可以提高算法在不同问题场景中的适应性。

全局-局部搜索融合:

SMA在算法中融合了全局和局部搜索策略,类似于黏菌在高质量食物区域进行局部集中搜索,而在整体区域进行全局探索。这种全局-局部搜索融合使得算法更有可能跳出局部最优解,同时能够更精细地搜索潜在的最优解。

综上,SMA通过模拟黏菌的智能行为,引入了生物启发的优化思想,使得算法在解决复杂问题时更具有自适应性、灵活性和多样性。这些特点使得SMA在一些问题领域表现出色,相较于传统的优化算法,更能有效地搜索问题的解空间。

CNN-BiGRU-Attention模型的创新性:

结合卷积神经网络 (CNN) 和双向门控循环单元 (BiGRU):CNN 用于处理多变量时间序列的多通道输入,能够有效地捕捉输入特征之间的空间关系。BiGRU 是一种能够捕捉序列中长距离依赖关系的递归神经网络。通过双向性,BiGRU 可以同时考虑过去和未来的信息,提高了模型对时间序列动态变化的感知能力。

引入自注意力机制 (Self-Attention): Self-Attention 机制使得模型能够更灵活地对不同时间步的输入信息进行加权。这有助于模型更加集中地关注对预测目标有更大影响的时间点。

自注意力机制还有助于处理时间序列中长期依赖关系,提高了模型在预测时对输入序列的全局信息的感知。

优化套用:基于黏菌优化算法(SMA)、卷积神经网络(CNN)和双向门控循环单元 (BiGRU)融合注意力机制的超前24步多变量时间序列回归预测算法。

功能:

1、多变量特征输入,单序列变量输出,输入前一天的特征,实现后一天的预测,超前24步预测。

2、通过SMA优化算法优化学习率、卷积核大小、神经元个数,这3个关键参数,以最小MAPE为目标函数。

3、提供损失、RMSE迭代变化极坐标图;网络的特征可视化图;测试对比图;适应度曲线(若首轮精度最高,则适应度曲线为水平直线)。

4、提供MAPERMSEMAE等计算结果展示。

适用领域:风速预测、光伏功率预测、发电功率预测、碳价预测等多种应用。

预测值与实际值对比:

训练特征可视化:

训练曲线的极坐标形式(误差由内到外越来越接近0

适应度曲线:

SMA算法部分代码:

% 黏菌优化算法(SMA)%% 主循环while  it <= Max_iterations
%=====适应度排序====== for i=1:SearchAgents % 检查解决方案是否超出搜索空间并将其带回 Flag4ub=X(i,:)>ub; Flag4lb=X(i,:)<lb; X(i,:)=(X(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb; [AllFitness(i),Value{i},Net{i},Info{i}] = fobj(X(i,:)); end
[SmellOrder,SmellIndex] = sort(AllFitness); worstFitness = SmellOrder(SearchAgents); bestFitness = SmellOrder(1);
S=bestFitness-worstFitness+eps; %加上 eps 以避免分母为零
%====计算每个粘菌的适应度权重===== for i=1:SearchAgents for j=1:dim if i<=(SearchAgents/2) weight(SmellIndex(i),j) = 1+rand()*log10((bestFitness-SmellOrder(i))/(S)+1); else weight(SmellIndex(i),j) = 1-rand()*log10((bestFitness-SmellOrder(i))/(S)+1); end end end
%====更新最佳适应度值和最佳位置===== if bestFitness < Destination_fitness bestPositions=X(SmellIndex(1),:); Destination_fitness = bestFitness; bestPred = Value{SmellIndex(1)}; bestNet = Net{SmellIndex(1)}; bestInfo = Info{SmellIndex(1)}; end
a = atanh(-(it/Max_iterations)+1);     b = 1-it/Max_iterations;

部分图片来源于网络,侵权联系删除!

完整代码:https://mbd.pub/o/bread/ZZacl5Zu

欢迎感兴趣的小伙伴点击阅读原文或上方链接获得完整版代码哦~,关注小编会继续推送更有质量的学习资料、文章程序代码~

创新优化及预测代码
免费分享研究理论及方法,基础代码资料,努力提供电力系统相关专业预测及优化研究领域的创新性代码,保质保量!面包多地址:https://mbd.pub/o/yc_yh/work
 最新文章