基于Elman神经网络的电力负荷预测

news2024/12/27 13:24:13

1 案例背景

1.1 Elman神经网络概述

        根据神经网络运行过程中的信息流向,可将神经网络可分为前馈式和反馈式两种基本类型。前馈式网络通过引入隐藏层以及非线性转移函数可以实现复杂的非线性映射功能。但前馈式网络的输出仅由当前输人和权矩阵决定,而与网络先前的输出结果无关。反馈型神经网络也称递归网络或回归网络。反馈神经网络的输入包括有延迟的输入或者输出数据的反馈,由于存在有反馈的输入,所以它是一种反馈动力学系统;这种系统的学习过程就是它的神经元状态的变化过程,这个过程最终会达到一个神经元状态不变的稳定态,也标志着学习过程的结束。
        反馈网络的动态学习特征,主要由网络的反馈形式决定。反馈网络的反馈形式是比较多样化的,有输人延迟,单层输出反馈,神经元自反馈、两层之间互相反馈等类型。常见的反馈型神经网络有Elman神经网络、Hopfield神经网络和与离散Hopfield结构相似的 Boltzmann神经网络等。Elman 神经网络是Elman于1990年提出的,该模型在前馈式网络的隐含层中增加了一个承接层,作为一步延时的算子,以达到记忆的目的,从而使系统具有适应时变特性的能力,能直接动态反映动态过程系统的特性。

1.2 Elman神经网络结构

        Elman型神经网络一般分为四层:输入层、隐含层(中间层),承接层和输出层。如图23-1所示,输入层、隐含层、输出层的连接类似于前馈式网络,输入层的单元仅起信号传输作用,输出层单元起线性加权作用。隐含层单元的传递函数可采用线性或非线性函数﹐承接层又称上下文层或状态层,它用来记忆隐含层单元前一时刻的输出值并返回给网络的输人,可以认为是一个一步延时算子。


        Elman神经网络的特点是隐含层的输出通过承接层的延迟与存储,自联到隐含层的输人。这种自联方式使其对历史状态的数据具有敏感性,内部反馈网络的加入增强了网络本身处理动态信息的能力,从而达到动态建模的目的。此外,Elman神经网络能够以任意精度逼近任意非线性映射,可以不考虑外部噪声对系统影响的具体形式,如果给出系统的输入输出数据对,就可以对系统进行建模。 

1.3 Elman神经网络学习过程

        以图23 -1为例,Elman 网络的非线性状态空间表达式为

1.4电力负荷预测概述

        电力系统由电力网、电力用户共同组成,其任务是给广大用户不间断地提供经济、可靠、符合质量标准的电能,满足各类负荷的需求,为社会发展提供动力。由于电力的生产与使用具有特殊性,即电能难以大量储存,而且各类用户对电力的需求是时刻变化的,这就要求系统发电出力应随时与系统负荷的变化动态平衡,即系统要最大限度地发挥出设备能力使整个系统保持稳定且高效地运行,以满足用户的需求。否则,就会影响供用电的质量,甚至危及系统的安全与稳定。因此,电力系统负荷预测技术发展了起来,并且是这一切得以顺利进行的前提和基础。
        负荷预测的核心问题是预测的技术问题,或者说是预测的数学模型。传统的数学模型是用现成的数学表达式加以描述,具有计算量小,速度快的优点,但同时也存在很多的缺陷和局限性,比如不具备自学习,自适应能力、预测系统的鲁棒性没有保障等。特别是随着我国经济的发展,电力系统的结构日趋复杂,电力负荷变化的非线性,时变性和不确定性的特点更加明显,很难建立一个合适的数学模型来清晰地表达负荷和影响负荷的变量之间的关系。而基于神经网络的非数学模型预测法,为解决数学模型法的不足提供了新的思路。

2 模型建立

        利用人工神经网络对电力系统负荷进行预测,实际上是利用人工神经网络可以以任意精度逼近任一非线性函数的特性及通过学习历史数据建模的优点。而在各种人工神经网络中,反馈式神经网络又因为其具有输人延迟,进而适合应用于电力系统负荷预测。根据负荷的历史数据,选定反馈神经网络的输入,输出节点,来反映电力系统负荷运行的内在规律,从而达到预测未来时段负荷的目的。因此,用人工神经网络对电力系统负荷进行预测,首要的问题是确定神经网络的输入、输出节点,使其能反映电力负荷的运行规律。
        一般来说,电力系统的负荷高峰通常出现在每天的9~19时之间,出于篇幅的原因,本案例只对每天上午的逐时负荷进行预测,即预测每天9~11时共3小时的负荷数据。电力系统负荷数据如表23-1所列,表中数据为真实数据,已经经过归一化。

        利用前8天的数据作为网络的训练样本,每3天的负荷作为输人向量,第4天的负荷作为目标向量。这样可以得到5组训练样本。第9天的数据作为网络的测试样本,验证网络能否合理地预测出当天的负荷数据。

