基于麻雀搜索算法优化的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(w3x(k))(1)y(k) = g(w^3x(k)) \tag{1} y(k)=g(w3x(k))(1)

x(k)=f(w1xc(k)+w2(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(k−1)))(2)

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

式中, yyy 为 mmm 维输出结点向量 ; xxx 为 nnn 维中间层结点单元向量;uuu 为 rrr 维输入向量; xcx_cxc​为 nnn 维反馈状态向量; w3w^3w3 为中间层到输出层连接权值; w2w^2w2为输入层到中间层连接权值; w1w^1w1为承接层到中间层的连接权值;g(∗)g(*)g(∗)为输出神经元的传递函数,是中间层输出的线性组合; f(∗)f(*)f(∗)为中间层神经元的传递函数,常采用 SSS 函数 。

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

3.电力负荷预测概述

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

3.1 模型建立

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

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

时间 负荷数据 负荷数据 负荷数据
2008.10.10 0.1291 0.4842 0.7976
2008.10.11 0.1084 0.4579 0.8187
2008.10.12 0.1828 0.7977 0.743
2008.10.13 0.122 0.5468 0.8048
2008.10.14 0.113 0.3636 0.814
2008.10.15 0.1719 0.6011 0.754
2008.10.16 0.1237 0.4425 0.8031
2008.10.17 0.1721 0.6152 0.7626
2008.10.18 0.1432 0.5845 0.7942

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

4.基于麻雀搜索优化的Elman网络

麻雀搜索算法的具体原理参考博客:https://blog.csdn.net/u011835903/article/details/108830958。

利用麻雀搜索算法对Elman网络的初始权值和阈值进行优化。适应度函数设计为测试集的绝对误差和:
fitness=∑i=1n∣predictn−TrueValuen∣(5)fitness = \sum_{i=1}^n|predict_n - TrueValue_n| \tag{5} fitness=i=1∑n​∣predictn​−TrueValuen​∣(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);%% 麻雀相关参数设定
%% 定义麻雀优化参数
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);

原始Elman的绝对误差和:0.19782
SSA-Elman的绝对误差和:0.015998

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

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

6.参考文献

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

7.Matlab代码

基于麻雀搜索算法优化的Elman神经网络数据预测 
基于灰狼优化的Elman神经网络数据预测
基于遗传算法优化的Elman神经网络数据预测
基于鲸鱼优化的Elman神经网络数据预测
基于粒子群优化的Elman神经网络数据预测

个人资料介绍

基于麻雀搜索算法优化的Elman神经网络数据预测 - 附代码相关推荐

  1. 基于布谷鸟算法优化的Elman神经网络数据预测-附代码

    基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于布谷鸟算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...

  2. 基于鲸鱼算法优化的Elman神经网络数据预测-附代码

    基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于鲸鱼算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...

  3. 基于海鸥算法优化的Elman神经网络数据预测-附代码

    基于海鸥算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于海鸥算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...

  4. 基于蜣螂优化的Elman神经网络数据预测-附代码

    基于蜣螂算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于蜣螂算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...

  5. 基于粒子群算法优化的Elman神经网络数据预测-附代码

    基于粒子群算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于粒子群算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电 ...

  6. 基于遗传算法优化的Elman神经网络数据预测-附代码

    基于遗传算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于遗传算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...

  7. 基于灰狼算法优化的Elman神经网络数据预测

    基于灰狼算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于灰狼算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...

  8. 基于麻雀搜索算法优化的支持向量机回归预测-附代码

    基于麻雀搜索算法优化的支持向量机预测及其MATLAB代码实现 文章目录 基于麻雀搜索算法优化的支持向量机预测及其MATLAB代码实现 1. 基于麻雀搜索算法优化的支持向量机预测简介 1.1 支持向量机 ...

  9. 基于麻雀搜索算法优化的lssvm回归预测

    基于麻雀搜索算法优化的lssvm回归预测 - 附代码 文章目录 基于麻雀搜索算法优化的lssvm回归预测 - 附代码 1.数据集 2.lssvm模型 3.基于麻雀算法优化的LSSVM 4.测试结果 5 ...

  10. 基于头脑风暴优化的BP神经网络(预测应用) - 附代码

    基于头脑风暴优化的BP神经网络(预测应用) - 附代码 文章目录 基于头脑风暴优化的BP神经网络(预测应用) - 附代码 1.数据介绍 3.BSO优化BP神经网络 3.1 BP神经网络参数设置 3.2 ...

最新文章

  1. 价值1.4万元的课程讲义开源,fast.ai发布新书源代码,登GitHub趋势榜第一
  2. 韦东山u-boot、kernel打补丁操作
  3. 话里话外:信息整合之障
  4. C++中this指针的使用方法.
  5. 有限自动机的构造与识别
  6. 200 个工具分析机器学习十年:前途未卜、工程师是核心!
  7. _self.$scopedSlots.default is not a function报错
  8. python语法学习第五天--函数(2)
  9. python+seleniun+pyqt5 易班经验刷取开发记录
  10. ​windows系统——更改系统音效为钢铁侠贾维斯​
  11. 第九届全国大学生机械设计创新大赛基于STM32F407的HMI USART串口屏智能药箱设计
  12. 身份证号判断和年龄计算
  13. 3.1 Vendor Model浅析
  14. 穿越派·派盘 + 思源笔记 = 私人笔记本
  15. 惠普触控板使用指南_惠普笔记本关闭触摸板【操作思路】
  16. scratch飞翔的小猫 电子学会图形化编程scratch等级考试一级真题和答案解析2022年3月
  17. Golang的Ticker使用姿势
  18. 【Scala-spark.mlib】分布式矩阵——分布式计算的基石与利器
  19. 27 Three.js的平行光THREE.DirectionalLight
  20. python视频教程大全集下载啦!超级全的教程!

热门文章

  1. ttl备份机顶盒固件_电信盒子华丽变身全网通盒子,电视免费看,备份固件方法详解...
  2. 旅游景点网站景区景点购票系统毕业设计毕业论文参考(3)后台管理功能
  3. ubuntu12.04 如何设置wiznote到快捷启动栏
  4. 现代通信原理思维导图--第五章 模拟调制系统
  5. 红黑所-1996-2011年中国黑客大事记
  6. 软件测试术语中英文对照
  7. 阮一峰ES6学习笔记
  8. nbu备份软件异机恢复需要注意问题
  9. Maven安装与配置,Idea配置Maven
  10. Maven安装配置及在idea中配置