2023新优化应用:RIME-CNN-LSTM-Attention超前24步多变量回归预测算法

news2024/12/29 1:44:05

程序平台:适用于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、提供MAPE、RMSE、MAE等计算结果展示。

适用领域:

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

数据集格式:

前一天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

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

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

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

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

相关文章

创建第一个 Flink 项目

一、运行环境介绍 Flink执行环境主要分为本地环境和集群环境&#xff0c;本地环境主要为了方便用户编写和调试代码使用&#xff0c;而集群环境则被用于正式环境中&#xff0c;可以借助Hadoop Yarn、k8s或Mesos等不同的资源管理器部署自己的应用。 环境依赖&#xff1a; 【1】…

RTL编码(2)——模块优化

一、顶层模块的划分 在RTL编码中&#xff0c;我们是以模块为单位进行设计的&#xff0c;模块之间的连接和嵌套关系对于电路结构有着很大的影响。一个好的系统设计中&#xff0c;我们应该使得模块尽量满足以下两个标准&#xff1a; 顶层模块扁平化内部模块层次化 1.1 顶层模块扁…

基于springboot + vue的社区医院信息系统

qq&#xff08;2829419543&#xff09;获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;springboot 前端&#xff1a;采用vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xf…

排序:快速排序(hoare版本)

目录 快速排序&#xff1a; 概念&#xff1a; 动画分析&#xff1a; 代码实现&#xff1a; 代码分析&#xff1a; 代码特性&#xff1a; 常见问题&#xff1a; 快速排序&#xff1a; 概念&#xff1a; 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&a…

LNMP网站架构分布式搭建部署(编译安装)

目录 一、数据库编译安装 二、nginx编译安装 三、php编译安装 三、通过nfs将三台不同的主机资源共享 四、基础测试 五、完成WordPress站点部署 六、完成bbs论坛站点部署 一、数据库编译安装 1、先下载安装包到/opt目录中&#xff0c;最好选择mysql-boost-5.7.44.tar.gz版…

Linux操作系统 中的用户管理,也就是关于用户的相关的操作与理解

目录 1 概念2 用户管理的类型3、模板目录4 查看历史命令5 相关文件6 创建用户useradd7 命令passwd 存储及shadow命令下的用户密码8 usermod命令&#xff08;修改属性&#xff09;9 密码设置10 删除命令userdel11 用户组的操作12 用户权限13 创建一个用户组&#xff0c;并且将这…

短视频账号矩阵系统源码搭建步骤包括以下几个方面:

短视频账号矩阵系统源码搭建步骤包括以下几个方面&#xff1a; 1. 确定账号类型和目标受众&#xff1a;确定要运营的短视频账号类型&#xff0c;如搞笑、美食、美妆等&#xff0c;并明确目标受众和定位。 2. 准备账号资料&#xff1a;准备相关资质和资料&#xff0c;如营业执照…

在Windows 11中,把iPhone照片和视频导出来又快又简单,无需第三方软件

如果你想将照片和视频从iPhone传输到Windows 11 PC&#xff0c;最快、最简单的方法是插入手机并执行自动导入。以下是操作方法。 如何将照片和视频从iPhone导入Windows 如果你用USB数据线将iPhone插入Windows PC&#xff0c;Windows 11可以像标准数码相机一样连接到它&#x…

nacos在win11无法正常启动,一闪而过,pause也不停止。【已解决】

问题一闪而过&#xff0c;无法抓屏。 1.首先排除配置文件和数据库问题&#xff1b; 2.问题及解决方法&#xff1a; 分析&#xff1a;startup.cmd在执行时&#xff0c;无法找到jdk&#xff1b; 解决方法&#xff1a;配置jdk到环境变量&#xff1b; 再次启动正常&#xff1b;

用Pandas轻松进行7项基本数据检查

大家好&#xff0c;作为一名数据工程师&#xff0c;面对糟糕的数据质量&#xff0c;可以使用Pandas执行快捷的数据质量检查。本文使用scikit-learn提供的California Housing数据集&#xff0c;进行基本数据检查。 一、California Housing数据集概述 【数据集】&#xff1a; …

