基于头脑风暴算法优化的Elman神经网络数据预测 - 附代码

基于头脑风暴算法优化的Elman神经网络数据预测 - 附代码

文章目录

  • 基于头脑风暴算法优化的Elman神经网络数据预测 - 附代码
    • 1.Elman 神经网络结构
    • 2.Elman 神经用络学习过程
    • 3.电力负荷预测概述
      • 3.1 模型建立
    • 4.基于头脑风暴优化的Elman网络
    • 5.测试结果
    • 6.参考文献
    • 7.Matlab代码

摘要:针对Elman神经网络,初始权值阈值盲目随机性的缺点。采用头脑风暴算法对ELman的阈值和权值进行优化。利用电力负荷预测模型进行测试,结果表明改进后的神经网络预测性能更佳。

1.Elman 神经网络结构

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

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

在这里插入图片描述

图1.Elman网络结构

2.Elman 神经用络学习过程

以图1为例 , Elman 网络的非线性状态空间表达式为 :
y ( k ) = g ( w 3 x ( k ) ) (1) y(k) = g(w^3x(k)) \tag{1} y(k)=g(w3x(k))(1)

x ( k ) = f ( w 1 x c ( k ) + w 2 ( u ( k − 1 ) ) ) (2) x(k)=f(w^1x_c(k)+w^2(u(k-1)))\tag{2} x(k)=f(w1xc(k)+w2(u(k1)))(2)

x c ( k ) = x ( k − 1 ) (3) x_c(k)=x(k-1)\tag{3} xc(k)=x(k1)(3)

式中, y y y m m m 维输出结点向量 ; x x x n n n 维中间层结点单元向量; u u u r r r 维输入向量; x c x_c xc n n n 维反馈状态向量; w 3 w^3 w3 为中间层到输出层连接权值; w 2 w^2 w2为输入层到中间层连接权值; w 1 w^1 w1为承接层到中间层的连接权值; g ( ∗ ) g(*) g()为输出神经元的传递函数,是中间层输出的线性组合; f ( ∗ ) f(*) f()为中间层神经元的传递函数,常采用 S S S 函数 。

