基于人工神经网络的负荷预测
1.人工神经网络概述
人工神经网络类似于一个“多输入-多输出”的黑匣子,由一些能并行操作的简单单元组成,整个网络的功能是由单元之间的互连所决定的。
人工神经网络是通过“训练-调整-再训练-再调整”的过程,使得一个特定的输入能够通过网络得到一个特定的输出,其实质是通过调整单元之间的相互影响参数。
其结构如下图1:
图1 神经网络结构图
2.题目要求及说明:
以广东某城市的2004年7月20日到7月30日的负荷值以及2004年7月
21日到7月31日的气象特征状态作为网络的训练样本,来预测7月31日的电
2.程序源代码
P=[0.2452 0.1466 0.1314 0.2243 0.5523 0.6642 0.7015 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.5532 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.8126 0.2301 0.2867 0.5;
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.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=[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.1368 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.6553 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; %训练速率
net.trainParam.mc=0.9; %动量因子
net.trainParam.epochs=1000; %训练的代数
net.trainParam.goal=0.0001; %目标误差
%训练BP前向神经网络
[net,tr]=train(net,P,T);
%仿真
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('误差曲线');
3.预测结果
A.31日负荷预测与实际比较曲线
B.误差曲线
通过实验得到的误差在误差范围内,所以此次负荷预测较为准确,具有可行性。