3 MATLAB实现

        本例中用到的关键函数为newelm(),其作用为创建一个 Elman网络,其调用格式如下:net = newelm(PR,[S1 S2….SN1],{TF1 TF2...TEN1},BTF,BLF,PF, IPF,OPF)
其中,PR为R组输入元素的最小值和最大值的设定值,R*2维的矩阵;T为 SN*Q2的具有SN个元素的输出矩阵;Si为第i层的长度;TFi为第i层的传递函数,默认值:隐藏层为'tansig',输出层为'purelin ';BTF为反向传播神经网络训练函数,默认值为'trainlm');BLF为反向传播神经网络权值/阈值学习函数,默认值为'learngdm ';PF为性能函数,默认值为'mse';IPF为输人处理函数﹐默认值为:'{' fixunknowns ',' removeconstantrows ',' mapminmax 'y';OPF为输出处理函数,默认值为'{'removeconstantrows ',' mapminmax 'y'。
        MATLAB实现代码如下:

%% 清空环境变量

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;
        预测的结果如图 所示。

        由图可知:网络预测误差还是比较小的,但是,中间神经元为14时出现了较大的误差。这可能是训练样本太小导致的。当中间神经元为11个时,网络的预测误差最小,也就是预测性能最好。因此,对于本例,中间层神经元的最佳数目应该是11个。

4 案例扩展

        目前,电力系统的负荷预测仍然是一个难点,这主要是由于电力系统的复杂性造成的。本案例为时间序列类型数据预测提供了依据和思路。但对于电力负荷预测来说,只考虑历史数据是不够的,即建模不仅仅取决于历史数据,同时也受许多突变因素影响,如基础数据信息的局限、天气信息数据的缺乏等。另外,由于工作日和节假日的负荷不同,还要考虑时间特征值。本例由于篇幅有限,对预测模型做了简单化处理,但这并不影响Elman预测功能的演示。
        Elman神经网络是一种典型的动态神经网络,它是在BP网络基本结构的基础上,通过存储内部状态使其具备映射动态特征的功能,从而使系统具有适应时变特性的能力由于训练样本较少,预测时出现相对较大误差的情况是可能的,可以通过加大样本量、事先剔除错误数据等避免。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/861363.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Postman中,既想传递文件,还想传递多个参数(后端)

需求:既想传文件又想传多个参数可以用以下方式实现

2023年的深度学习入门指南(25) - 通义千问7b

2023年的深度学习入门指南(25) - 通义千问7b 最近发生的两件事情都比较有意思,一个是连续开源了7b和13b模型的百川,对其53b闭源了;另一个是闭源项目通义千问开源了自己的7b模型。 下面我们就来研究下通义千问7b. 使用通义千问7b 首先安装…

LeetCode 31题:下一个排列

