SCI一区级 | Matlab实现GWO-CNN-BiLSTM-selfAttention多变量多步时间序列预测

news2024/11/25 20:25:19

SCI一区级 | Matlab实现GWO-CNN-BiLSTM-selfAttention多变量多步时间序列预测

目录

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

预测效果

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

在这里插入图片描述

基本介绍

1.Matlab实现GWO-CNN-BiLSTM-selfAttention灰狼算法优化卷积双向长短期记忆神经网络融合自注意力机制多变量多步时间序列预测,灰狼算法优化学习率,卷积核大小,神经元个数,以最小MAPE为目标函数;
在这里插入图片描述

自注意力层 (Self-Attention):Self-Attention自注意力机制是一种用于模型关注输入序列中不同位置相关性的机制。它通过计算每个位置与其他位置之间的注意力权重,进而对输入序列进行加权求和。自注意力能够帮助模型在处理序列数据时,对不同位置的信息进行适当的加权,从而更好地捕捉序列中的关键信息。在时序预测任务中,自注意力机制可以用于对序列中不同时间步之间的相关性进行建模。

在这里插入图片描述
2.运行环境为Matlab2023a及以上,提供损失、RMSE迭代变化极坐标图;网络的特征可视化图;测试对比图;适应度曲线(若首轮精度最高,则适应度曲线为水平直线);

3.excel数据集(负荷数据集),输入多个特征,输出单个变量,考虑历史特征的影响,多变量多步时间序列预测(多步预测即预测下一天96个时间点),main.m为主程序,运行即可,所有文件放在一个文件夹;

在这里插入图片描述
4.命令窗口输出SSE、RMSE、MSE、MAE、MAPE、R2、r多指标评价;
适用领域:负荷预测、风速预测、光伏功率预测、发电功率预测、碳价预测等多种应用。

程序设计

  • 完整程序和数据获取方式:私信博主回复Matlab实现GWO-CNN-BiLSTM-selfAttention多变量多步时间序列预测获取。

%---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
% Grey Wolf Optimizer
% 灰狼优化算法

function [Alpha_score, Alpha_pos, Convergence_curve, bestPred,bestNet,bestInfo ] = GWO(SearchAgents_no, Max_iter, lb, ub, dim, fobj)
% 输入参数:
% SearchAgents_no:搜索个体的数量
% Max_iter:最大迭代次数
% lb:搜索空间的下界(一个1维向量)
% ub:搜索空间的上界(一个1维向量)
% dim:问题的维度
% fobj:要优化的目标函数,输入为一个位置向量,输出为一个标量

% 初始化alpha、beta和delta的位置向量
Alpha_pos = zeros(1, dim);
Alpha_score = inf; % 对于最小化问题,请将其改为-inf

Beta_pos = zeros(1, dim);
Beta_score = inf; % 对于最小化问题,请将其改为-inf

Delta_pos = zeros(1, dim);
Delta_score = inf; % 对于最小化问题,请将其改为-inf

% 初始化领导者的位置向量和得分

Positions = ceil(rand(SearchAgents_no, dim) .* (ub - lb) + lb);

Convergence_curve = zeros(1, Max_iter);

l = 0; % 迭代计数器

% 主循环
while l < Max_iter
    for i = 1:size(Positions, 1)
        % 将超出搜索空间边界的搜索代理放回搜索空间内
        Flag4ub = Positions(i, :) > ub;
        Flag4lb = Positions(i, :) < lb;
        Positions(i, :) = (Positions(i, :) .* (~(Flag4ub + Flag4lb))) + ub .* Flag4ub + lb .* Flag4lb;

        % 计算每个搜索个体的目标函数值
        [fitness,Value,Net,Info] = fobj(Positions(i, :));

        % 更新Alpha、Beta和Delta的位置向量
        if fitness < Alpha_score
            Alpha_score = fitness;       % 更新Alpha的得分
            Alpha_pos = Positions(i, :); % 更新Alpha的位置向量
            bestPred = Value;
            bestNet = Net;
            bestInfo = Info;
        end

        if fitness > Alpha_score && fitness < Beta_score
            Beta_score = fitness;       % 更新Beta的得分
            Beta_pos = Positions(i, :); % 更新Beta的位置向量
        end

        if fitness > Alpha_score && fitness > Beta_score && fitness < Delta_score
            Delta_score = fitness;       % 更新Delta的得分
            Delta_pos = Positions(i, :); % 更新Delta的位置向量
        end
    end

    a = 2 - l * ((2) / Max_iter); % a从2线性减少到0

    % 更新搜索个体的位置向量
    for i = 1:size(Positions, 1)
        for j = 1:size(Positions, 2)
            r1 = rand(); % r1是[0,1]区间的随机数
            r2 = rand(); % r2是[0,1]区间的随机数

            A1 = 2 * a * r1 - a; % 参考文献中的公式(3.3)
            C1 = 2 * r2; % 参考文献中的公式(3.4)

            D_alpha = abs(C1 * Alpha_pos(j) - Positions(i, j)); % 参考文献中的公式(3.5)-part 1
            X1 = Alpha_pos(j) - A1 * D_alpha; % 参考文献中的公式(3.6)-part 1

            r1 = rand();
            r2 = rand();

