SCI一区优化源码:RIME-CNN-LSTM-Attention超前24步多变量回归预测算法

文摘   教育   2024-12-15 09:06   江苏  
程序平台:适用于MATLAB 2023版及以上版本。
霜冰优化算法是2023年发表于SCI、中科院二区Top期刊《Neurocomputing》上的新优化算法,现如今还未有RIME优化算法应用文献哦。RIME主要霜冰的形成过程进行模拟将其巧妙地应用于算法搜索领域。
该文献对RIME进行了定性分析实验,以阐明该算法在寻找最优解过程中的特点。然后,对RIME在经典的IEEE CEC2017和最新的IEEE CEC2022测试集中的42个函数进行了性能测试。将提出的算法与10个经典算法和10个最新改进算法进行比较,以验证其性能优势。此外,文献还设计了RIME的参数分析实验,以探讨该算法在运行不同参数和处理不同问题方面的潜力。最后,将RIME应用于五个实际工程问题,以验证其在实际问题中的有效性和优越性。
通过模拟软霜颗粒的运动,作者提出了一种全新的算法搜索策略,即软霜搜索策略。这个策略的灵感来自于对软霜颗粒在运动中的特性的模拟。

同时,文中还模拟了硬霜颗粒之间的交叉行为,提出了硬霜穿刺机制,以更好地利用这一算法。这个穿刺机制通过模拟硬霜颗粒相互交叉的方式,为算法引入了一种新的优化手段。
最后,在元启发式算法的选择机制方面进行了改进,引入了正向贪婪选择机制。通过结合软霜搜索策略、硬霜穿刺机制和正向贪婪选择机制构建RIME算法。

我们利用该高创新算法对我们的CNN-LSTM-Attention时序和空间特征结合-融合注意力机制的回归预测程序代码中的超参数进行优化。
代码说明:霜冰优化算法(RIME)、卷积神经网络(CNN)和长短期记忆网络(LSTM)融合多头自注意力机制Multihead SelfAttention的超前24步多变量时间序列回归预测算法。
功能:

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

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

3提供损失、RMSE迭代变化极坐标图;网络的特征可视化图;测试对比图;适应度曲线。

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

适用领域:
风速预测、光伏功率预测、发电功率预测、碳价预测等多种应用。
数据集格式:
前一天18个气象特征,采样时间为24小时,输出为第二天的24小时的功率出力,也就是18×24输入,1×24输出,一共有75个这样的样本。

预测值与实际值对比结果:

训练特征可视化:
训练误差曲线的极坐标形式(误差由内到外越来越接近0):

适应度曲线:

部分核心代码:
function [Best_rime_rate, Best_pos, Convergence_curve, bestPred, bestNet, bestInfo] = RIME(SearchAgents_no, Max_iter, lb, ub, dim, fobj)    % 初始化位置    Best_rime = zeros(1, dim);    Best_rime_rate = inf; % 用于最大化问题,请将此值改为 -inf    for i = 1:dim        Rimepop(:, i) = lb(i) + rand(SearchAgents_no, 1) .* (ub(i) - lb(i));   % 初始种群    end    Lb = lb .* ones(1, dim); % 下边界    Ub = ub .* ones(1, dim); % 上边界    it = 1; % 迭代次数    Convergence_curve = zeros(1, Max_iter);    Rime_rates = zeros(1, SearchAgents_no); % 初始化适应度值    newRime_rates = zeros(1, SearchAgents_no);    W = 5; % 软霜冰参数,在论文第4.3.1节中有详细讨论    % 计算初始位置的适应度值    for i = 1:SearchAgents_no        [Rime_rates(1, i),Value{i},Net{i},Info{i}] = fobj(Rimepop(i, :)); % 计算每个搜索体的适应度值        % 进行贪婪选择        if Rime_rates(1, i) < Best_rime_rate            Best_rime_rate = Rime_rates(1, i);            Best_rime = Rimepop(i, :);            bestPred = Value{i};            bestNet = Net{i};            bestInfo = Info{i};        end    end    % 主循环    while it <= Max_iter        RimeFactor = (rand - 0.5) * 2 * cos((pi * it / (Max_iter / 10))) * (1 - round(it * W / Max_iter) / W); % 公式(3),(4),(5)的参数        E = (it / Max_iter)^0.5; % 公式(6)        newRimepop = Rimepop; % 记录新的种群        normalized_rime_rates = normr(Rime_rates); % 公式(7)的参数        for i = 1:SearchAgents_no            for j = 1:dim                % 软霜冰搜索策略                r1 = rand();                if r1 < E                    newRimepop(i, j) = Best_rime(1, j) + RimeFactor * ((Ub(j) - Lb(j)) * rand + Lb(j)); % 公式(3)                end                % 硬霜冰穿刺机制                r2 = rand();                if r2 < normalized_rime_rates(i)                    newRimepop(i, j) = Best_rime(1, j); % 公式(7)                end            end        end        for i = 1:SearchAgents_no            % 边界吸收            Flag4ub = newRimepop(i, :) > ub;            Flag4lb = newRimepop(i, :) < lb;            newRimepop(i, :) = (newRimepop(i, :) .* ~(Flag4ub + Flag4lb)) + ub .* Flag4ub + lb .* Flag4lb;            [newRime_rates(1, i),newValue{i},newNet{i},newInfo{i}] = fobj(newRimepop(i, :));            % 正向贪婪选择机制            if newRime_rates(1, i) < Rime_rates(1, i)                Rime_rates(1, i) = newRime_rates(1, i);                Rimepop(i, :) = newRimepop(i, :);                Value{i} = newValue{i};                Net{i} = newNet{i};                Info{i} = newInfo{i};

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

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

欢迎感兴趣的小伙伴点击阅读原文上方链接获得完整版代码哦~

关注小编会不定期推送高创新型、高质量的学习资料、文章程序代码,为你的科研加油助力~

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