点击上方蓝字关注“公众号”

e1f4be3fec0f8ad4df7d5bcf7cf3dd38.gif

MATLAB  Elman神经网络的数据预测—电力负荷预测模型研究

负荷预测的核心问题是预测的技术问题,或者说是预测的数学模型。

传统的数学模型是用显示的数学表达式加以描述,具有计算量小、速度快的优点,但同时也存在很多的缺陷和局限性,比如不具备自学习、自适应能力、预测系统的鲁棒性没有保障等。

特别是随着我国经济的发展,电力系统的结构日趋复杂,电力负荷变化的非线性、时变性和不确定性的特点更加明显,很难建立一个合适的数学模型来清晰地表达负荷和影响负荷的变量之间的关系。

而基于神经网络的非数学模型预测法,为解决数学模型法的不足提供了新的思路。

954487cbd540bd29e39a3fd1da1ca7ea.gif

根据神经网络运行过程中的信息流向,可分为前馈式和反馈式两种基本类型。

前馈网络通过引入隐层以及非线性转移函数,网络具有复杂的非线性映射能力。

但前馈网络的输出仅由当前输入和权矩阵决定,而与网络先前的输出状态无关。

反馈型神经网络也称递归网络或回归网络。

反馈网络的输入包括有延迟的输入或者输出数据的反馈。

由于有反馈的输入,所以它是一种反馈动力学系统。

这种系统的学习过程就是它的神经元状态的变化过程,这个过程最终会达到一个神经元状态不变的稳定态,也标志着学习过程的结束。

Elman神经网络是Elman于1990年提出的,该模型在前馈网络的隐含层中增加了一个承接层,作为一步延时的算子,以达到记忆的目的,从而使系统具有适应时变特性的能力,能直接动态反映动态过程系统的特性。

Elman型回归神经网络一般分为四层:输入层,中间层(隐含层),承接层和输出层。

起输入层,隐含层和输出成的连接类似于前馈网络,输入层的单元仅起信号传输作用,输出层单元起线性加权作用。

隐含层单元的传递函数可采用线性或非线性函数,承接层又称为上下文层或者状态层,它用来记忆隐含层单元前一时刻的输出值并返回给输入,可以认为是一个一步延时算子。

0eed16769f5709e14d43ad25d9315d5c.gif 37534ff6d7e1abc839961728e216cfad.png 9ed6adde3c1e35c8f4cee3bd6f365da5.png

01

Elman神经网络算法程序

%%  基于Elman神经网络的电力负荷预测模型研究%% 清空环境变量clc;clear allclose allnntwarn off;%% 数据载入load data;a=data;

585895c01c78a107c916588d750f8a30.gif

01

训练

%% 选取训练数据和测试数据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';

02

%% 网络的建立和训练
% 利用循环,设置不同的隐藏层神经元个数
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

03

%% 通过作图 观察不同隐藏层神经元个数时,网络的预测效果
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;

04

仿真结果图

f254cb89399902111df790ccb5649565.png

cc8c571ed58527f966ba9781081ae279.png

bff2dcd9d91ee509308e146c1b64d253.gif

具体仿真程序链接,微信公众号回复【神经网络】即可获得链接。

未完待续

扫码关注

不迷路

576c1d484adff2055a1e86ddf80d0c5b.gif

点击阅读全文
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