Elman 神经网络也采用 BP 算法进行权值修正,学习指标函数采用误差平方和函数。
E ( w ) = ∑ k = 1 n ( y k ( w ) − y k ′ ( w ) ) 2 (4) E(w)=\sum_{k=1}^n(y_k(w)-y'_k(w))^2\tag{4} E(w)=k=1n(yk(w)yk(w))2(4)

3.电力负荷预测概述

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

3.1 模型建立

利用人工神经网络对电力系统负荷进行预测,实际上是利用人工神经网络可以以任意精度逼近任一非线性函数的特性及通过学习历史数据建模的优点。而在各种人工神经网络中, 反馈式神经网络又因为其具有输入延迟,进而适合应用于电力系统负荷预测。根据负荷的历史数据,选定反馈神经网络的输入、输出节点,来反映电力系统负荷运行的内在规律,从而达到预测未来时段负荷的目的。因此,用人工神经网络对电力系统负荷进行预测 ,首要的问题是确定神经网络的输入、输出节点,使其能反映电力负荷的运行规律。

一般来说,电力系统的负荷高峰通常出现在每天的 9~ 19 时之间 ,本案对每天上午的逐时负荷进行预测 ,即预测每天 9 ~ 11 时共 3 小时的负荷数据。电力系统负荷数据如下表所列,表中数据为真实数据,已经经过归 一化 。

时间负荷数据负荷数据负荷数据
2008.10.100.12910.48420.7976
2008.10.110.10840.45790.8187
2008.10.120.18280.79770.743
2008.10.130.1220.54680.8048
2008.10.140.1130.36360.814
2008.10.150.17190.60110.754
2008.10.160.12370.44250.8031
2008.10.170.17210.61520.7626
2008.10.180.14320.58450.7942

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

4.基于头脑风暴优化的Elman网络

头脑风暴算法原理请参考:https://blog.csdn.net/u011835903/article/details/108291102

利用头脑风暴算法对Elman网络的初始权值和阈值进行优化。适应度函数设计为测试集的绝对误差和:
f i t n e s s = ∑ i = 1 n ∣ p r e d i c t n − T r u e V a l u e n ∣ (5) fitness = \sum_{i=1}^n|predict_n - TrueValue_n| \tag{5} fitness=i=1npredictnTrueValuen(5)

5.测试结果

头脑风暴参数设置如下:

%% 网络相关参数设定
hiddNum = 18;%隐含层个数
R = size(p_train,1);%输入数据每组的维度
Q = size(t_train,1);%输出数据的维度
threshold = [0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1];%每组数据对应维度的最小(0)和最大值(1);
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/d4e22989e32849e2a41bb82d54160d1e.png#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ba3a62525a92436b834706eb300ffa20.png#pic_center)%% 头脑风暴相关参数设定
%% 定义头脑风暴优化参数
pop=20; %种群数量
Max_iteration=20; %  设定最大迭代次数
dim = hiddNum*R + hiddNum + Q + hiddNum*hiddNum + Q*hiddNum;%维度,即权值与阈值的个数,承接层个数
lb = -5.*ones(1,dim);%下边界
ub = 5.*ones(1,dim);%上边界
fobj = @(x) fun(x,hiddNum,R,Q,threshold,p_train,t_train,p_test,t_test);

从结果来看,3个时刻点,头脑风暴-Elman均比原始结果Elman好,误差更小。

由于上述数据有限,大家可以用自己的数据进行测试。

6.参考文献

书籍《MATLAB神经网络43个案例分析》

7.Matlab代码

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EDI 项目推进流程

EDI 需求确认 交易伙伴发来EDI对接邀请,企业应该如何应对? 首先需要确认EDI需求,通常包括传输协议和报文标准以及传输的业务单据类型。可以向交易伙伴发送以下内容: (中文版) 与贵司建立EDI连接需要使用…

中国计算机学会推荐国际学术会议及时间(计算机体系结构/高性能计算/存储系统)

中国计算机学会推荐国际学术会议及时间 (计算机体系结构/高性能计算/存储系统) 参考资料 参考链接: call4papers

网工内推 | 网络工程师,NP认证优先,上市公司,包吃,最高15薪

01 无锡先导智能装备股份有限公司 招聘岗位:高级网络工程师 职责描述: 1.依据项目规划方案提供硬件及网络方案设计; 2.面向客户提供网络技术支持,包括故障的解决、性能的优化、日常维护等; 3.和合作伙伴、供应商的技术…

(七)独立按键

文章目录 独立按键原理图三行代码法简单概述代码书写键码推算如何使用短按键长按键 状态机法简单概述代码书写键码推算如何使用短按键长按键 现象 独立按键原理图 三行代码法 简单概述 代码书写 u8 Trg 0x00;//短按键 u8 Cont 0x00;//长按键 void BtnThree(void) {u8 reada…

打造专业开发者指南:针对ShardingProxy分库分表解决策略的深度剖析 – 详解部署、使用、服务治理与优化技巧

一、 ShardingProxy快速使用 ShardingProxy的功能同样是分库分表,但是他是一个独立部署的服务端,提供 统一的数据库代理服务。注意,ShardingProxy目前只支持MySQL和PostgreSQL。并且,客户端连接ShardingProxy时,最好使…

Java反射机制和动态代理

反射和动态代理 反射前言获取class对象的方式反射获取构造方法反射获取成员变量反射获取成员方法实例 动态代理 反射 前言 什么是反射? 反射允许对成员变量,成员方法和构造方法的信息进行编程访问。 为什么用反射 / 反射的作用? 可以轻易地获…

图像分割-漫水填充法 floodFill (C#)

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 本文的VB版本请访问:图像分割-漫水填充法 floodFill-CSDN博客 FloodFill方法是一种图像处理算法,它的目的是…

【SpringBoot框架篇】34.使用Spring Retry完成任务的重试

文章目录 简要1.为什么需要重试?2.添加maven依赖3.使用Retryable注解实现重试4.基于RetryTemplate模板实现重试 简要 Spring实现了一套重试机制,功能简单实用。Spring Retry是从Spring Batch独立出来的一个功能,已经广泛应用于Spring Batch,…

哪些洗地机比较好?洗地机选购指南

随着社会生活水平的提高,人们对居家环境的卫生和清洁要求不断提升。家用洗地机作为一种先进的清洁工具,带来了许多便利和优势,特别是在解决一些特殊需求的家庭环境方面。 以下是一些家用洗地机的优势和适用场景: 1.高效清洁&…

Hive用户自定义函数之UDF开发

在进行大数据分析或者开发的时候,难免用到Hive进行数据查询分析,Hive内置很多函数,但是会有一部分需求需要自己开发,这个时候就需要自定义函数了,Hive的自定义函数开发非常方便,今天首先讲一下UDF的入门开发…

爬虫如何获取免费代理IP(二)

89ip代理爬取代码实现 一、代码实现 import requests import time import random from fake_useragent import UserAgent from lxml import etree import os import csv""" 89ip代理爬取 """class IPSipder(object):def __init__(self):self.u…

macbook电脑2024免费好用的系统清理优化软件CleanMyMac X4.14.7

CleanMyMac X2024来帮助你找到和删除不需要的文件。CleanMyMac X是一款专业的mac清理软件,它可以智能地扫描你的磁盘空间,找出并删除大型和旧文件,系统垃圾,iTunes垃圾,邮件附件,照片库垃圾等,让…