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

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的分享
到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