参考资料

[1] http://t.csdn.cn/pCWSp
[2] https://download.csdn.net/download/kjm13182345320/87568090?spm=1001.2014.3001.5501
[3] https://blog.csdn.net/kjm13182345320/article/details/129433463?spm=1001.2014.3001.5501

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

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

相关文章

通过误差改变控制的两种策略

如果反馈误差越来越大&#xff0c;需要改变调节方向以减小误差并实现更好的控制。以下是两种常见的调节方向改变的方法&#xff1a; PID控制器中的积分限制&#xff1a;在PID控制中&#xff0c;积分项可以用来减小稳态误差。然而&#xff0c;当反馈误差持续增大时&#xff0c;积…

java打包到docker,以及idea远程调试

这里主要介绍 dockerfile的打包方式 一、打包jar包到容器 1. 在要打包的项目中创建dockerfile&#xff0c;dockerfile与项目的pom.xml是同级 2. 编辑dockerfile文件 FROM openjdk:8 VOLUME ["/data/untitled"] COPY target/untitled-1.0.jar "/app.jar"…

Spring Boot 整合 xxl-job 保姆级教程!

文章目录 介绍使用初始化“调度数据库”配置调度中心配置“执行器项目”调度任务 介绍 首先我们介绍一下什么是xxl-job&#xff0c;根据官方定义&#xff0c;XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码…

Kubersphere应用【二】Docker安装

一、Docker安装 1.下载Docker安装包 【地址】Index of linux/static/stable/x86_64/ 2.上传至服务器 # 解压文件 tar -xvf docker-20.10.10.tgz# 将docker 目录中的所有文件复制至/usr/bin/目录下 cp docker/* /usr/bin 3.配置docker.service文件 vim /usr/lib/systemd/sy…

树莓派 5 - Raspberry Pi 5 入门教程

系列文章目录 文章目录 ​​​​​​​ 前言 如果您是第一次使用 Raspberry Pi&#xff0c;请参阅我们的入门指南&#xff08;how to get started&#xff09;。 Raspberry Pi 5 Raspberry Pi 5 配备了运行频率为 2.4GHz 的 64 位四核 Arm Cortex-A76 处理器&#xff0c;CPU 性…

Python os模块及用法

os 模块代表了程序所在的操作系统&#xff0c;主要用于获取程序运行所在操作系统的相关信息。 在 Python 的交互式解释器中先导入 os 模块&#xff0c;然后输入 os.__all__ 命令&#xff08;__all__ 变量代表了该模块开放的公开接口&#xff09;&#xff0c;即可看到该模块所包…

AIGC专题报告:AIGC助力大规模对象存储服务OSS的能效提升

今天分享的AIGC系列深度研究报告&#xff1a;《AIGC专题报告&#xff1a;AIGC助力大规模对象存储服务OSS的能效提升》。 &#xff08;报告出品方&#xff1a;全球软件开发大会&#xff09; 报告共计&#xff1a;18页 结合AI的智能运维助力能效提升 场景1&#xff1a;通过 AI…

C++实现进程端口网络数据接收系统设计示例程序

一、问题描述 最近做了一道简单的系统设计题&#xff0c;大概描述如下&#xff1a; 1.一个进程可以绑定多个端口&#xff0c;用于监听接收网络中的数据&#xff0c;但是一个端口只能被一个进程占用 2.1 < pid < 65535, 1 < port < 100000, 1 < topNum < 5, …

二维码智慧门牌管理系统升级解决方案:数字鉴权

