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