大前端

前端学习之家-大前端

【预测模型】基于Elman神经网络预测电力负荷matlab代码

​1 简介

为提高甘肃电网负荷预测精度,提出了一种基于神经网络的负荷预测方法.针对甘肃电力系统负荷数据的非线性和动态特性,在多层前向BP网络中引入特殊关联层,形成有"记忆"能力的Elman神经网络,从而可以映射系统的非线性和动态特性.在网络训练算法中,采用自适应学习速率动量梯度下降反向传播算法,显著提高了网络的训练速率,有效地抑制了网络陷入局部极小点.文中分别采用El-man神经网络与BP神经网络建立模型,对甘肃电网实际历史数据进行仿真预测,经分析比较,证明前者具有收敛速度快,预测精度高的特点.这表明利用Elman回归神经网络建模对甘肃电网负荷进行预测是可行的,能有效提高负荷预测精度,在负荷预测领域有着较好的应用前景.

Elman 型回归神经元网络一般分为四层 :输入 层、 中间层(隐含层)、 承接层和输出层, 如图 3 所 示。其输入层、 隐含层和输出层的连接类似于前馈 网络 , 输入层的单元仅起信号传输作用, 输出层单 元起线性加权作用。隐含层单元的传递函数可采用 线性或非线性函数, 承接层又称为上下文层或状态 层, 它用来记忆隐含层单元前一时刻的输出值, 可 以认为是一个一步延时算子。 Elman 回归神经元网络的特点是隐含层的输出 通过承接层的延迟与存储, 自联到隐含层的输入, 这种自联方式使其对历史状态的数据具有敏感性, 内部反馈网络的加入增加了网络本身处理动态信息 的能力 , 从而达 到了 动态建 模的 目的 。此 外, Elman回归神经网络能够以任意精度逼近任意非线 性映射, 可以不考虑外部噪声对系统影响的具体形 式, 如果给出系统的输入输出数据对 , 就可以对系统进行建模 。

2 部分代码

%% 基于Elman神经网络的电力负荷预测模型研究
%% 清空环境变量

clc;
clear all
close all
nntwarn off;

%% 数据载入

load data;
a=data;

%% 选取训练数据和测试数据

for i=1:6
   p(i,:)=[a(i,:),a(i+1,:),a(i+2,:)];
end
% 训练数据输入
p_train=p(1:5,:);
% 训练数据输出
t_train=a(4:8,:);
% 测试数据输入
p_test=p(6,:);
% 测试数据输出
t_test=a(9,:);

% 为适应网络结构 做转置

p_train=p_train';
t_train=t_train';
p_test=p_test';


%% 网络的建立和训练
% 利用循环,设置不同的隐藏层神经元个数
nn=[7 11 14 18];
for i=1:4
   threshold=[0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1];
   % 建立Elman神经网络 隐藏层为nn(i)个神经元
   net=newelm(threshold,[nn(i),3],{'tansig','purelin'});
   % 设置网络训练参数
   net.trainparam.epochs=1000;
   net.trainparam.show=20;
   % 初始化网络
   net=init(net);
   % Elman网络训练
   net=train(net,p_train,t_train);
   % 预测数据
   y=sim(net,p_test);
   % 计算误差
   error(i,:)=y'-t_test;
end

%% 通过作图 观察不同隐藏层神经元个数时,网络的预测效果

plot(1:1:3,error(1,:),'-ro','linewidth',2);
hold on;
plot(1:1:3,error(2,:),'b:x','linewidth',2);
hold on;
plot(1:1:3,error(3,:),'k-.s','linewidth',2);
hold on;
plot(1:1:3,error(4,:),'c--d','linewidth',2);
title('Elman预测误差图')
set(gca,'Xtick',[1:3])
legend('7','11','14','18','location','best')
xlabel('时间点')
ylabel('误差')
hold off;

3 仿真结果

4 参考文献

[1]芮执元, 任丽娜, and 冯瑞成. "基于Elman神经网络的甘肃电网负荷预测模型." 现代电力 24.2(2007):4.

图片

发表评论:

Copyright Your WebSite.Some Rights Reserved.