目录 题目 思路 代码 题目 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如,arr [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下一个字典序…

sql高频面试题-去除最高最低的平均

面试或者笔试的过程中会设定各种各样的场景,在这些场景下考查我们SQL的查询能力,但是万变不离其宗,业务场景只是一个表现形式,抽象为SQL问题后其实基本上就是几类问题:计算累计、连续,分类TopN等。只要掌握…

浅谈智能配电房在海岛中的应用 安科瑞 顾语欢

摘要:以海陵岛旅游区海岛智能配电房设计方案为研究对象,从功能设计、逻辑设计和拓扑设计三方面进行 分析,得出契合海陵岛实际和海岛特点的智能配电房方案设计。通过对设计方案研究,总结提炼了海岛智 能配电房组成要素,为进一步提炼统一规范的智能配电房技术标准打下…

Spring Gateway+Security+OAuth2+RBAC 实现SSO统一认证平台

背景:新项目准备用SSO来整合之前多个项目的登录和权限,同时引入网关来做后续的服务限流之类的操作,所以搭建了下面这个系统雏形。 关键词:Spring Gateway, Spring Security, JWT, OAuth2, Nacos, Redis, Danymic datasource, Jav…

Apoll 多项式规划求解

一、纵向规划 void QuarticPolynomialCurve1d::ComputeCoefficients(const float x0, const float dx0, const float ddx0, const float dx1,const float ddx1, const float p) {if (p < 0.0) {std::cout << "p should be greater than 0 at line 140." &…

平稳随机过程

平稳随机过程的概念&#xff1a;并不是说所有时刻的概率分布相同&#xff0c;而是说概率随时间的分布是周期性的&#xff0c;同一个相位的概率相同。 图中已经证明了&#xff0c;平稳过程的期望值是常数。 但是&#xff0c;平稳过程的方差和均方值也是常数。此结论该如何证明呢…

软考高级架构师——4、软件开发方法

软件开发方法是软件开发的方法学。自从“软件危机”爆发以来&#xff0c;软件研究人员就在对 开发方法进行不断地研究&#xff0c;以期能够提高软件的质量、降低软件的成本。经过 40 多年的研 究&#xff0c;人们提出了很多开发方法&#xff0c;如最初的结构化开发到现在非常流…

网络安全(黑客)常用工具(附配套资料+工具安装包)

几十年来&#xff0c;攻击方、白帽和安全从业者的工具不断演进&#xff0c;成为网络安全长河中最具技术特色的灯塔&#xff0c;并在一定程度上左右着网络安全产业发展和演进的方向&#xff0c;成为不可或缺的关键要素之一。 话不多说&#xff0c;2022年全球白帽常用工具排行榜…

[Leetcode] [Tutorial] 回溯

文章目录 46. 全排列Solution 78. 子集Solution 17. 电话号码的字母组合Solution 39. 组合总和Solution 22. 括号生成Solution 46. 全排列 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例&#xff1a; 输入&…

AI 降临!!!

人的记忆是脆弱的。因此&#xff0c;个人笔记成为了我们构建第二大脑和进行知识管理的重要手段。然而&#xff0c;人工智能的崛起&#xff0c;无疑改变了我们处理信息和知识的方式。作为一名长期关注笔记方法论和 AI 软件的「效率成瘾者」和「软件发烧友」&#xff0c;我深感此…

linux测试网络速度

大家都知道&#xff0c;Linux界面基本都是命令行模式&#xff0c;但是命令行模式也可以测试网速&#xff0c;我们就要用这个工具&#xff1a;speedtest&#xff0c;linux上的版本是基于python开发的。 1、是从githup上下载的这个工具&#xff0c;所以我们需要在linux上要安装gi…

macbook有哪些好用的软件

最近有朋友留言说让小编推荐一些macbook必备应用软件&#xff0c;这不&#xff0c;macdown小编就精心整理了20多款有着不同用途的软件&#xff0c;自己用着还不错&#xff0c;现在分享给大家&#xff0c;整理不易&#xff0c;希望大家点赞收藏&#xff01; 最近有朋友留言说让小…

【git】解决遇到的问题

目录 一、error: RPC failed; curl 6 OpenSSL SSL_read: Connection was reset, errno 10054 二、error: RPC failed; curl 6 OpenSSL SSL_read: Connection was reset, errno 10054 一、error: RPC failed; curl 6 OpenSSL SSL_read: Connection was reset, errno 10054 报…

【c语言】指针进阶(超详细)

文章目录 ✈ 指向函数指针数组的指针&#x1f4cc;指向函数指针数组的指针的定义&#x1f4cc;指向函数指针数组的数组指针的使用 ✈回调函数&#x1f4cc; 回调函数的定义&#x1f4cc; 回调函数的使用 ✈qsort函数&#x1f4cc; qsort函数的作用&#x1f4cc;qsort函数的定义…

OceanBase X Flink 基于原生分布式数据库构建实时计算解决方案

摘要&#xff1a;本文整理自 OceanBase 架构师周跃跃&#xff0c;在 Flink Forward Asia 2022 实时湖仓专场的分享。本篇内容主要分为四个部分&#xff1a; 分布式数据库 OceanBase 关键技术解读 生态对接以及典型应用场景 OceanBase X Flink 在游戏行业实践 未来展望 点击…

超导热催生meme,换汤不换药的投机轮回

文/章鱼哥 出品/陀螺财经 币圈对炒作meme概念的热情从未消亡过。 随着一种名为LK-99的物质被发现&#xff0c;围绕超导的兴奋不仅激发了科学界&#xff0c;加密货币相关概念也与之沸腾。不出所料&#xff0c;与此前围绕元宇宙、AI大肆炒作一样&#xff0c;许多meme代币已经出现…

多货币多汇率跨境电子商城建设(仓储管理、网络安全)

多货币多汇率跨境电子商城建设需要考虑到多个方面&#xff0c;包括仓储管理、网络安全、货币兑换、物流配送等。以下是具体的介绍&#xff1a; 一、仓储管理 仓储管理是跨境电子商城的重要组成部分&#xff0c;需要考虑到商品的存储、管理和分拣等环节。以下是需要注意的几个…

Pytest三种运行方式

Pytest 运行方式共有三种&#xff1a; 1、主函数模式 运行所有 pytest.main() 指定模块 pytest.main([-vs],,./testcase/test_day1.py) 只运行testcase 下的test_day1.py 文件 指定目录 pytest.main([-vs]),./testcase) 只运行testcase 目录下的文件 通过nodeid指定用例…