首页 > 行业资讯 > 【LSTM预测】基于lstm算法实现短期风速预测附matlab代码

【LSTM预测】基于lstm算法实现短期风速预测附matlab代码

时间:2022-07-07 来源: 浏览:

【LSTM预测】基于lstm算法实现短期风速预测附matlab代码

天天Matlab 天天Matlab
天天Matlab

TT_Matlab

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。

收录于合集 #神经网络预测matlab源码 297个

1 简介

强风引起的输电线振动是影响电能传输安全的主要气 象灾害之一 。高压输电塔线兼具高耸结构和大跨结构的 特点使得其对于风载荷非常敏感,并且由于输电塔线通常分 布在野外,所以对输电塔线周围的风速情况进行长时间的实 时监测存在较大困难。为输电塔线体系建立风速预测模型可以给输电塔线的结构设计提供参考依据,并且也可以给电力维护人员留出充足的时间来确定合理的对策来应付强风情况 。

风速时刻在变化,并且易受多种外界因素的影响,因此 对风速的预测一般是对短期风速进行预测,短期风速预测的关键技术之一,就是选用合适的预测方法对实测风速建立合 理的数学模型,从而实现对风速的超前预测 。  国内外许多学 者基于对短期风速预测的研究提出了多种风速预测方法 。 主要包括时间序列分析法  、小波变换分析法  、卡尔曼滤 波法  、人工神经网络法 、机 器 学 习 算 法以 及 组 合 算 法等 。时间序列分析法常利用自身历史风速数据构建线 性风速预测模型,但其低阶模型预测精度不高,高阶模型参

数难以估 ; 卡尔曼滤波法开展风速预测时,由于风速 的噪声统计特性难以估计,造成其状态方程和特征方程不易 建立 ; 而神经网络法原理简单、非线性学习能力强,具 有很好的泛化能力,能够很好的处理非线性拟合问题,适于 开展风速预测研究,但是,参数设置复杂、训练时间长、所需 训练样本多,不利于预测精度的提高; 此外就是利用多种算法的组合,比如时间序列分析法和卡尔曼滤波相结合、BP 神经网络和小波变化相结合等预测方法,该类方法比较复 杂,实现较困难。因此设计一种实现简单,预测效果比较好的算法很有必 要,结合时间序列分析法和长短时记忆网络各自的优点,提 出一种将时间序列分析法和长短时记忆神经网络相结合的 预测方法,该组合算法原理简单,预测效果比较好 。该方法 首先利用时间序列对风速数据进行预测得到预测值以及预 测值和观测值之间的残差,然后利用残差重构样本集对长短 时记忆神经网络进行训练,并由长短时记忆神经网络进行预 测,得到残差数据预测结果,最后将时间序列预测值与长短 时记忆神经网络预测值相结合得到最终的风速预测结果 。

短期风速对输电线路影响巨大,由于短期风速的随机性和非线性特性,使得短期风速难以精确预测.提出了一种将长短时记忆网络和时间序列分析法相结合的组合预测算法来实现对短期风速的预测.首先,利用时间序列分析法对短期风速进行预测得到预测结果和预测残差,然后利用长短时记忆网络对预测残差进行预测,最后将两种方法得到的预测结果进行线性组合得到最终的预测结果序列.为验证所提出的算法的实际效果,将提出的算法与时间序列分析法,长短时记忆网络以及BP神经网络等进行对比.实验结果表明,组合算法有效提高了短期风速序列预测精度,是一种可行的分析方法.

2 部分代码

%% LSTM 批处理下LSTM clear clc close all %% 加载数据 clear;clc;close all;format compact %% 加载数据 qx1=xlsread(’沧州气象日度数据.xlsx’,’B2:G362’);%由于有缺失值,因此只读了前几列和最后几列,中间几列没有读取 qx2=xlsread(’沧州气象日度数据.xlsx’,’J2:O362’); qx=[qx1 qx2]; wr=xlsread(’沧州污染日度数据.xlsx’,’C2:C362’); input=[wr(1:end-1,:) qx(2:end,:)];%输入为前一天的pm2.5+预测日的气象 输出为预测日的pm2.5 output=wr(2:end,:); P=mapminmax(input’,0,1); [T,outputns]=mapminmax(output’,0,1); %% 提取300个样本为训练样本,剩下样本为预测样本 n=1:size(P,2); i=300; train_data=P(:,n(1:i)); train_label=T(:,n(1:i),:); P_test=P(:,n(i+1:end)); T_test=T(:,n(i+1:end)); %% 网络参数初始化 % 结点数设置 input_num=data_length;%输入层节点 cell_num=5;%隐含层节点 output_num=1;%输出层节点 dropout=0;%dropout系数 cost_gate=1e-10;% 误差要求精度 % ab=20; ab=4*sqrt(6/(cell_num+output_num));% 利用均匀分布进行初始化 % ab=1/ab; sim(:,i)=h_state_test; end %反归一化 test_sim=mapminmax(’reverse’,sim,outputns);%网络预测数据 test=mapminmax(’reverse’,T_test,outputns);%实际数据 %% %% figure plot(test_sim,’-bo’); grid on hold on plot(test,’-r*’); legend(’预测数据’,’实际数据’) title(’LSTM神经网络回归预测’) xlabel(’样本数’) ylabel(’PM2.5含量’) % 相对误差 figure bar(abs(test-test_sim)./test) title(’LSTM’) ylabel(’相对误差’) xlabel(’样本数’) % 平均相对误差 pjxd=sum(abs(test-test_sim)./test)/length(test)

3 仿真结果

4 参考文献

[1]李蓉蓉, 戴永. 基于LSTM和时间序列分析法的短期风速预测[J]. 计算机仿真, 2020, 37(3):6.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