NGO-CNN-BiGRU-Attention北方苍鹰算法优化卷积双向门控循环单元时间序列预测,含优化前后对比

NGO-CNN-BiGRU-Attention北方苍鹰算法优化卷积双向门控循环单元时间序列预测,含优化前后对比

目录

    • NGO-CNN-BiGRU-Attention北方苍鹰算法优化卷积双向门控循环单元时间序列预测,含优化前后对比
      • 预测效果
      • 基本介绍
      • 模型描述
      • 程序设计
      • 参考资料

预测效果

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

基本介绍

1.Matlab实现NGO-CNN-BiGRU-Attention北方苍鹰算法优化卷积双向门控循环单元融合注意力机制时间序列预测,含优化前后对比,要求Matlab2023版以上;
2.单变量时间序列预测;
3.data为数据集,main.m为主程序,运行即可,所有文件放在一个文件夹;
4.命令窗口输出R2、MSE、MAE、MAPE和RMSE多指标评价;
5.算法优化学习率,神经元个数,注意力机制的键值, 卷积核个数。

模型描述

NGO-CNN-BiGRU-Attention北方苍鹰算法优化卷积双向门控循环单元时间序列预测,含优化前后对比。

下面是这个模型的主要组成部分和工作流程的简要说明:

数据预处理:首先,对时间序列数据进行预处理。划分训练集和测试集等。

卷积神经网络(CNN):通过使用CNN,模型可以自动学习输入数据的空间特征。CNN通常由多个卷积层和池化层组成,可以有效地提取输入数据的局部特征。

双向门控循环单元(BiGRU):双向门控循环单元是一种适用于序列数据建模的循环神经网络(RNN)变体。双向门控循环单元具有记忆单元和门控机制,可以捕捉输入数据的长期依赖关系。通过双向门控循环单元层,模型可以学习序列数据的时间依赖性。

多头注意力机制(Mutilhead Attention):多头注意力机制允许模型同时关注输入序列的不同部分。它通过将序列数据映射到多个子空间,并计算每个子空间的注意力权重来实现这一点。这样可以提高模型对不同时间步和特征之间关系的建模能力。

北方苍鹰算法优化:北方苍鹰算法是一种基于群体智能的优化算法,可以用于调整模型的超参数和优化训练过程。通过应用北方苍鹰算法算法,可以提高模型的性能和收敛速度。

融合和预测:最后,通过融合CNN、LSTM和多头注意力机制的输出,模型可以生成对未来时间步的多变量时间序列的预测。

需要注意的是,这是一种概念性的模型描述,具体实现的细节可能因应用场景和数据特征而有所不同。模型的性能和效果还需要根据具体问题进行评估和调优。

程序设计

  • 完整源码和数据获取方式NGO-CNN-BiGRU-Attention北方苍鹰算法优化卷积双向门控循环单元时间序列预测,含优化前后对比。



layers0 = [ ...
    % 输入特征
    sequenceInputLayer([numFeatures,1,1],'name','input')   %输入层设置
    sequenceFoldingLayer('name','fold')         %使用序列折叠层对图像序列的时间步长进行独立的卷积运算。
    % CNN特征提取
    convolution2dLayer([3,1],16,'Stride',[1,1],'name','conv1')  %添加卷积层,641表示过滤器大小,10过滤器个数,Stride是垂直和水平过滤的步长
    batchNormalizationLayer('name','batchnorm1')  % BN层,用于加速训练过程,防止梯度消失或梯度爆炸
    reluLayer('name','relu1')       % ReLU激活层,用于保持输出的非线性性及修正梯度的问题
      % 池化层
    maxPooling2dLayer([2,1],'Stride',2,'Padding','same','name','maxpool')   % 第一层池化层,包括3x3大小的池化窗口,步长为1,same填充方式
    % 展开层
    sequenceUnfoldingLayer('name','unfold')       %独立的卷积运行结束后,要将序列恢复
    %平滑层
    flattenLayer('name','flatten')
    
    lstmLayer(25,'Outputmode','last','name','hidden1') 
    selfAttentionLayer(2,2)          %创建2个头,2个键和查询通道的自注意力层  
    dropoutLayer(0.1,'name','dropout_1')        % Dropout层,以概率为0.2丢弃输入

    fullyConnectedLayer(1,'name','fullconnect')   % 全连接层设置(影响输出维度)(cell层出来的输出层) %
    regressionLayer('Name','output')    ];
    