黑苹果之显卡篇

一、什么是显卡 显卡GPU&#xff08;Video card、Display card、Graphics card、Video adapter&#xff09;是个人计算机基础的组成部分之一&#xff0c;将计算机系统需要的显示信息进行转换驱动显示器&#xff0c;并向显示器提供逐行或隔行扫描信号&#xff0c;控制显示器的正…

关键字volatile作用和用法

目录 一、多线程编程中的volatile关键字 二、嵌入式编程中的volatile关键字 三、 优化编译器优化 四、 指针类型转换 一个定义为volatile的变量是说这变量可能会被意想不到地改变&#xff0c;这样&#xff0c;编译器就不会去假设这个变量的值了。 精确地说就是&#xff0c;…

【云原生-K8s】镜像漏洞安全扫描工具Trivy部署及使用

基础介绍基础描述Trivy特点 部署在线下载百度网盘下载安装 使用扫描nginx镜像扫描结果解析json格式输出 总结 基础介绍 基础描述 Trivy是一个开源的容器镜像漏洞扫描器&#xff0c;可以扫描常见的操作系统和应用程序依赖项的漏洞。它可以与Docker和Kubernetes集成&#xff0c;…

shell命令学习(1)——(待完善)

explainshell.com shell统计当前文件夹下的文件个数、目录个数Linux之shell常用命令&#xff08;三&#xff09; sort&#xff08;排序&#xff09;、uniq&#xff08;处理重复字符&#xff09; linux中shell将换行输入到文件中 shell脚本&#xff0c;将多行内容写入文件中 f…

springboot086靓车汽车销售网站

springboot086靓车汽车销售网站 成品项目已经更新&#xff01;同学们可以打开链接查看&#xff01;需要定做的及时联系我&#xff01;专业团队定做&#xff01;全程包售后&#xff01; 2000套项目视频链接&#xff1a;https://pan.baidu.com/s/1N4L3zMQ9nNm8nvEVfIR2pg?pwd…

Javascript编程进阶 – 预定义函数

Javascript编程进阶 – 预定义函数 JavaScript Programming Advanced – Predefined Functions By JacksonML JavaScript引擎中包含了一组built-in functions(内建函数)。 本文简要介绍如何通过实践使用这些预定义函数并掌握传递参数和返回值。希望对您有所帮助。 JavaScri…

如何使用HadSky搭配内网穿透工具搭建个人论坛并发布至公网随时随地可访问

文章目录 前言1. 网站搭建1.1 网页下载和安装1.2 网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3 Cpolar稳定隧道&#xff08;本地设置&#xff09;2.4 公网访问测试 总结 前言 经过多年的基础…

【我爱C语言】详解字符函数isdigit和字符串转换函数(atoi和snprintf实现互相转换字符串)三种strlen模拟实现

&#x1f308;write in front :&#x1f50d;个人主页 &#xff1a; 啊森要自信的主页 ✏️真正相信奇迹的家伙&#xff0c;本身和奇迹一样了不起啊&#xff01; 欢迎大家关注&#x1f50d;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;>希望看完我的文章对你有小小的帮助&am…

使用Python实现轮盘赌选择法Roulette Wheel Selection Method in Python

一、引言 最近在手写遗传算法&#xff0c;想尝试解决一些优化问题。然而&#xff0c;在编码的过程中&#xff0c;自己发现了很多都不懂的问题。比如&#xff0c;交叉的操作&#xff0c;有单点交叉、两点交叉和多点交叉&#xff0c;具体选哪一种会更好呢&#xff1f;未知。还有交…

异常检测 | 基于孤立森林(Isolation Forest)的数据异常数据检测(结合t-SNE降维可视化)

异常检测 | MATLAB实现基于孤立森林的数据异常检测 目录 异常检测 | MATLAB实现基于孤立森林的数据异常检测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现基于孤立森林(Isolation Forest)的数据异常数据检测可视化&#xff08;完整源码和数据) 基于孤立森林(…