%% LSTM network
%% import data
clc
clear
close all
%读取double格式数据
[num2,ax,ay] = xlsread('宁夏麻黄山第一风电场_数据.xlsx',1);
[mx,my] = size(num2);
for ii = 3:mx
for jj = 1:my
if isnan(num2(ii,jj))
num2(ii,jj)= mean(num2(ii:2:ii-1,jj));
end
end
end
num= [];
panx=4;
for ii = 1:mx-panx
num = [num;[reshape(num2(ii:ii+panx,:),1,(panx+1)*6)]];
end
npan =10000;%选择部分数据建模测试
num = num(end-10000+1:end,:);
n = randperm(length(num));key
m = length(n)-1055;
input_train =num(n,1:29);%训练数据输出数据
output_train = num(n,30);%训练数据输入数据
input_test = num((m+1:end),1:29);%测试数据输出数据
output_test = num((m+1:end),30);%测试数据输入数据
[inputn,inputps]=mapminmax(input_train',-1,1);%训练数据的输入数据的归一化
[outputn,outputps]=mapminmax(output_train',-1,1);%训练数据的输出数据的归一化de
inputn_test=mapminmax('apply',input_test',inputps);
%% Define Network Architecture
% Define the network architecture.
numFeatures = 29;%输入层维度
numResponses = 1;%输出维度
% 200 hidden units
numHiddenUnits = 50;%第一层维度
% a fully connected layer of size 50 & a dropout layer with dropout probability 0.5
layers = [ ...
sequenceInputLayer(numFeatures)%输入层
lstmLayer(numHiddenUnits,'OutputMode','sequence')%第一层
fullyConnectedLayer(30)%链接层
dropoutLayer(0.2)%遗忘层
fullyConnectedLayer(numResponses)%链接层
regressionLayer];%回归层
% Specify the training options.
% Train for 60 epochs with mini-batches of size 20 using the solver 'adam'
maxEpochs = 60;%最大迭代次数
miniBatchSize = 20;%最小批量
% the learning rate == 0.01
% set the gradient threshold to 1
% set 'Shuffle' to 'never'
options = trainingOptions('adam', ... %解算器
'MaxEpochs',maxEpochs, ... %最大迭代次数
'MiniBatchSize',miniBatchSize, ... %最小批次
'InitialLearnRate',0.01, ... %初始学习率
'GradientThreshold',1, ... %梯度阈值
'Shuffle','every-epoch', ... %打乱顺序
'Plots','training-progress',... %画图
'Verbose',0); %不输出训练过程
%% Train the Network
net = trainNetwork(inputn,outputn,layers,options);%开始训练
%% Test the Network
y_pred = predict(net,inputn_test,'MiniBatchSize',20)';%测试仿真输出
y_pred=(mapminmax('reverse',y_pred',outputps))';
% y_pred0 = predict(net,inputn,'MiniBatchSize',1)';%训练拟合值
% y_pred0=(mapminmax('reverse',y_pred0',outputps))';
y_pred=(double(y_pred));
figure%打开一个图像窗口
plot(y_pred(:,1),'k-')%黑色实线,点的形状为*
hold on%继续画图
plot(output_test(:,1),'r--')%红色实线,点的形状为o
hold off%停止画图
title('测试图')%标题
ylabel('实际发电功率')%Y轴名称
legend('测试值','实际值')%标签
set(gca,'XTick',1:192:1055)
set(gca,'XTickLabel',{'12-21','12-23','12-25','12-27','12-29','12-31'})
error1 = y_pred-output_test;%误差
figure
plot(error1(:,1),'k-')
title('经度测试误差图')
ylabel('误差')
set(gca,'XTick',1:192:1055)
set(gca,'XTickLabel',{'12-21','12-23','12-25','12-27','12-29','12-31'})
[MSE,RMSE,MBE,MAE ] =MSE_RMSE_MBE_MAE(output_test,y_pred);
result_table = table;
result_table.sim = y_pred;
result_table.true = output_test;
writetable(result_table,'./结果.csv')
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于MATLAB编程,用长短期神经网络LSTM进行风电场发电量功率预测,发电功率是一种时间序列的数据,用LSTM比一般神经网络更适合,代码完整,包含数据,有注释,方便扩展应用 1,如有疑问,不会运行,可以私信, 2,需要创新,或者修改可以扫描二维码联系博主, 3,本科及本科以上可以下载应用或者扩展, 4,内容不完全匹配要求或需求,可以联系博主扩展。
资源推荐
资源详情
资源评论




























收起资源包目录






共 5 条
- 1
资源评论



神经网络机器学习智能算法画图绘图

- 粉丝: 2963
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 软件项目开发流程规范说明文档.pdf
- 网站简介获奖科研报告论文-3.docx
- 用户通信终端维修员国家职业标准.doc
- 2023年月计算机等级考试二级上机题汇编.doc
- 研发项目管理培训.ppt
- 网络接入控制解决方案.pdf
- Discuz 论坛接口实现及微信小程序对接方案
- 电子商务团队薪资体系架构.docx
- 基于单片机计数器设计.doc
- vc++五子棋课程设计.doc
- 综合布线复习.pptx
- 基于PLC温室温度控制系统的设计.doc
- modelcontextprotocol_kotlin-sdk-Kotlin资源
- 麦老师网络推广方案.docx
- 网络教研教学个人学年工作总结5篇.doc
- 综合布线工程11综合布线系统的验收方案.ppt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
