%% BILSTM network
% Programmed by 红松科技工作室,2027771338
% Updated 6 Apr. 2024.
clc
clear
close all
%读取double格式数据
[num1,ax,ay] = xlsread('负荷数据.xlsx',1);
num2 = [];
for ii = 1:720
a1 = ay{ii+1,13};
% a1(1)=[];
a1(end)=[];
a2 = ay{ii+1,14};
% a2(1)=[];
a2(end)=[];
num2 = [num2;str2double(a1) str2double(a2)];
end
num1(:,9) = [];
num1(:,1:4) = [];
xpan =3;
num = [];
for ii = 1:720-xpan
num = [num; reshape(num1(ii:ii+xpan-1,:),1,18) reshape(num2(ii:ii+xpan-1,:),1,6) num1(ii+xpan,1:3)];
end
n = randperm(length(num));
m=693;
input_train =num(n(1:m),1:24);%训练数据输出数据
output_train = num(n(1:m),25:27);%训练数据输入数据
input_test = num((m+1:end),1:24);%测试数据输出数据
output_test = num((m+1:end),25:27);%测试数据输入数据
[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 = 24;%输入层维度
numResponses = 3;%输出维度
% 200 hidden units
numHiddenUnits = 70;%第一层维度
% a fully connected layer of size 50 & a dropout layer with dropout probability 0.5
fungru
% Specify the training options.
% Train for 60 epochs with mini-batches of size 20 using the solver 'adam'
maxEpochs = 60;%最大迭代次数
miniBatchSize =2;%最小批量
% 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',0.03, ... %梯度阈值
'Shuffle','every-epoch', ... %打乱顺序
'Plots','training-progress',... %画图
'Verbose',1); %不输出训练过程
%% Train the Network
net = trainNetwork(inputn,outputn,layers,options);%开始训练
% save maydata.mat
%% Test the Network
y_pred = predict(net,inputn_test,'MiniBatchSize',miniBatchSize)';%测试仿真输出
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('测试值','实际值')%标签
ylim([0 32])
figure%打开一个图像窗口
plot(y_pred(:,2),'k-')%黑色实线,点的形状为*
hold on%继续画图
plot(output_test(:,2),'r--')%红色实线,点的形状为o
hold off%停止画图
title('测试图')%标题
ylabel('冷负荷')%Y轴名称
legend('测试值','实际值')%标签
ylim([0 40])
figure%打开一个图像窗口
plot(y_pred(:,3),'k-')%黑色实线,点的形状为*
hold on%继续画图
plot(output_test(:,3),'r--')%红色实线,点的形状为o
hold off%停止画图
title('测试图')%标题
ylabel('热负荷')%Y轴名称
legend('测试值','实际值')%标签
ylim([0 10])
error1 = y_pred-output_test;%误差
figure
plot(error1(:,1),'k-')
title('测试误差图')
ylabel('电负荷误差')
ylim([-15 15])
figure
plot(error1(:,2),'k-')
title('测试误差图')
ylabel('冷负荷误差')
ylim([-15 15])
figure
plot(error1(:,2),'k-')
title('测试误差图')
ylabel('热负荷误差')
ylim([-15 15])
[MSE,RMSE,MBE,MAE ] =MSE_RMSE_MBE_MAE(output_test(:,1),y_pred(:,1));
result_table = table;
result_table.simd = y_pred(:,1);
result_table.trued = output_test(:,1);
result_table.siml = y_pred(:,2);
result_table.truel = output_test(:,2);
result_table.simr = y_pred(:,3);
result_table.truer = output_test(:,3);
writetable(result_table,'./结果.csv')
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于MATLAB编程,基于双向长短期神经网络的回归分析,基于GRU神经网络的回归分析(代码完整,数据齐全),代码完整,包含数据,有注释,方便扩展应用 1,如有疑问,不会运行,可以私信, 2,需要创新,或者修改可以扫描二维码联系博主, 3,本科及本科以上可以下载应用或者扩展, 4,内容不完全匹配要求或需求,可以联系博主扩展。
资源推荐
资源详情
资源评论
收起资源包目录
bilstm和gru.zip (11个子文件)
MSE_RMSE_MBE_MAE.m 361B
maingru.m 4KB
2.jpg 15KB
负荷数据.xlsx 71KB
funbilstm.m 282B
fungru.m 270B
1.jpg 14KB
R_2.m 317B
结果.csv 2KB
maydata.mat 430KB
main2.m 4KB
共 11 条
- 1
资源评论
神经网络机器学习智能算法画图绘图
- 粉丝: 2374
- 资源: 569
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功