一、Elman神经网络介绍

1.特点
Elman神经网络是一种典型的动态递归神经网络,它是在BP网络基本结构的基础上,在隐含层增加一个承接层,作为一步延时算子,达到记忆的目的,从而使系统具有适应时变特性的能力,增强了网络的全局稳定性,它比前馈型神经网络具有更强的计算能力,还可以用来解决快速寻优问题。
2.结构
Elman神经网络是应用较为广泛的一种典型的反馈型神经网络模型。一般分为四层:输入层、隐层、承接层和输出层。其输入层、隐层和输出层的连接类似于前馈网络。输入层的单元仅起到信号传输作用,输出层单元起到加权作用。隐层单元有线性和非线性两类激励函数,通常激励函数取Signmoid非线性函数。而承接层则用来记忆隐层单元前一时刻的输出值,可以认为是一个有一步迟延的延时算子。隐层的输出通过承接层的延迟与存储,自联到隐层的输入,这种自联方式使其对历史数据具有敏感性,内部反馈网络的加入增加了网络本身处理动态信息的能力,从而达到动态建模的目的。其结构图如下图1所示,

其网络的数学表达式为:



其中,y为m维输出节点向量;x为n维中间层节点单元向量;u为r维输入向量;为n维反馈状态向量;为中间层到输出层连接权值;为输入层到中间层连接权值;为承接层到中间层连接权值;g()为输出神经元的传递函数,是中间层输出的线性组合;f()为中间层神经元的传递函数,常采用S函数。
3.与BP网络的区别
它是动态反馈型网络,它能够内部反馈、存储和利用过去时刻输出信息,既可以实现静态系统的建模,还能实现动态系统的映射并直接反应系统的动态特性,在计算能力及网络稳定性方面都比BP神经网络更胜一筹。
4.缺点
与BP神经网络一样,算法都是采用基于梯度下降法,会出现训练速度慢和容易陷入局部极小点的缺点,对神经网络的训练较难达到全局最优。

二、布谷鸟算法

布谷鸟算法是布谷鸟育雏行为和萊维飞行结合的一种算法 。 ​ 在CS算法中,有两个路径(或者说成是两个位置的更新)备受关注:

CS算法的执行过程如下:

三、算法流程

步骤1:输入影响因素数据与目标输出数据,ELMAN神经网络划分训练集与测试集,对数据归一化处理,

步骤2:构建ELMAN神经网络,初始化网络结构。

步骤3:布谷鸟算法参数初始化。初始化最大迭代次数N,种群大小n,以及c1,c2,w参数。

步骤4:初始化粒子群算法PSO的种群位置。根据步骤2的网络结构,计算需要优化的变量元素个数。

步骤5:使用布谷鸟算法优化。将适应度函数设为ELMAN预测的均方误差。执行布谷鸟的循环体过程,即速度更新和位置更新,直至达到最大迭代次数,终止粒子群优化算法。

步骤6:将布谷鸟优化后的权值和阈值参数,赋给ELMAN神经网络。(或者在循环体当中,将网络结构理解为优化变量,输出最优的网络结构)。

步骤7:布谷鸟优化后的ELMAN神经网络训练和预测,并与优化前的ELMAN神经网络进行预测误差分析和对比。

四、演示代码


%#ok<*SAGROW> Remove hints of syntax
%#ok<*CLALL>
%#ok<*FNDSB>
clear all ;
close all ;
clc ;
N = 25; % Number of nests(The scale of solution)
D = 10 ; %  Dimensionality of solution
T = 200 ; % Number of iterations
Xmax = 20 ;
Xmin = -20 ;
Pa = 0.25 ; % Probability of building a new nest(After host bird find exotic bird eggs)
nestPop = rand(N,D)*(Xmax-Xmin)+Xmin ;  % Random initial solutions
for t=1:Tlevy_nestPop =  func_levy(nestPop,Xmax,Xmin) ; % Generate new solutions by Levy flightsnestPop = func_bestNestPop(nestPop,levy_nestPop);  % Choose a best nest among  new and old nests     rand_nestPop = func_newBuildNest(nestPop,Pa,Xmax,Xmin); % Abandon(Pa) worse nests and build new nests by (Preference random walk )nestPop = func_bestNestPop(nestPop,rand_nestPop) ; % Choose a best nest among  new and old nests[~,index] = max(func_fitness(nestPop)) ; % Best neststrace(t) = func_objValue(nestPop(index,:)) ;
end
figure
plot(trace);
xlabel('迭代次数') ;
ylabel('适应度值') ;
title('适应度进化曲线') ;

五、仿真结果

代码结果图:

六、参考文献

《排土场沉降预测的Elman模型及_省略_性分析_以大宝山矿李屋排土场为例_宁志杰》

