目录
一、理论基础
二、案例背景
三、MATLAB程序
四、仿真结论分析
BP神经网络,即Back Propagation神经网络,其本质是一种基于误差反馈传播的神经网络算法。从结构上讲,BP神经网络是由一个信息的正向传播网络和一个误差的反向传播网络两个模块构成。BP神经网络的基本结构如下图所示:
从图2的结构可知,BP神经网络主要由输入层,隐含层以及输出层构成。来自外界的信息通过输入层传输进入到隐含层进行处理,并由输出层输出处理结果。当BP神经网络的输出结果和其期望结果之间的误差较大的时候,则进入反向传播阶段,并进行进行审计网络权值的修正,直到输出结果和期望结果误差满足一定条件为止。
GRNN,即General Regression Neural Network,中文全称为广义回归神经网络,是由The Lockheed Palo Alto研究实验室在1991年提出的。GRNN是一种新型的基于非线性回归理论的神经网络模型。GRNN是建立在非参数核回归基础之上的,该神经网络是以测试样本为后验条件,并从观测样本中计算得到自变量和因变量之间的概率密度函数,然后在计算出
因变量关于自变量的回归值。由于GRNN不需要规定模型的类型,只需要设置神经网络的光滑因子参数,GRNN神经网络的光滑因子参数的取值对神经网络的输出影响较大,当光滑因子参数较大的时候,其对应的神经元所覆盖的输入区域就越大;当光滑因子参数较小的时候,神经网络对应的径向基函数曲线较陡,因此神经网络输出结果更接近期望值,但此时光滑度越差。GRNN神经网络的基本结构如下图所示:
从图的结构图可知,GRNN神经网络的输入层神经元数目和输入样本的维度是相同的,即每一个神经元将输入信号直接传递给GRNN神经网络的隐含层中。
电力预测可以单独进行;也可以根据电量预测的结果,再利用预测的负荷系数(即在规定周期内平均负荷与最大负荷之比)求出电力预测值。这两种电力预测方法都得到广泛的应用。前一种预测方法的好处是以最直接的方法获得大部分对系统来说最重要的预测结果,并且较容易地使负荷数据同气温等因素直接关联起来,但负荷系数本身是不太有规则的。后一种预测方法的好处是在一段时间内电量数据不像最大负荷那样不规则,能较好地显示增长的趋势;负荷系数也不像最大负荷那样不规则,在年与年之间虽有变化,多数情况下趋于相对稳定。
单独进行电力预测可以采用按时间序列方法进行估算,估算方法与电量预测的方法基本相同;也可以按各个地区、各种用途、各类用户的典型负荷曲线进行叠加得到预测值。
clc;
clear;
close all;
warning off;
data = csvread('dat.csv');
[R,C]= size(data);
data2 = [];
for i = 1:R/4
data2 = [data2,data(4*(i-1)+1:4*i,:)];
end
Tned = data2(1,1:24*48);
Tweb = data2(2,1:24*48);
P = data2(3:4,1:24*48);
%异常数据处理
[M,N]= size(Tned);
for i = 2:N-1
if Tned(i) > 1.5*Tned(i-1) & Tned(i) > 1.5*Tned(i+1) | Tned(i) < 0.5*Tned(i-1) & Tned(i) < 0.5*Tned(i+1)
Tned(i) = (Tned(i-1) + Tned(i+1))/2;
end
end
%数据归一化
Max1 = max(Tned);
Min1 = min(Tned);
Max2 = max(Tweb);
Min2 = min(Tweb);
%归一化
Tned2 = (Tned-Min1)/(Max1-Min1);
Tweb2 = (Tweb-Min2)/(Max2-Min2);
%训练长度和测试长度划分
LL = 30;
LLe = 40;
%将数据划分为训练数据和测试数据两个部分
P_train = P(:,1:LL*24);
P_test = P(:,LL*24+1:LLe*24);
Tned_train = Tned2(1:LL*24);
Tned_test = Tned2(LL*24+1:LLe*24);
Tweb_train = Tweb2(1:LL*24);
Tweb_test = Tweb2(LL*24+1:LLe*24);
%神经网络训练
net = newgrnn(P_train,Tned_train,0.005);
%测试部分数据测试
Ty = (Max1-Min1)*net(P_test)+Min1;
figure;
plot([Tned(LL*24+1:LLe*24)],'r','linewidth',2);
hold on
plot([Ty],'b','linewidth',2);
hold on
plot([Tweb(LL*24+1:LLe*24)],'g--','linewidth',2);
grid on
legend('real demand','network prediction','website prediction');
axis([0,LLe*24-LL*24,0,8000]);
figure;
plot([Ty-Tned(LL*24+1:LLe*24)],'r','linewidth',2);
hold on
plot([Ty-Tweb(LL*24+1:LLe*24)],'b','linewidth',2);
hold on
plot([Tned(LL*24+1:LLe*24)-Tweb(LL*24+1:LLe*24)],'g--','linewidth',2);
grid on
legend('error between network prediction and real demand','error between network prediction and website demand','error between real demand and website demand');
axis([0,LLe*24-LL*24,-2000,2000]);
BP仿真结果如下所示:
GRNN仿真结果如下所示:
GRNN神经网络,其误差基本在500以内。BP神经网络的预测误差较大
A05-49