天天看點

基于BP神經網絡的電力負荷預測(Matlab代碼實作)

1 概述

随着電力工業逐漸進入市場化,區域配電網短期電力負荷預測在電力行業中地位越來越重要,精準的短期負荷預測方法對電力系統安全穩定的運作至關重要。是以,文章在綜合分析實際負荷特征和BP神經網絡原理的基礎上,提出BP神經網絡預測方法。

2 運作結果

基于BP神經網絡的電力負荷預測(Matlab代碼實作)
基于BP神經網絡的電力負荷預測(Matlab代碼實作)

3 完整Matlab代碼實作 

%建立訓練樣本輸入集
clc,clear
num=24;%對應24個特征
len=9;%有9行資料
data=xlsread('data_new');
data=data(2:len+1,:);

%建立訓練集測試集
x_train=[data(1:len-2,:).'];
x_test=[data(len-1,:).'];
y_train=[data(2:len-1,:).'];
test=[data(len,:).'];

%建立BP神經網絡
%建立網絡
net=newff(minmax(x_train),[7,24],{'tansig','purelin'},'trainlm');%隐層神經元個數,輸出層神經元個數,第1個參數為測試輸入的輸入範圍
%設定訓練次數
net.trainParam.epochs = 100;
%設定收斂誤差
net.trainParam.goal=0.001;
%訓練網絡
[net,tr]=train(net,x_train,y_train);
%在訓練集和測試集上的表現
y_train_predict=sim(net,x_train);
Predict=sim(net,x_test);
%作圖 分别在測試集上
x=0:1:23;
plot(x,Predict,x,test);
grid on
xlabel('時間'),ylabel('用電量')%命名
legend('預測值','真實值');
rmse=(sum((Predict-test).^2)/24)^0.5
mae=sum(abs(Predict-test))/24
mape=sum(abs(Predict-test)./test)/24*100

           

%建立訓練樣本輸入集

clc,clear

num=24;%對應24個特征

len=9;%有9行資料

data=xlsread('data_new');

data=data(2:len+1,:);

%建立訓練集測試集

x_train=[data(1:len-2,:).'];

x_test=[data(len-1,:).'];

y_train=[data(2:len-1,:).'];

test=[data(len,:).'];

%建立BP神經網絡

%建立網絡

net=newff(minmax(x_train),[7,24],{'tansig','purelin'},'trainlm');%隐層神經元個數,輸出層神經元個數,第1個參數為測試輸入的輸入範圍

%設定訓練次數

net.trainParam.epochs = 100;

%設定收斂誤差

net.trainParam.goal=0.001;

%訓練網絡

[net,tr]=train(net,x_train,y_train);

%在訓練集和測試集上的表現

y_train_predict=sim(net,x_train);

Predict=sim(net,x_test);

%作圖 分别在測試集上

x=0:1:23;

plot(x,Predict,x,test);

grid on

xlabel('時間'),ylabel('用電量')%命名

legend('預測值','真實值');

rmse=(sum((Predict-test).^2)/24)^0.5

mae=sum(abs(Predict-test))/24

mape=sum(abs(Predict-test)./test)/24*100

4 資料

連結:https://pan.baidu.com/s/19qZsZeoO8BgByO1k9a_YDw 

提取碼:6nh7 

--來自百度網盤超級會員V2的分享 

基于BP神經網絡的電力負荷預測(Matlab代碼實作)

到23:00 

%建立訓練樣本輸入集

clc,clear

num=24;%對應24個特征

len=9;%有9行資料

data=xlsread('data_new');

data=data(2:len+1,:);

%建立訓練集測試集

x_train=[data(1:len-2,:).'];

x_test=[data(len-1,:).'];

y_train=[data(2:len-1,:).'];

test=[data(len,:).'];

%建立BP神經網絡

%建立網絡

net=newff(minmax(x_train),[7,24],{'tansig','purelin'},'trainlm');%隐層神經元個數,輸出層神經元個數,第1個參數為測試輸入的輸入範圍

%設定訓練次數

net.trainParam.epochs = 100;

%設定收斂誤差

net.trainParam.goal=0.001;

%訓練網絡

[net,tr]=train(net,x_train,y_train);

%在訓練集和測試集上的表現

y_train_predict=sim(net,x_train);

Predict=sim(net,x_test);

%作圖 分别在測試集上

x=0:1:23;

plot(x,Predict,x,test);

grid on

xlabel('時間'),ylabel('用電量')%命名

legend('預測值','真實值');

rmse=(sum((Predict-test).^2)/24)^0.5

mae=sum(abs(Predict-test))/24

mape=sum(abs(Predict-test)./test)/24*100