文章目录 前言一、数字鉴权的核心机制二、数字鉴权的意义和应用 前言 随着科技的飞速发展&#xff0c;我们的生活逐渐进入数字化时代。在这个数字化的过程中&#xff0c;数据的安全性和门牌信息的保障变得至关重要。今天&#xff0c;我们要介绍的是二维码智慧门牌管理系统升级…

JavaWeb(十一)

一、会话跟踪技术的概述 1.1、会话的概念 用户打开浏览器&#xff0c;访问web服务器的资源&#xff0c;会话建立&#xff0c;直到有一方断开连接&#xff0c;会话结束。在一次会话中可以包含多次请求和响应。 从浏览器发出请求到服务端响应数据给前端之后&#xff0c;一次会话…

工业主板和消费主板的区别

消费类主板是用于家庭和个人计算机的批量生产的通用主板。另一方面&#xff0c;工业主板则用于工厂、制造设备、医疗设备、公共基础设施以及其他重视可靠性的场所。 工业主板的特点 工业主板有以下四个主要特点。 长期稳定供应 高可靠性 耐环境性 可定制 工业应用需要主…

044:vue中引用json数据的方法

第044个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

在vscode下将ipynb文件转成markdown(.md文件)的方法

在vscode下将ipynb文件转成markdown&#xff08;.md文件&#xff09;的方法 写在最前面安装nbconvert工具vscode界面 or cmd终端基本命令将ipynb文件转换成md文件 总结 写在最前面 VSCode作为一款强大的代码编辑器&#xff0c;提供了广泛的功能。它支持多种文件格式的编辑和查…

387.字符串中的第一个唯一字符 —> `size()`

解答&#xff1a; int firstUniqChar(string s) {int size s.size();// char count[26] { 0 };// error.1int count[26] { 0 };// for (int i 0; i < s.size() - 1; i) // error.2for (int i 0; i < size; i){count[s[i] - a] 1;}for (int i 0; i < size; i){…

promethesu告警规则配置,alertmanager通过webhook通知

文章目录 前言一、promethesu告警二、告警配置编写rule文件prometheus配置prometheus产生告警 三、告警通知prometheus 配置 alertmanageralertmanager 配置 webhook通知编写接口接收 webhook 总结 前言 如果没有学习过prometheus的基础和监控的同学&#xff0c;可以先过一遍这…

C/C++端口复用SO_REUSEADDR(setsockopt参数),test ok

端口复用最常用的用途应该是防止服务器重启时之前绑定的端口还未释放或者程序突然退出而系统没有释放端口。这种情况下如果设定了端口复用&#xff0c;则新启动的服务器进程可以直接绑定端口。如果没有设定端口复用&#xff0c;绑定会失败&#xff0c;提示ADDR已经在使用中——…

StoneDB-8.0-V2.2.0 企业版正式发布!性能优化,稳定性提升,持续公测中!

​ 11月&#xff0c;StoneDB 新版本如期而至&#xff0c;这一个月来我们的研发同学加班加点&#xff0c;持续迭代&#xff1a;在 2.2.0 版本中&#xff0c;我们针对用户提出的需求和做出了重量级更新&#xff0c;修复了一些已知和用户反馈的 Bug&#xff0c;同时对部分代码进行…

docker学习(四、修改容器创建新的镜像推送到云上)

镜像是只读的&#xff0c;容器是可编辑的。Docker镜像是分层的&#xff0c;支持通过扩展镜像&#xff0c;创建新的镜像。 学到这里感觉docker跟git很想~~ 通过docker commit将修改的容器做成新的镜像 # 将容器做成新的镜像 docker commit -m"提交备注" -a"作…

结构化布线系统

满足下列需求&#xff1a; 1.标准化&#xff1a;国际、国家标准。 2.实用性&#xff1a;针对实际应用的需要和特点来建设系统。 3.先进性&#xff1a;采用国际最新技术。5-10年内技术不落后。 4.开放性&#xff1a;整个系统的开放性。 5.结构化、层次化&#xff1a;易于管理和维…

Nginx+Promtail+Loki+Grafana 升级ELK强大工具

最近客户有个新需求,就是想查看网站的访问情况,由于网站没有做google的统计和百度的统计,所以访问情况,只能通过日志查看,通过脚本的形式给客户导出也不太实际,给客户写个简单的页面,咱也做不到 成熟的日志解决方案,那就是ELK,还有现在比较火的Loki,(当然还有很多其…