基于LSTM的发电量多步预测(matlab源码)

1、结果展示

 

 

 

 

2、部分代码


clc
clear
load Generation_data.mat;                                                           % load data from hard drive to workspace
IrradiationData=readtable('Irradiation data.xlsx');
TrainIp=table2array(IrradiationData(1028:2927,4));                          % read data from workspace
TestIp=table2array(generationdata_table_dt(1005:2904,4));
XTrainIp = input(1:numTimeStepsTrain+1);                                     % training input data points
XTestIp = target(1:numTimeStepsTrain+1);                                     % training target data points

YTrainIp = input(numTimeStepsTrain+1:end);                                  % testing input data points
YTestIp = target(numTimeStepsTrain+1:end);

numFeatures = 2;                                                            % number of inputs=2
numResponses = 1;                                                           % number of output=1
numHiddenUnits = 200;                                                       % number of hidden unites

rmsepred=[];
rmseupdat=[];
maepred=[];
maeupdat=[];
mapepred=[];
mapeupdat=[];

layers = [ ...
    sequenceInputLayer(numFeatures)
    lstmLayer(numHiddenUnits)
    fullyConnectedLayer(numResponses)
    regressionLayer]; 

options = trainingOptions('adam', ...
    'MaxEpochs',250, ...
    'GradientThreshold',1, ...
    'InitialLearnRate',0.005, ...
    'MiniBatchSize',50, ...
    'LearnRateSchedule','piecewise', ...
    'LearnRateDropPeriod',90, ...
    'LearnRateDropFactor',0.2, ...
    'Verbose',false, ...
    'Plots','training-progress');                                           % LSTM other options
%     'ValidationData',{XTestIp,YTestIp},...
%     'ValidationFrequency',30, ...
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Matlab中,可以通过使用预测神经网络工具箱中的LSTM网络来进行多步预测。 以下是一个简单的LSTM多步预测示例: ```matlab %准备数据 data = load('airlineData.mat'); X = data.airlineData; X = X ./ max(X); %创建LSTM网络 numFeatures = 1; numResponses = 1; numHiddenUnits = 200; layers = [ ... sequenceInputLayer(numFeatures) lstmLayer(numHiddenUnits,'OutputMode','sequence') fullyConnectedLayer(numResponses) regressionLayer]; %定义训练选项 options = trainingOptions('adam', ... 'MaxEpochs',100, ... 'MiniBatchSize',1, ... 'GradientThreshold',1, ... 'InitialLearnRate',0.005, ... 'LearnRateSchedule','piecewise', ... 'LearnRateDropFactor',0.2, ... 'LearnRateDropPeriod',50, ... 'Verbose',0, ... 'Plots','training-progress'); %训练网络 net = trainNetwork(X(1:end-12),X(2:end-11),layers,options); %进行多步预测 numTimeSteps = 12; YPred = predict(net,X(end-numTimeSteps+1:end),'MiniBatchSize',1); %绘制预测结果 figure plot(X) hold on idx = size(X,1)-numTimeSteps+1:size(X,1); plot(idx,YPred,'.-') hold off legend(["Observed" "Forecast"]) ``` 在这个例子中,我们首先准备了一个时间序列数据集,并将其归一化到[0,1]范围内。然后,我们使用预测神经网络工具箱中的LSTM网络创建一个预测模型。接下来,我们定义了训练选项,并使用训练数据对网络进行训练。最后,我们使用训练好的网络进行多步预测,并将预测结果与观测值绘制在同一张图中。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值