【ELMAN预测】基于布谷鸟算法改进ELMAN动态递归神经网络实现数据预测matlab源码相关推荐

  1. 【ELMAN预测】基于粒子群算法改进ELMAN动态递归神经网络实现数据预测matlab源码

    一.Elman神经网络介绍 1.特点 Elman神经网络是一种典型的动态递归神经网络,它是在BP网络基本结构的基础上,在隐含层增加一个承接层,作为一步延时算子,达到记忆的目的,从而使系统具有适应时变特 ...

  2. 【语音识别】基于DTW算法实现0~9数字和汉字语音识别含Matlab源码

    1 简介 在孤立词语音识别中,动态时间规整DTW算法是一种应用较为广泛的算法之一,有着较强的科学性,在立足于当前DTW语音识别算法应用的实际情况下,简略阐述了该课题的研究背景,并从预处理和特征参数提取 ...

  3. 通俗易懂的布谷鸟算法与莱维飞行,(附求解函数最小值matlab源码)

    1 从布谷鸟的育雏到布谷鸟算法 2 布谷鸟算法 3 萊维飞行与公式(1)的深层含义 4 附:CS算法求解函数最小值代码 5 源码下载 6 参考文献 1 从布谷鸟的育雏到布谷鸟算法 布谷鸟不会做窝,也不 ...

  4. 莱维飞行matlab作图,通俗易懂的布谷鸟算法与莱维飞行,(附求解函数最小值matlab源码)-Go语言中文社区...

    1 从布谷鸟的育雏到布谷鸟算法 布谷鸟不会做窝,也不会育雏,在春末夏初,向北飞,趁别的鸟(宿主鸟)外出觅食时,将卵蛋产在宿主鸟窝里,让宿主鸟抚养自己孩子 .当然,布谷鸟在产卵前,为了不被宿主鸟发现鸟窝 ...

  5. 【目标融合】基于拓展卡尔曼滤波实现车载激光雷达和雷达的数据融合matlab源码

    一.简介 扩展卡尔曼滤波器理论 如下图所示.扩展卡尔曼滤波的理论和编程依旧需要使用到这些公式,相比于原生的卡尔曼滤波,只在个别地方有所不同. 1.代码:初始化(Initialization) 扩展卡尔 ...

  6. 【路径规划】基于matlab DWA算法机器人局部避障路径规划【含Matlab源码 890期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[路径规划]基于matlab DWA算法机器人局部避障路径规划[含Matlab源码 890期] 获取代码方式2: 通过订阅紫极神光博客付费 ...

  7. A星融合DWA的路径规划算法,可实现静态避障碍及动态避障,代码注释详细,matlab源码

    A星融合DWA的路径规划算法,可实现静态避障碍及动态避障,代码注释详细,matlab源码 ID:4525679980340317云的歌儿

  8. 【多目标优化求解】基于matlab粘菌算法MOSMA求解多目标优化问题【含Matlab源码 2279期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[多目标优化求解]基于matlab粘菌算法MOSMA求解多目标优化问题[含Matlab源码 2279期] 点击上面蓝色字体,直接付费下载, ...

  9. 【多目标优化求解】基于matlab飞蛾扑火算法 (NSMFO)求解多目标优化问题 【含Matlab源码 2312期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[多目标优化求解]基于matlab飞蛾扑火算法 (NSMFO)求解多目标优化问题 [含Matlab源码 2312期] 点击上面蓝色字体,直 ...

最新文章

  1. 计算机论文数据建模怎么写,如何撰写建模论文?
  2. 初学python下载哪个版本-学python下载哪个版本
  3. 阿里P7架构师详解微服务链路追踪原理
  4. Java的新项目学成在线笔记-day6(五)
  5. laravel5.6 mysql_快速入门 |《Laravel 5.6 中文文档 5.6》| Laravel China 社区
  6. lintcode: 跳跃游戏 II
  7. Atom飞行手册翻译: 2.7 ~ 2.10
  8. .NET Core 3 WPF MVVM框架 Prism系列之事件聚合器
  9. 什么是边缘计算边缘计算_什么是边缘计算?
  10. mysql 创建时间 只能设置一个_在MySQL中创建数据表时,可以设定主键、外键。那么对于一个数据表,能设置的主键和外键个数最多分别是...
  11. python多环境管理_Python多版本环境管理之pyenv
  12. linux中 在文件中写入一句话怎么写_shell文件处理笔记之插入文本到文件的方法...
  13. [转]信息安全相关理论题(四)
  14. 小游戏学习--获取已发布微信小游戏源码 creator cocos 编译出微信平台代码 喵喵切水果 跑酷
  15. 智慧工厂管理系统全面提升智能化水平
  16. 计算机组成原理课程设计-logisim仿真补码一位乘
  17. 消融实验(ablation study)是什么?
  18. win10激活工具---KMSAutoNet
  19. spark 概述与安装
  20. 微分,变分,差分的确切定义与区别

热门文章

  1. 趣学python编程中文版pdf
  2. 怎么提高移动硬盘的传输速度?方法介绍
  3. Python定时任务库Celery——分布式任务队列
  4. oppo的android面试准备
  5. 投资理财__读懂利润表
  6. win10钉钉机器人自动发消息(定时器自动执行脚本)
  7. JavaScript进行数组对象去重
  8. 给Android应用开发小团队的十个建议
  9. 勒索病毒“顽疾”,没有“特效药”吗?
  10. SpringCloud介绍