SCI一区级 | Matlab实现RIME-CNN-BiLSTM-Mutilhead-Attention多变量多步时序预测

SCI一区级 | Matlab实现RIME-CNN-BiLSTM-Mutilhead-Attention多变量多步时序预测

目录

    • SCI一区级 | Matlab实现RIME-CNN-BiLSTM-Mutilhead-Attention多变量多步时序预测
      • 预测效果
      • 基本介绍
      • 程序设计
      • 参考资料

预测效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

基本介绍

1.Matlab实现RIME-CNN-BiLSTM-Mutilhead-Attention多变量多步时序预测,开普勒算法优化学习率,卷积核大小,神经元个数,以最小MAPE为目标函数;
CNN卷积核大小:卷积核大小决定了CNN网络的感受野,即每个卷积层可以捕获的特征的空间范围。选择不同大小的卷积核可以影响模型的特征提取能力。较小的卷积核可以捕获更细粒度的特征,而较大的卷积核可以捕获更宏观的特征。
BiLSTM神经元个数:BiLSTM是一种适用于序列数据的循环神经网络,其神经元个数决定了模型的复杂性和记忆能力。较多的BiLSTM神经元可以提高模型的学习能力,但可能导致过拟合。
学习率:学习率是训练深度学习模型时的一个关键超参数,它控制每次参数更新的步长。学习率过大可能导致模型不稳定和发散,学习率过小可能导致训练过慢或陷入局部最小值。
多头自注意力层 (Multihead-Self-Attention):Multihead-Self-Attention多头注意力机制是一种用于模型关注输入序列中不同位置相关性的机制。它通过计算每个位置与其他位置之间的注意力权重,进而对输入序列进行加权求和。注意力能够帮助模型在处理序列数据时,对不同位置的信息进行适当的加权,从而更好地捕捉序列中的关键信息。在时序预测任务中,注意力机制可以用于对序列中不同时间步之间的相关性进行建模。
霜冰优化算法是2023年发表于SCI、中科院二区Top期刊《Neurocomputing》上的新优化算法,现如今还未有相关的优化算法应用文献。RIME主要对霜冰的形成过程进行模拟,将其巧妙地应用于算法搜索领域。

在这里插入图片描述

2.运行环境为Matlab2023a及以上,提供损失、RMSE迭代变化极坐标图;网络的特征可视化图;测试对比图;适应度曲线(若首轮精度最高,则适应度曲线为水平直线);
3.excel数据集(负荷数据集),输入多个特征,输出单个变量,考虑历史特征的影响,多变量多步时间序列预测(多步预测即预测下一天96个时间点),main.m为主程序,运行即可,所有文件放在一个文件夹;

在这里插入图片描述

4.命令窗口输出SSE、RMSE、MSE、MAE、MAPE、R2、r多指标评价,适用领域:负荷预测、风速预测、光伏功率预测、发电功率预测、碳价预测等多种应用。

在这里插入图片描述

程序设计

  • 完整源码和数据获取方式:私信博主回复Matlab实现RIME-CNN-BiLSTM-Mutilhead-Attention多变量多步时序预测
