基于布谷鸟算法优化的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/108404684

利用布谷鸟算法对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;%维度,即权值与阈值的个数
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.060466
CS-Elman的绝对误差和:0.0040519

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

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

6.参考文献

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

7.Matlab代码

基于布谷鸟算法优化的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. 【回归预测-FNN预测】基于蝙蝠算法优化前馈网络实现数据回归预测附Matlab代码

    1 内容介绍 强大的非线性映射能力使得人工神经网络越来越多地应用于数值预测.工程控制中,但神经网络在学习过程中,不可避免的存在着全局搜索能力差.容易跳入局部最优等不足,因而用神经网络技术预测的数据并不 ...

  8. 【ELM预测】基于鲸鱼算法优化极限学习机实现数据回归预测附matlab代码

    1 简介 为判断中国是否能够实现2030年碳排放强度下降60%-65%的承诺,以及碳排放总量是否能够在2030年达到峰值,论文构建了一个基于鲸鱼优化算法改进的极限学习机模型,对2019-2040年的碳 ...

  9. 【SVM预测】基于人工蜂群算法优化支持向量机SVM实现数据预测附Matlab代码

    1 简介 为确定合理的底板防水煤岩柱尺寸,减少底板突水安全事故的发生,利用支持向量机(SVM)与人工蜂群算法(ABCA)综合研究底板破坏深度问题.由于SVM训练参数惩罚因子C和核函数宽度g的选择对预测 ...

最新文章

  1. mysql查询每个机构下的账号总数_MySQL高可用方案:实践篇
  2. 苹果手机怎么清理听筒灰尘_安卓 | 让手机自动清理听筒扬声器灰尘,你试过了吗?...
  3. 用SQL语句更改数据库名,表名,列名
  4. 儿童节到了,你会让孩子将来当程序员吗?
  5. Linux路由应用-使用策略路由实现访问控制
  6. centos手动增加删除swap分区
  7. 用过http api 发送邮件
  8. 【转】每天一个linux命令(11):nl命令
  9. HorizontalScrollView实现侧滑效果
  10. linux/windows对应的软件
  11. vue图片宽高自适应_Vue组件宽高自适应问题
  12. IDEA断点变成了白色
  13. 学习记录, 带你玩转Pyppeteer (全干货)
  14. 来这里,找业务场景!巴比特今日上线产业区块链对接平台
  15. 解决word转PDF文件时图片位置改变和字体格式改变的问题
  16. tZERO母公司Overstock股票五个月暴涨37倍背后:已深耕区块链业务数年
  17. MySQL查询之索引
  18. Jenkins安装至项目发布全流程
  19. 电脑操作系统无法进入,报注册表损坏0x000014C,处理办法
  20. javascript中的this到底是指什么(一)?

热门文章

  1. 助力泵嗡嗡响解决方法_怎么解决转向助力泵嗡嗡响
  2. 计算机硬件安全措施,企业计算机硬件安全保障措施的探究
  3. 2023年PMP考试---备考教材清单!
  4. Linux grep/egrep命令详解
  5. linux 端口监听 Netstat 常用命令
  6. win10平板模式_Win10不支持miracast,你是不是就放弃了?
  7. 混音服务器系统盘,电脑开启和关闭立体声混音的详细步骤
  8. Oracle存储过程入门教程(通俗理解存储过程)
  9. 3D数学之方位与角位移、欧拉角与四元数
  10. 从寻找美食到美食家,源于一份分享