SCI一区 | MFO-CNN-LSTM-Mutilhead-Attention多变量时间序列预测(Matlab)

devtools/2024/9/22 16:35:46/

MutilheadAttentionMatlab_0">SCI一区 | MFO-CNN-LSTM-Mutilhead-Attention多变量时间序列预测(Matlab)

目录

预测效果

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

在这里插入图片描述

在这里插入图片描述

基本介绍

1.Matlab实现MFO-CNN-LSTM-Mutilhead-Attention飞蛾扑火算法优化卷积长短期记忆神经网络融合多头注意力机制多变量时间序列预测,要求Matlab2023版以上;
2.输入多个特征,输出单个变量,考虑历史特征的影响,多变量时间序列预测
3.data为数据集,main.m为主程序,运行即可,所有文件放在一个文件夹;
4.命令窗口输出R2、MSE、MAE、MAPE和RMSE多指标评价;
5.飞蛾扑火算法优化学习率,神经元个数,注意力机制的键值, 卷积核个数。

程序设计

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   for t=1:MaxIt%%               1- select_space [pop BestSol s1(t)]=select_space(fobj,pop,nPop,BestSol,low,high,dim);%%                2- search in space[pop BestSol s2(t)]=search_space(fobj,pop,BestSol,nPop,low,high);%%                3- swoop[pop BestSol s3(t)]=swoop(fobj,pop,BestSol,nPop,low,high);Convergence_curve(t)=BestSol.cost;disp(num2str([t BestSol.cost]))ed=cputime;timep=ed-st;
end
function [pop BestSol s1]=select_space(fobj,pop,npop,BestSol,low,high,dim)
Mean=mean(pop.pos);
% Empty Structure for Individuals
empty_individual.pos = [];
empty_individual.cost = [];
lm= 2;
s1=0;
for i=1:npopnewsol=empty_individual;newsol.pos= BestSol.pos+ lm*rand(1,dim).*(Mean - pop.pos(i,:));newsol.pos = max(newsol.pos, low);newsol.pos = min(newsol.pos, high);newsol.cost=fobj(newsol.pos);if newsol.cost<pop.cost(i)pop.pos(i,:) = newsol.pos;pop.cost(i)= newsol.cost;s1=s1+1;if pop.cost(i) < BestSol.costBestSol.pos= pop.pos(i,:);BestSol.cost=pop.cost(i); endend
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


http://www.ppmy.cn/devtools/27999.html

相关文章

精准农业:利用机器学习优化作物产量

&#x1f33f; 精准农业&#xff1a;利用机器学习优化作物产量 &#x1f31f; 引言 精准农业通过应用先进的数据分析技术&#xff0c;能够提高作物产量&#xff0c;减少资源浪费&#xff0c;并实现农业的可持续发展。机器学习作为数据分析的强大工具&#xff0c;在精准农业中…

Python数据分析系列(五):python数据结构 — Pandas中的Series使用

文章目录 前言一、Series创建与属性二、Series的索引三、Series的基本运算四、Series的数据对齐五、Series操作1、判断是否是唯一值2、判断值3、值计数4、缺失值处理1、滤除缺失数据2、填充缺失数据5、日期时间列中提取月份和年份前言 Pandas 是基于 NumPy 的一种工具,该工具…

17 大数据定制篇-shell编程

第 17 章大数据定制篇-Shell 编程 17.1 为什么要学习 Shell 编程 Linux 运维工程师在进行服务器集群管理时&#xff0c;需要编写 Shell 程序来进行服务器管理。 对于 JavaEE 和 Python 程序员来说&#xff0c;工作的需要&#xff0c;你的老大会要求你编写一些 Shell 脚本进行…

如何在TestNG中恢复失败的测试用例?

有时&#xff0c;案例失败&#xff0c;不是因为应用程序错误&#xff0c;而是因为意外事件&#xff0c;如浏览器问题&#xff0c;网络滞后等&#xff0c;现在&#xff0c;我们可能需要重新验证失败的案例&#xff0c;看看这些意外事件是否仍然存在。TestNG为我们提供了一些方法…

FFMpeg - macOS build 报错 : xcrun -sdk iphoneos clang ...

文章目录 报错1&#xff1a;xcrun -sdk iphoneos clang is unable to create an executable file报错 2 &#xff1a; error: unknown type name AudioDeviceID; 在 macOS 上使用 https://github.com/kewlbear/FFmpeg-iOS-build-script 脚本&#xff0c;运行 ./build-ffmpeg.sh…

区块链钱包“BTC,TRX,ETH”地址生成、助记词导入、keyStron文件生成等功能

一、前言 #最近闲着没事做&#xff0c;然后看听到说什么BTC疯涨&#xff0c;这类的小道消息。 哦豁~&#xff0c;这一下就让我觉得非常好奇&#xff0c;说&#xff0c;他们这些东西是怎样在链上存在的呢&#xff0c;然后他们那个一串串的地址又是啥&#xff0c;imtoken钱包又是…

Cisco IOS XE Web UI 权限提升漏洞复现(CVE-2023-20198)

0x01 产品简介 Web UI 是一种基于GUI的嵌入式系统管理工具,能够提供系统配置、简化系统部署和可管理性以及增强用户体验。它带有默认映像,因此无需在系统上启用任何内容或安装任何许可证。Web UI 可用于构建配置以及监控系统和排除系统故障,而无需CLI专业知识。 0x02 漏洞…

Git知识点汇总表格总结

Git应该是现在各个做开发公司使用最广泛的版本管理工具了&#xff0c;还有一些公司可能用的SVN&#xff0c;不过总体来说&#xff0c;Git绝对是主流&#xff0c;SVN是集中式版本管理&#xff0c;使用起来相对Git更简单&#xff0c;不过功能相对Git也略显简略&#xff0c;Git的优…