%% 清除内存、清除屏幕
clc
clear
%% 导入数据
data = xlsread('负荷数据.xlsx');
rng(0)
%%  数据分析
daynum=30;                                             %% 数据量较大,选取daynum天的数据
step=96;                                               %% 多步预测
data =data(end-step*daynum+1:end,:);                 
W_data  = data(:,end)';                                %% 实际值输出:每天24小时,每小时4个采样点
%%  数据归一化
[features, ~] = mapminmax(Features, 0, 1);
[w_data, ps_output]  = mapminmax(W_data, 0, 1);
%%  数据平铺为4-D
LP_Features =  double(reshape(features,fnum,step,1,daynum));    %% 特征数据格式
LP_WindData  = double(reshape(w_data,step,1,1,daynum));      %% 实际数据格式%% 格式转换为cell
NumDays  = daynum;                                         %% 数据总天数为daynum天
for i=1:NumDaysFeaturesData{1,i} = LP_Features(:,:,1,i);
endfor i=1:NumDaysRealData{1,i} = LP_WindData(:,:,1,i);
end%% 划分数据
XTrain = FeaturesData(:,1:daynum-2);                         %% 训练集输入为 1-(daynum-2)天的特征
YTrain = RealData(:,2:daynum-1);                             %% 训练集输出为 2-(daynum-1)天的实际值        Best_rime = zeros(1, dim);Best_rime_rate = inf; % 用于最大化问题,请将此值改为 -inffor i = 1:dimRimepop(:, i) = lb(i) + rand(SearchAgents_no, 1) .* (ub(i) - lb(i));   % 初始种群endLb = 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_rateBest_rime_rate = Rime_rates(1, i);Best_rime = Rimepop(i, :);bestPred = Value{i};bestNet = Net{i};bestInfo = Info{i};endend% 主循环while it <= Max_iterRimeFactor = (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_nofor j = 1:dim% 软霜冰搜索策略r1 = rand();if r1 < EnewRimepop(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)endendend

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/128577926?spm=1001.2014.3001.5501
[2] https://blog.csdn.net/kjm13182345320/article/details/128573597?spm=1001.2014.3001.5501

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

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

相关文章

npx和npm有什么区别,包管理器yarn的使用方法,node的版本管理工具nvm使用方法

文章目录 一、npx介绍及使用1、npx 是什么2、npx 会把远端的包下载到本地吗?3、npx 执行完成之后&#xff0c; 下载的包是否会被删除&#xff1f;4、npx和npm的区别 二、yarn介绍及使用1、Yarn是什么&#xff1f;2、Yarn的常见场景&#xff1a;3、Yarn常用命令 三、nvm介绍及使…

vue3基础:单文件组件介绍

介绍 Vue 的单文件组件 (即 *.vue 文件&#xff0c;简称 SFC&#xff0c;全称是single file component) 是一种特殊的文件格式&#xff0c;使我们能够将一个 Vue 组件的模板、逻辑与样式封装在单个文件中。下面是一个单文件组件的示例&#xff1a; <script> export def…

Ubuntu root 远程登录失败

背景&#xff1a;设置了两个系统用户&#xff1a;root、test&#xff1b;test可以登录&#xff0c;可以使用su 命令切换root用户登录成功&#xff1b; 但是直接用root登录&#xff0c;会报错。 查看登录日志的方法&#xff1a; 需要两个远程窗口&#xff0c;在第一个远程窗口…

日志审计系统Agent项目创建——初始化数据库和日志文件(Linux版本)

1、定义和初始化函数&#xff1a; bool Init(std::string ip); 1.1、获取ip地址&#xff0c;这里的ip地址是通过makefile文件直接设定的。 bool XAgent::Init(string ip) {if (ip.empty()){cerr << "Agent::init failed! ip is empty" << endl;return…

力扣|2023华为秋招冲刺

文章目录 第一关&#xff1a;2023 年 7 月面试题挑战第二关&#xff1a;2023 年 6 月面试题挑战第三关&#xff1a;2023 年 5 月面试题挑战 第一关&#xff1a;2023 年 7 月面试题挑战 class Solution { public:void reverseWord(vector<char>& s,int l,int r){for(i…

单片机学习记录(一)

简答题 第1章 1.微处理器、微计算机、CPU、单片机、嵌入式处理器他们之间有何区别&#xff1f; 答&#xff1a;微处理器、CPU都是中央处理器的不同称谓&#xff0c;微处理器芯片本身不是计算机&#xff1b; 单片机、微计算机都是一个完整的计算机系统&#xff0c;单片机是集…

关于Python里xlwings库对Excel表格的操作(三十二)

这篇小笔记主要记录如何【如何使用“Chart类”、“Api类"和“Axes函数”设置坐标轴标题文本内容】。 前面的小笔记已整理成目录&#xff0c;可点链接去目录寻找所需更方便。 【目录部分内容如下】【点击此处可进入目录】 &#xff08;1&#xff09;如何安装导入xlwings库…

建筑钢筋表面为什么加上螺纹呢?

问题描述&#xff1a; 建筑钢筋表面为什么加上螺纹呢&#xff1f; 问题解答&#xff1a; 增加黏附力&#xff1a; 螺纹结构提供更多摩擦力&#xff0c;加强钢筋与混凝土之间的粘附&#xff0c;防止滑动或剥离&#xff0c;提高结构的稳定性和强度。 提高抗拉强度&#xff1a;…

监督学习 - 多层感知机回归(Multilayer Perceptron Regression,MLP Regression)

什么是机器学习 多层感知机回归&#xff08;Multilayer Perceptron Regression&#xff0c;MLP Regression&#xff09;是一种人工神经网络&#xff08;Artificial Neural Network&#xff0c;ANN&#xff09;的形式&#xff0c;用于解决回归问题。多层感知机是一种包含多个层…

《安富莱嵌入式周报》第330期:开源ECU模组,开源USB PD供电SMD回流焊,嵌入式系统开发C代码参考指南,旨在提升C语言编写的源码质量

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 更新一期视频教程 BSP视频教程第29期&#xff1a;J1939协议栈CAN总线专题&#xff0c;源码框架&#xff0c;执行流程和…

使用Sqoop将数据从Hadoop导出到关系型数据库

当将数据从Hadoop导出到关系型数据库时&#xff0c;Apache Sqoop是一个非常有用的工具。Sqoop可以轻松地将大数据存储中的数据导出到常见的关系型数据库&#xff0c;如MySQL、Oracle、SQL Server等。本文将深入介绍如何使用Sqoop进行数据导出&#xff0c;并提供详细的示例代码&…

【笔记】Helm-3 主题-3 Chart Test

Chart Test Chart包含了很多一起工作的Kubernetes资源和组件。作为一个chart作者&#xff0c;您可能想写一些测试验证chart安装时是否按照预期工作。这些测试同时可以帮助chart用户理解您的chart在做什么。 test在heml chart中放在templates/目录&#xff0c;并且是一个指定了…

Python web自动化测试框架搭建(功能接口)——通用模块

1、通用模块&#xff1a; config.conf: 公共配置文件&#xff0c;配置报告、日志、截图路径&#xff0c;以及邮件相关配置 [report] reportpath E:\workspace\WebAutomation\src\functiontest\Report\2017-07-18 screen_path E:\workspace\WebAutomation\src\functiontest\R…

电脑/设备网络共享给其他设备上网

文章目录 一、概述二、设置网络共享2.1 电脑可以上网&#xff0c;通过网络共享让其他设备也可以上网2.2 手机如何使用USB数据线共享网络给电脑 一、概述 现在有如下几种情况&#xff1a; 设备本身不能上网&#xff0c;需要通过电脑上网 笔记本WIFI连热点上网&#xff0c;然后…

C#,卡特兰数(Catalan number,明安图数)的算法源代码

一、概要 卡特兰数&#xff08;英语&#xff1a;Catalan number&#xff09;&#xff0c;又称卡塔兰数、明安图数&#xff0c;是组合数学中一种常出现于各种计数问题中的数列。以比利时的数学家欧仁查理卡特兰的名字来命名。1730年左右被蒙古族数学家明安图使用于对三角函数幂…

【Git不走弯路】(一)版本管理需求分析

1. 什么是版本 在计算机中&#xff0c;版本就是备份。备份是计算机中的“后悔药”&#xff0c;可以在任何需要的时候将数据从以前的备份中原样取出。备份和快照、还原点是相似的东西。计算机词汇每年都层出不穷&#xff0c;很多词汇背后的原理却简单朴素。 2. 版本管理的必要…

运动模型非线性扩展卡尔曼跟踪融合滤波算法(Matlab仿真)

卡尔曼滤波的原理和理论在CSDN已有很多文章&#xff0c;这里不再赘述&#xff0c;仅分享个人的理解和Matlab仿真代码。 1 单目标跟踪 匀速转弯&#xff08;CTRV&#xff09;运动模型下&#xff0c;摄像头输出目标状态camera_state [x, y, theta, v]&#xff0c;雷达输出目标状…

【软件测试】学习笔记-代码级测试的基本理念与方法

通常情况下&#xff0c;代码级测试的工作都是由开发人员完成&#xff0c;但是测试框架选型、覆盖率统计工具选型、测试用例设计原则等都需要资深的测试工程师或者测试架构师参与。 为了能更好地协助开发人员做好代码级测试&#xff0c;这篇文章是根据实际工程项目中的实践&…

js逆向第19例:猿人学第17题天杀的Http2.0

文章目录 一、前言二、定位关键参数三、代码实现四、参考文献一、前言 任务十七:抓取这5页的数字,计算加和并提交结果 题目已经给出来标准答案,而且此题设置为“非常简单”其关键就是HTTP/2.0请求,打开控制台查看请求接口数据如下: 二、定位关键参数 可以看到控制台显示…

Linux系统——DNS解析详解

目录 一、DNS域名解析 1.DNS的作用 2.域名的组成 2.1域名层级结构关系特点 2.2域名空间构成 2.3域名的四种不同类型 2.3.1延伸 2.3.2总结 3.DNS域名解析过程 3.1递归查询 3.2迭代查询 3.3一次DNS解析的过程 4.DNS系统类型 4.1缓存域名服务器 4.2主域名服务器 4…