lgraph0 = layerGraph(layers0);
lgraph0 = connectLayers(lgraph0,'fold/miniBatchSize','unfold/miniBatchSize');
pNum = round( pop *  P_percent );    % The population size of the producers   


lb= c.*ones( 1,dim );    % Lower limit/bounds/     a vector
ub= d.*ones( 1,dim );    % Upper limit/bounds/     a vector
%Initialization
for i = 1 : pop
    
    x( i, : ) = lb + (ub - lb) .* rand( 1, dim );  
    fit( i ) = fobj( x( i, : ) ) ;                       
end

pFit = fit;                       
pX = x; 
 XX=pX;    
[ fMin, bestI ] = min( fit );      % fMin denotes the global optimum fitness value
bestX = x( bestI, : );             % bestX denotes the global optimum position corresponding to fMin

 % Start updating the solutions.
for t = 1 : M    
       
        [fmax,B]=max(fit);
        worse= x(B,:);   
       r2=rand(1);
 
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    for i = 1 : pNum    
        if(r2<0.9)
            r1=rand(1);
          a=rand(1,1);
          if (a>0.1)
           a=1;
          else
           a=-1;
          end
    x( i , : ) =  pX(  i , :)+0.3*abs(pX(i , : )-worse)+a*0.1*(XX( i , :)); % Equation (1)
       else
            
           aaa= randperm(180,1);
           if ( aaa==0 ||aaa==90 ||aaa==180 )
            x(  i , : ) = pX(  i , :);   
           end
         theta= aaa*pi/180;   
       
       x(  i , : ) = pX(  i , :)+tan(theta).*abs(pX(i , : )-XX( i , :));    % Equation (2)      

        end
      
        x(  i , : ) = Bounds( x(i , : ), lb, ub );    
        fit(  i  ) = fobj( x(i , : ) );
    end 
 [ fMMin, bestII ] = min( fit );      % fMin denotes the current optimum fitness value
  bestXX = x( bestII, : );             % bestXX denotes the current optimum position 

 R=1-t/M;                           %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 Xnew1 = bestXX.*(1-R); 
     Xnew2 =bestXX.*(1+R);                    %%% Equation (3)
   Xnew1= Bounds( Xnew1, lb, ub );
   Xnew2 = Bounds( Xnew2, lb, ub );
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     Xnew11 = bestX.*(1-R); 
     Xnew22 =bestX.*(1+R);                     %%% Equation (5)
   Xnew11= Bounds( Xnew11, lb, ub );
    Xnew22 = Bounds( Xnew22, lb, ub );
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
    for i = ( pNum + 1 ) :12                  % Equation (4)
     x( i, : )=bestXX+((rand(1,dim)).*(pX( i , : )-Xnew1)+(rand(1,dim)).*(pX( i , : )-Xnew2));
   x(i, : ) = Bounds( x(i, : ), Xnew1, Xnew2 );
  fit(i ) = fobj(  x(i,:) ) ;
   end

参考资料

