👨🎓个人主页:研学社的博客
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
使用双向长短期记忆(biLSTM)
进行需求预测 这是一个回归问题。在这个问题中,我们希望根据过去记录中的 3 个因素预测未来需求。
您可以更改选取数(过去的记录数)。此外,您还可以更改输入的数量。例如,您也可以包括过去的需求,或删除一些输入。
📚2 运行结果
部分代码:
%% Train
inputSize = 3;
numHiddenUnits = 200;
layers = [ ...
sequenceInputLayer(inputSize)
bilstmLayer(numHiddenUnits,'OutputMode','last')
fullyConnectedLayer(1)
regressionLayer];
maxEpochs = 10000;
options = trainingOptions('adam', ...
'MaxEpochs',maxEpochs, ...
'InitialLearnRate',0.01, ...
'GradientThreshold',1, ...
'Shuffle','never', ...
'Plots','training-progress',...
'Verbose',0);
net = trainNetwork(X,Y',layers,options);
save('net.mat','net')
trainY=double(predict(net,X));
figure, ploterrhist(trainY-Y')
figure, plot(trainY,'-o')
hold on
plot(Y,'-^')
title('Train Results')
xlabel('Price Sequence #')
ylabel('Demand (MW)');
legend('biLSTM output','Actual Demand')
%% test network
clear X Y
demands=record(221:252,4);
orgin=record(221:252,1:3);
in=orgin;
out=demands;
i=1;
while ~isempty(in)
pick=3;
if pick<=size(in,1)
X{i}=(in(1:pick,:))';
Y(i)=out(pick);
in(1,:)=[];
out(1,:)=[];
i=i+1;
else
X{i}=in';
Y(i)=out(end);
break
end
end
testY=double(predict(net,X));
figure, ploterrhist(testY-Y'), title('test')
figure, plot(testY,'-o')
hold on
plot(Y,'-^')
title('Test Results')
xlabel('Price Sequence #')
ylabel('Demand (MW)');
legend('biLSTM output','Actual Demand')
🎉3 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]Majid Farzaneh (2023). Demand prediction using bi-directional LSTM network .
[2]高明,郝妍.基于BiLSTM网络与误差修正的超短期负荷预测[J].综合智慧能源,2023,45(01):31-40.