基于matlab实现的额 BP神经网络电力系统短期负荷预测
完整程序:
clear;
clc;
%%输入矢量P(15*10)
P=[0.2452 0.1466 0.1314 0.2243 0.5523 0.6642 0.7105 0.6981 0.6821 0.6945 0.7549 0.8215 0.2415 0.3027 0;
0.2217 0.1581 0.1408 0.2304 0.5134 0.5312 0.6819 0.7125 0.7265 0.6847 0.7826 0.8325 0.2385 0.3125 0;
0.2525 0.1627 0.1507 0.2406 0.5502 0.5636 0.7051 0.7352 0.7459 0.7015 0.8064 0.8156 0.2216 0.2701 1;
0.2016 0.1105 0.1243 0.1978 0.5021 0.5232 0.6819 0.6952 0.7015 0.6825 0.7825 0.7895 0.2352 0.2506 0.5;
0.2115 0.1201 0.1312 0.2019 0.5332 0.5736 0.7029 0.7032 0.7189 0.7019 0.7965 0.8025 0.2542 0.3125 0;
0.2335 0.1322 0.1534 0.2214 0.5623 0.5827 0.7198 0.7276 0.7359 0.7506 0.8092 0.8221 0.2601 0.3198 0;
0.2368 0.1432 0.1653 0.2205 0.5823 0.5971 0.7136 0.7129 0.7263 0.7153 0.8091 0.8217 0.2579 0.3099 0;
0.2342 0.1368 0.1602 0.2131 0.5726 0.5822 0.7101 0.7098 0.7127 0.7121 0.7995 0.7126 0.2301 0.2867 0.5;
0.2113 0.1212 0.1305 0.1819 0.4952 0.5312 0.6886 0.68980 120.6999 0.7323 0.7721 0.7956 0.2234 0.2799 1;
0.2005 0.1121 0.1207 0.1605 0.4556 0.5022 0.6553 0.6673 0.6798 0.7023 0.7521 0.7756 0.2314 0.2977 0]';
%目标矢量T(12*10)
T=[0.2217 0.1581 0.1408 0.2304 0.5134 0.5312 0.6819 0.7125 0.7265 0.6847 0.7826 0.8325;
0.2525 0.1627 0.1507 0.2406 0.5502 0.5636 0.7051 0.7352 0.7459 0.7015 0.8064 0.8156;
0.2016 0.1105 0.1243 0.1978 0.5021 0.5232 0.6819 0.6952 0.7015 0.6825 0.7825 0.7895;
0.2115 0.1201 0.1312 0.2019 0.5532 0.5736 0.7029 0.7032 0.7189 0.7019 0.7965 0.8025;
0.2335 0.1322 0.1534 0.2214 0.5623 0.5827 0.7198 0.7276 0.7359 0.7506 0.8092 0.8221;
0.2368 0.1432 0.1653 0.2205 0.5823 0.5971 0.7136 0.7129 0.7263 0.7153 0.8091 0.8217;
0.2342 0.7368 0.1602 0.2131 0.5726 0.5822 0.7101 0.7098 0.7127 0.7121 0.7995 0.8126;
0.2113 0.1212 0.1305 0.1819 0.4952 0.5312 0.6886 0.6898 0.6999 0.7323 0.7721 0.7956;
0.2005 0.1121 0.1207 0.1605 0.4556 0.5022 0.6552 0.6673 0.6798 0.7023 0.7521 0.7756;
0.2123 0.1257 0.1343 0.2079 0.5579 0.5716 0.7059 0.7145 0.7205 0.7401 0.8019 0.8136]';
%创建一个新的BP前向神经网络
%newff—生成一个新的BP前向神经网络
net=newff(minmax(P),[10,12],{'tansig','logsig'},'trainbr');
%设置训练参数
net.trainParam.show=10; %每10代显示一次
net.trainParam.lr=0.05; %学习速率(0.01-0.8)
net.trainParam.mc=0.9; %动量因子
net.trainParam.epochs=1000; %训练的代数
net.trainParam.goal=0.0001; %目标误差
%训练BP前向神经网络
%P为输入向量,T为目标向量
[net,tr]=train(net,P,T);
%仿真
%T1:31日实际负荷;P1:30日负荷+31日气象特征;A1:31日预测负荷
T1=[0.2119 0.1215 0.1621 0.2161 0.6171 0.6159 0.7115 0.7201 0.7243 0.7298 0.8179 0.8229]';
P1=[0.2123 0.1257 0.1343 0.2079 0.5579 0.5716 0.7059 0.7145 0.7205 0.7401 0.8019 0.8136 0.2317 0.2936 0]';
A1=sim(net,P1) ;
x=1:12;
figure,plot(x,T1,':r',x,A1,'b');
title('31日负荷预测与实际比较曲线,');
legend('实际负荷情况','预测负荷情况');
%计算仿真误差
E=T1-A1;
%计算误差平方和
SSE=sse(E);
figure,plot(x,E);
title('误差曲线');