[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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序Webview与H5通信

背景 近期有个微信小程序需要用到web-view嵌套H5的场景&#xff0c;该应用场景需要小程序中频繁传递数据到H5进行渲染&#xff0c;且需要保证页面不刷新。 由于微信小程序与H5之间的通信限制比较大&#xff0c;显然无法满足于我的业务场景 探索 由于微信小程序与webview的环境是…

18. C++STL 4(vector的使用, 空间增长, 迭代器失效详解)

⭐本篇重点&#xff1a;vector容器的使用详解 ⭐本篇代码&#xff1a;c学习/08.vector_test 橘子真甜/c-learning-of-yzc - 码云 - 开源中国 (gitee.com) 目录 一. vector的介绍 二. vector的使用 2.1 vector的定义 * 2.2 vector的迭代器和遍历 a operator[]访问 b vect…

NAT拓展

NAT ALG&#xff08;NAT应用级网&#xff09; 为某些应用层协议&#xff0c;因为其报文内容可能携带IP相关信息&#xff0c;而普通NAT转化无法将这些IP转化&#xff0c;从而导致协议无法正常运行 例如FTP&#xff0c;DHCP&#xff0c;RSTP&#xff0c;ICMP&#xff0c;IPSEC…

私有库gitea安装

一 gitea是什么 Gitea是一款自助Git服务&#xff0c;简单来说&#xff0c;就是可以一个私有的github。 搭建很容易。 Gitea依赖于Git。 类似Gitea的还有GitHub、Gitee、GitLab等。 以下是安装步骤。 二 安装sqilite 参考&#xff1a; 在windows上安装sqlite 三 安装git…

从零开始理解JVM:对象的生命周期之对象销毁(垃圾回收)

一、JVM参数 在学垃圾回收器之前&#xff0c;我们先要知道&#xff0c;jvm参数是怎么回事。因为配置各种回收器&#xff0c;必须对应各种参数设置。 标准参数&#xff08;-&#xff09; 所有的JVM实现都必须实现这些参数的功能&#xff0c;而且向后兼容 -help-version 非标准参…

C# 数据类型详解:掌握数据类型及操作为高效编码奠定基础

本文将带你深入了解C#中各种数据类型的特点、用途和最佳实践&#xff0c;让你不仅能熟练运用基本类型&#xff0c;还能掌握如何在实际项目中做出最合适的选择。 目录 C#基本语法 C#数据类型 C#类型转换 C#变量常量 C#基本语法 在学习C#之前我们要先知道C#的基础构建是由哪些…

后端-mybatis的多对多

首先准备两张表学生表和课程表&#xff0c;一个学生可以选多个课程&#xff0c;一门课程也可以被多个学生选择。 再建一个学生表和课程表的中间表&#xff0c;包含学生id和课程id。 我们拿查询所有学生 和他们所选的课程为例&#xff0c;写多对多&#xff08;其实就是一对多&a…

05《存储器层次结构与接口》计算机组成与体系结构 系列课

目录 存储器层次结构概述 层次结构的定义 存储器的排名 存储器接口 处理器与存储器的速度匹配 存储器接口的定义 存储器访问命中率 两种接口 第1种方式&#xff1a;并行 命中率的计算 存储器访问时间 第2种方式&#xff1a;逐级 结语 大家好&#xff0c;欢迎回来。…

软件测试——性能测试工具JMeter

1.JMeter介绍 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。JMeter小巧轻便且免费&#xff0c;逐渐成为了主流的性能测试工具&#xff0c;是每个测试人员都必须要掌握的工具之一。 环境要求&#xff1a; ​ 需要Java8或者更高的版本。 1.1 JMeter的下…

ARP表、MAC表、路由表的区别和各自作用

文章目录 ARP表、MAC表、路由表的区别和各自作用同一网络内:ARP表request - 请求reply - 响应 MAC地址在同一网络内,交换机如何工作? 不同网络路由表不同网络通信流程PC1到路由器路由器到PC2 简短总结 ARP表、MAC表、路由表的区别和各自作用 同一网络内: ARP作用: 让发送方知…

【Azure Cache for Redis】Redis的导出页面无法配置Storage SAS时通过az cli来完成

问题描述 在Azure Redis的导出页面&#xff0c;突然不能配置Storage Account的SAS作为授权方式。 image.png 那么是否可以通过AZ CLI或者是Powershell来实现SAS的配置呢&#xff1f; 问题解答 可以的。使用 az redis export 可以实现 az redis export --container --prefix[--a…

【AI系统】昇腾 AI 架构介绍

昇腾 AI 架构介绍 昇腾计算的基础软硬件是产业的核⼼&#xff0c;也是 AI 计算能⼒的来源。华为&#xff0c;作为昇腾计算产业⽣态的⼀员&#xff0c;是基础软硬件系统的核⼼贡献者。昇腾计算软硬件包括硬件系统、基础软件和应⽤使能等。 而本书介绍的 AI 系统整体架构&#…

transformers microsoft--table-transformer 表格识别

一、安装包 pip install transformers pip install torch pip install SentencePiecepip install timm pip install accelerate pip install pytesseract pillow pandas pip install tesseract 下载模型&#xff1a; https://huggingface.co/microsoft/table-transformer-s…

给UE5优化一丢丢编辑器性能

背后的原理 先看FActorIterator的定义 /*** Actor iterator* Note that when Playing In Editor, this will find actors only in CurrentWorld*/ class FActorIterator : public TActorIteratorBase<FActorIterator> {//..... }找到基类TActorIteratorBase /*** Temp…

Q3营收同比增22.4%,即时配送高质量增长的美团未来何在?

首先&#xff0c;美团核心本地商业的稳健发展为其未来奠定了坚实的基础。核心本地商业营收达694亿元&#xff0c;同比增长20.2%&#xff0c;这显示出美团在本地生活服务领域的强大竞争力。随着中国经济的高质量发展和消费信心的提升&#xff0c;美团的年交易用户数、年活跃商户…

基于R语言森林生态系统结构、功能与稳定性分析与可视化

在生态学研究中&#xff0c;森林生态系统的结构、功能与稳定性是核心研究内容之一。这些方面不仅关系到森林动态变化和物种多样性&#xff0c;还直接影响森林提供的生态服务功能及其应对环境变化的能力。森林生态系统的结构主要包括物种组成、树种多样性、树木的空间分布与密度…

2024 ccpc 辽宁省赛 E(构造 思维?)L(二分+一点点数论知识?)

E 题意&#xff1a; 可以注意到&#xff1a; 我的两种方格都四个方格的大小。 所以 如果存在一种摆放方式 那么 4|nm。 再考虑一种特殊的情况 22 &#xff0c;此时虽然我的积是4 但是无法摆放的。 1>对于 4 | n,或者 4 | m.我直接摆放第二种方格就可以了。 如果我n 是4 的…

Leetcode 二叉树的锯齿形层序遍历

算法思想&#xff1a; 这段代码实现了 二叉树的锯齿形层序遍历&#xff0c;其核心思想是基于广度优先搜索&#xff08;BFS&#xff09;进行层序遍历&#xff0c;并根据当前层数决定从左到右或从右到左的顺序来组织每一层的节点值。 level.add 和 level.addFirst 有点类似单链…

c++哈希表(原理、实现、开放寻址法)适合新手

c系列哈希的原理及实现&#xff08;上&#xff09; 文章目录 c系列哈希的原理及实现&#xff08;上&#xff09;前言一、哈希的概念二、哈希冲突三、哈希冲突解决3.1、开放寻址法3.2、删除操作3.3、负载因子四、代码实现 总结 前言 红黑树平衡树和哈希有不同的用途。 红黑树、…

用MATLAB符号工具建立机器人的动力学模型

目录 介绍代码功能演示拉格朗日方法回顾求解符号表达式数值求解 介绍 开发机器人过程中经常需要用牛顿-拉格朗日法建立机器人的动力学模型&#xff0c;表示为二阶微分方程组。本文以一个二杆系统为例&#xff0c;介绍如何用MATLAB符号工具得到微分方程表达式&#xff0c;只需要…