目录
1.BP神经网络
BP神经网络,即Back Propagation神经网络,其本质是一种基于误差反馈传播的神经网络算法。从结构上讲,BP神经网络是由一个信息的正向传播网络和一个误差的反向传播网络两个模块构成。BP神经网络的基本结构如下图所示:
从图2的结构可知,BP神经网络主要由输入层,隐含层以及输出层构成。来自外界的信息通过输入层传输进入到隐含层进行处理,并由输出层输出处理结果。当BP神经网络的输出结果和其期望结果之间的误差较大的时候,则进入反向传播阶段,并进行进行审计网络权值的修正,直到输出结果和期望结果误差满足一定条件为止。
其中,信号的前向传播过程的主要步骤如下:
在整个BP网络学习过程中,输出层权值调整按如下公式进行:
BP神经网络模型包括其输入输出模型、作用函数模型、误差计算模型和自学习模型。
2.GRNN网络
GRNN,即General Regression Neural Network,中文全称为广义回归神经网络,是由The Lockheed Palo Alto研究实验室在1991年提出的。GRNN是一种新型的基于非线性回归理论的神经网络模型。GRNN是建立在非参数核回归基础之上的,该神经网络是以测试样本为后验条件,并从观测样本中计算得到自变量和因变量之间的概率密度函数,然后在计算出因变量关于自变量的回归值。由于GRNN不需要规定模型的类型,只需要设置神经网络的光滑因子参数,GRNN神经网络的光滑因子参数的取值对神经网络的输出影响较大,当光滑因子参数较大的时候,其对应的神经元所覆盖的输入区域就越大;当光滑因子参数较小的时候,神经网络对应的径向基函数曲线较陡,因此神经网络输出结果更接近期望值,但此时光滑度越差。
由于GRNN广义回归神经网络是基于非线性核回归分析的神经网络,因此,对于任意一个非独立变量y,其相对于独立变量x的回归分析的过程是计算具有最大概率值y。现假设随机变量x和y的联合概率密度函数为f (x ,y),已知x的观测值为X,则y相对于X的回归,即条件均值为:
GRNN结构如图所示,整个网络包括输入层、模式层、求和层与输出层。
从图的结构图可知,GRNN神经网络的输入层神经元数目和输入样本的维度是相同的,即每一个神经元将输入信号直接传递给GRNN神经网络的隐含层中。
GRNN神经网络的模式层的神经元数目和学习训练样本的数目相同,即每一个神经元都分别对应着一个不同的学习训练样本,模式层中神经元的传递函数为:
由此可以看出,当选择出学习样本之后,GRNN网络的结构与权值都是完全确定的,因而训练GRNN网络要比训练BP网络和RBF网络便捷得多。
3.MATLAB程序
clc;
clear;
close all;
warning off;
rng('default')
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 = newff(P_train,Tned_train,12);
net = train(net,P_train,Tned_train);
net.trainFcn ='trainlm';%trainlm
%测试部分数据测试
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]);
up4108
4.仿真结果
BP神经网络和GRNN各有优势。BP网络通过多层结构和反向传播机制,能处理复杂的非线性问题,但训练过程较慢且易陷入局部最优。GRNN则以其简单快速和良好的泛化能力,在某些场景下更受欢迎,尤其适合需要快速预测的场合,但其性能高度依赖于参数�σ的选择。在电力负荷预测领域,根据数据特性和预测要求,可以选择合适的方法或结合两者优势,提升预测精度。