% QRLSTM
% 数据集 列为特征,行为样本数目
clc
clear
load Train.mat
% 训练集
Train(1,:) =[];
y = Train.demand(1:2000,:);
x = Train{1:2000,3:end};
clearvars -except x y
% 数据归一化
[xnorm,xopt] = mapminmax(x',0,1);
xnorm = mat2cell(xnorm,size(xnorm,1),ones(1,size(xnorm,2)));
[ynorm,yopt] = mapminmax(y',0,1);
ynorm = ynorm';
%%
% LSTM 层设置,参数设置
inputSize = size(xnorm{1},1); %数据输入x的特征维度
outputSize = size(ynorm,2); %数据输出y的维度
numhidden_units1=50; %网络单元
numhidden_units2= 20;
numhidden_units3=100;
%%
% lstm
for i = 0.1:0.1:0.9
layers = [ ...
sequenceInputLayer(inputSize,'name','input') %输入层设置
lstmLayer(numhidden_units1,'Outputmode','sequence','name','hidden1')
dropoutLayer(0.3,'name','dropout_1')
lstmLayer(numhidden_units2,'Outputmode','last','name','hidden2')
dropoutLayer(0.3,'name','drdiopout_2')
fullyConnectedLayer(outputSize,'name','fullconnect') % 全连接层设置(影响输出维度)(cell层出来的输出层) %
quanRegressionLayer('out',i)];
% 参数设定
opts = trainingOptions('adam', ...
'MaxEpochs',10, ...
'GradientThreshold',1,...
'ExecutionEnvironment','cpu',...
'InitialLearnRate',0.001, ...
'LearnRateSchedule','piecewise', ...
'LearnRateDropPeriod',2, ... %2个epoch后学习率更新
'LearnRateDropFactor',0.5, ...
'Shuffle','once',... % 时间序列长度
'SequenceLength',1,...
'MiniBatchSize',24,...
'Verbose',0);
%
% 网络训练
tic
net1 = trainNetwork(xnorm,ynorm,layers,opts);
net2(floor(i*10)) = trainNetwork(xnorm,ynorm,layers,opts);
end
% 测试集
load Test.mat
Test(1,:) =[];
clear x y
y = Test.demand;
x = Test{:,3:end};
% 归一化
[xnorm,xopt] = mapminmax(x',0,1);
xnorm = mat2cell(xnorm,size(xnorm,1),ones(1,size(xnorm,2)));
[ynorm,yopt] = mapminmax(y',0,1);
ynorm = ynorm';
color=[111,168,86;128,199,252;112,138,248;184,84,246]/255;
% 迭代计算
% 点预测
for i = 1:length(xnorm)
YpredictNorm1= net1.predict(xnorm(i));
Ypredict1(i) = mapminmax('reverse',YpredictNorm1,yopt);
end
% 区间预测
for i = 1:length(net2)
YpredictNorm2(i,:) = net2(i).predict(xnorm);
Ypredict2(i,:) = mapminmax('reverse',YpredictNorm2(i,:),yopt);
end
%% 可视化
x =[1:168];
figure
fill([x,x(end:-1:1)],[smooth(Ypredict2(1,:),1)',smooth(Ypredict2(end,end:-1:1),1)'],'r','FaceColor',[1 0.8 0.8],'EdgeColor','none')
hold on
plot(Ypredict1,'-','Color',color(3,:),'LineWidth',1)
hold on
plot(y','-','Color',color(4,:),'LineWidth',1)
legend('90%置信区间','预测值','实际值')
title('区间预测')
xlabel('Time')
ylabel('load(KW)')
title('预测周负荷概率分布')
time =datetime('2022-10-1'):datetime('2022-10-7');
xticks([0:24:24*7]);
xticklabels(string(time));
xtickangle(45)
legend('90%置信区间','预测值','实际值')
picp = PICP(Ypredict2,y);
pimwp = PIMWP(Ypredict2,y);
% 区间覆盖率
function picp = PICP(Ypredict,Yreal)
% 维度保持一致(样本个数)
if size(Ypredict,1) ~= size(Yreal,1)
Ypredict = Ypredict';
end
RangeForm = [ Ypredict(:,1),Ypredict(:,end)];
Num = 0;
for i = 1:length(Yreal)
Num = Num + (Yreal(i) >= RangeForm(i,1) && Yreal(i) <= RangeForm(i,2));
end
picp = Num / length(Yreal);
end
% 区间平均宽度百分比
function pimwp = PIMWP(Ypredict,Yreal)
% 维度保持一致(样本个数)
if size(Ypredict,1) ~= size(Yreal,1)
Ypredict = Ypredict';
end
pimwp = 1/length(Yreal) * sum( (Ypredict(:,end) - Ypredict(:,1))...
./ Yreal) * 100;
end
前程算法屋
- 粉丝: 5829
- 资源: 835
最新资源
- DIN 17178-1986 特殊要求细晶粒结构钢焊接.pdf
- DIN 17174-1985 低温用焊接钢管.pdf
- DIN 17178-1986 中文版 特殊要求细晶粒结构钢焊接圆形钢管 交货技术条件.pdf
- DIN 32676-2001 饮食业、化工业和医药业用配件.不锈钢管夹具接头.焊接式(德文原版).pdf
- DIN 28181-1985 管束式热交换器的焊接钢管.尺寸.尺寸偏差和材料.pdf
- DIN 86037-1-1995 铜镍合金管道的活套法兰和焊接凸肩.第1部分组装.pdf
- DIN 86037-2-1995 铜镍合金管道的活套法兰和焊接凸肩.第2部分焊接凸肩.pdf
- DIN 46234-1980 非焊接接线端.铜导线用无绝缘套管环形连接.pdf
- DIN 86037-3-1995 铜镍合金管道的活套法兰和焊接凸肩.第3部分活套法兰.pdf
- DIN 86088-1996 铜镍合金制管道焊接异型件.三通.pdf
- DIN EN 499-1995 焊料.非合金钢和细粒钢的手动金属电弧焊接用涂剂焊条.分类.pdf
- DIN 86057-1976 管闷头连接件用法兰(套环)的焊接.pdf
- DIN EN 1011-1-2002 中文版 焊接.焊接金属材料的建议.第1部分电弧焊接通则.pdf
- DIN EN 1043-1-1996 金属材料焊接的破坏试验 硬度测试 第1部分:电弧焊接连接件的硬度试验.pdf
- DIN EN 1435-2002 焊缝的无损检验.焊接接头的X光照相检验.pdf
- DIN EN 1708-1-1999 中文版 焊接—钢焊接接头的基本细节 第1部分:承压构件.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