50、基于NARX神经网络的磁悬浮建模(matlab)

1、NARX神经网络简介

NARX(非线性自回归外部输入)神经网络是一种用于非线性建模和预测的神经网络结构。与传统的自回归模型不同,NARX网络可以接收外部输入来影响输出结果,从而更好地捕捉系统的复杂性和非线性特征。

NARX神经网络通常包含一个自回归层和一个外部输入层,用于处理历史数据和外部输入数据。这两层之间通常包含多个隐藏层,以增加网络的表达能力和拟合能力。NARX网络在许多领域广泛应用,如时间序列预测、控制系统建模和信号处理等。

NARX网络的训练通常使用反向传播算法,通过最小化网络输出与真实输出之间的误差来调整网络参数。NARX网络的性能取决于网络结构的设计、训练数据的质量和数量,以及网络的超参数设置。通过合理设计和调整,NARX网络可以取得很好的预测效果,广泛应用于实际工程和科学问题中。

2、基于NARX神经网络的磁悬浮建模原理及流程

磁悬浮系统是一种利用磁力和电流来控制物体悬浮和运动的系统,常用于高精度定位和控制领域。基于NARX神经网络的磁悬浮建模可以帮助理解系统的非线性特性,实现准确的建模和控制。

  1. 数据采集:首先,需要通过传感器采集磁悬浮系统的输入和输出数据,包括磁力、电流、位置、速度等信息。这些数据将被用于训练和测试NARX神经网络模型。

  2. 数据预处理:对采集的数据进行预处理,包括去除噪声、归一化处理等操作,以确保数据质量和网络训练的稳定性。

  3. 网络设计:设计NARX神经网络的结构,包括输入层、输出层和隐藏层的节点数、激活函数的选择等。通常,NARX网络包括自回归层和外部输入层,以捕捉系统的历史信息和外部影响。

  4. 网络训练:使用采集的数据对NARX神经网络进行训练,通过反向传播算法来调整网络参数,使网络输出与实际输出之间的误差最小化。

  5. 模型验证:使用另一组数据对训练好的NARX神经网络模型进行验证,评估模型的预测性能和泛化能力,以确保模型的有效性和可靠性。

  6. 系统建模:利用训练好的NARX神经网络模型对磁悬浮系统进行建模,实现对系统的非线性特性的理解和描述,为后续的控制和优化提供依据。

通过以上流程,基于NARX神经网络的磁悬浮建模可以实现对系统的准确建模和预测,为系统的控制和优化提供重要支持。

3、基于NARX神经网络的磁悬浮建模说明 

1)解决问题

对磁悬浮系统进行建模

2)解决方案

NARX(具有外部输入的非线性自回归)神经网络对磁悬浮动态系统建模
尝试构建一个可以对使用控制电流悬浮的磁体的动态行为进行预测的神经网络。
特点是磁体的位置和控制电流共同决定了磁体在片刻之后的位置。
使用反馈时间序列的过去值(磁体位置)和外部输入序列(控制电流)来预测反馈序列的将来值。

4、数据集

1)说明 

将数据组织成两个矩阵(输入时间序列 X 和目标时间序列 T)来为神经网络设置函数拟合问题数据。
输入时间序列 X 是一个行元胞数组,其中每个元素是控制电流的相关时间步。
目标时间序列 T 也是一个行元胞数组,其中每个元素是悬浮磁体位置的相关时间步。

2)加载数据集

代码

[x,t] = maglev_dataset;

 3)数据大小

说明

X 和 T 都有 4001 列。这些列表示控制电流和磁体位置的 4001 个时间步。

代码

size(x)
size(t)ans =1        4001ans =1        4001

 5、使用神经网络进行时间序列建模

1)说明

创建一个学习对磁体位置变化方式进行建模的神经网络

2)设置随机种子避免随机性

代码

setdemorandstream(491218381)

 3)尝试具有 10 个神经元的单隐藏层

说明:双层(即,一个隐藏层)NARX 神经网络可以拟合任何动态输入-输出关系,前提是隐藏层中有足够的神经元。非输出层称为隐含层。

代码

net = narxnet(1:2,1:2,10);
view(net)

视图效果 

68d894fa98094059ba2de32153856cce.png

 4)使用外部输入和反馈时间序列的前两个时间步来填充网络的两个抽头延迟状态

说明:需要将两个反馈时间序列同时用作输入时间序列和目标时间序列。
函数 PREPARETS 准备用于仿真和训练的时间序列数据。Xs 将包含要提交到网络的移位输入时间序列和目标时间序列。Xi 是初始输入延迟状态。Ai 是层延迟状态(在这种情况下为空,因为没有层到层的延迟),Ts 是移位反馈时间序列。

代码

[Xs,Xi,Ai,Ts] = preparets(net,x,{},t);

5)开始训练

说明:时间步自动分为训练集、验证集和测试集。训练集用于对网络进行训练。只要网络针对验证集持续改进,训练就会继续。测试集提供完全独立的网络准确度测量。
代码

[net,tr] = train(net,Xs,Ts,Xi,Ai);

视图结果

1eba8ca76dff4f8f9af585351a225b78.png

 6、均方误差

1)说明

性能以均方误差衡量,并以对数刻度显示。随着网络训练的加深,均方误差迅速降低。
绘图会显示训练集、验证集和测试集的性能。

代码

plotperform(tr)

视图效果

5e0250b86ae9407c87bf56461ae3e91e.png

 7、测试神经网络

1)说明

测量经过训练的神经网络在所有时间步的均方误差

代码

Y = net(Xs,Xi,Ai);
perf = mse(net,Ts,Y)perf =2.9245e-06

2)显示网络的响应与实际磁体位置的比较

说明:PLOTRESPONSE 将显示网络的响应与实际磁体位置的比较。如果模型准确,“+”点将跟随菱形点,底轴的误差将非常小。
PLOTERRCORR 显示时间 t 处的误差 e(t) 与基于不同滞后的误差 e(t+lag) 之间的相关性。中心线显示均方误差。如果网络训练良好,所有其他线将短得多,并且大多数(如果不是全部)将在红色置信界限范围内。

代码

plotresponse(Ts,Y)

视图效果
5cee396c0ce741e78dcc2e05e0e76ee2.png

 3)函数 GSUBTRACT 用于计算误差

说明:函数 GSUBTRACT 用于计算误差。该函数对减法进行泛化,以支持求元胞数组数据之间的差。
PLOTINERRCORR 显示误差与具有不同程度滞后的输入的相关性。在这种情况下,大多数或所有线都应在置信界限范围内,包括中心线。

代码

E = gsubtract(Ts,Y);
ploterrcorr(E)

视图效果

48802ea6982649f0a9631daf6585ceec.png

 8、网络以开环形式进行训练

1)说明

网络以开环形式进行训练,其中目标被用作反馈输入。也可以将网络转换为闭环形式,其中,其自身预测成为反馈输入。


代码

net2 = closeloop(net);
view(net2)

试图效果

131421a8873843f1b804338e83b52db3.png

 2)PREPARETS 会再次准备时间序列数据,同时会考虑更改后的网络。

代码

[Xs,Xi,Ai,Ts] = preparets(net2,x,{},t);
Y = net2(Xs,Xi,Ai);
plotresponse(Ts,Y)

视图效果

5eaf960027764c679412cfce7921e585.png

9、 提前实际磁体位置一个时间步访问预测磁体位置

1)说明

提前实际磁体位置一个时间步访问预测磁体位置,可以从网络中删除一个延迟,以便在任何给定时间 t,输出均为时间 t+1 处的位置的估计值。


代码

net3 = removedelay(net);
view(net3)

视图效果

3f91a8ac107e40618686387aaf914535.png

 2)再次使用 PREPARETS 准备用于仿真的时间序列

说明:再次使用 PREPARETS 准备用于仿真的时间序列。这次网络又是非常准确,因为它进行的是开环预测,但输出移位一个时间步。

代码

[Xs,Xi,Ai,Ts] = preparets(net3,x,{},t);
Y = net3(Xs,Xi,Ai);
plotresponse(Ts,Y)

视图效果

dbc5533170d4496a9c40cb5e98ae1186.png

10、总结

基于MATLAB的NARX神经网络的磁悬浮建模过程可以总结如下:

  1. 数据准备:首先,需要准备用于训练和测试的磁悬浮系统的输入和输出数据,包括磁力、电流、位置、速度等信息。数据可以被保存在MATLAB的数据文件中,并加载到工作空间中。

  2. 网络创建:使用MATLAB的神经网络工具箱,创建一个NARX神经网络。需要定义网络的层次结构、节点数、激活函数等参数。通常,NARX网络包括自回归层和外部输入层。

  3. 数据预处理:对加载的数据进行预处理,包括去除噪声、归一化处理等操作,以确保数据质量和网络训练的稳定性。

  4. 网络训练:使用MATLAB的训练函数,如trainlm或者trainbr,对NARX神经网络进行训练。通过多次迭代调整网络参数,使网络输出与实际输出之间的误差最小化。

  5. 模型评估:使用另一组数据对训练好的神经网络模型进行验证和评估,检验模型的预测性能和泛化能力。可以利用MATLAB的模型评估工具来进行模型性能分析和可视化。

  6. 模型应用:将训练好的神经网络模型应用于磁悬浮系统的建模和预测。可以通过输入新的数据进行模型预测,以了解系统的动态行为和响应。

通过以上步骤,基于MATLAB的NARX神经网络的磁悬浮建模可以实现对系统的准确建模和预测,为系统的控制和优化提供支持。使用MATLAB的神经网络工具箱和数据处理工具,可以方便地进行复杂系统的建模和分析。

11、源代码

代码

%% 基于NARX神经网络的磁悬浮建模
%说明:对磁悬浮系统进行建模
%方案: NARX(具有外部输入的非线性自回归)神经网络对磁悬浮动态系统建模
%尝试构建一个可以对使用控制电流悬浮的磁体的动态行为进行预测的神经网络。
%特点是磁体的位置和控制电流共同决定了磁体在片刻之后的位置。
%使用反馈时间序列的过去值(磁体位置)和外部输入序列(控制电流)来预测反馈序列的将来值。
%% 数据集
%说明:将数据组织成两个矩阵(输入时间序列 X 和目标时间序列 T)来为神经网络设置函数拟合问题数据。
%输入时间序列 X 是一个行元胞数组,其中每个元素是控制电流的相关时间步。
%目标时间序列 T 也是一个行元胞数组,其中每个元素是悬浮磁体位置的相关时间步。
%加载数据集
[x,t] = maglev_dataset;
%数据大小
%X 和 T 都有 4001 列。这些列表示控制电流和磁体位置的 4001 个时间步。
size(x)
size(t)
%% 使用神经网络进行时间序列建模
%说明:创建一个学习对磁体位置变化方式进行建模的神经网络
%设置随机种子避免随机性
setdemorandstream(491218381)
%双层(即,一个隐藏层)NARX 神经网络可以拟合任何动态输入-输出关系,前提是隐藏层中有足够的神经元。非输出层称为隐含层。
%尝试具有 10 个神经元的单隐藏层
net = narxnet(1:2,1:2,10);
view(net)
%使用外部输入和反馈时间序列的前两个时间步来填充网络的两个抽头延迟状态
%需要将两个反馈时间序列同时用作输入时间序列和目标时间序列。
%函数 PREPARETS 准备用于仿真和训练的时间序列数据。Xs 将包含要提交到网络的移位输入时间序列和目标时间序列。Xi 是初始输入延迟状态。Ai 是层延迟状态(在这种情况下为空,因为没有层到层的延迟),Ts 是移位反馈时间序列。
[Xs,Xi,Ai,Ts] = preparets(net,x,{},t);
%开始训练
%时间步自动分为训练集、验证集和测试集。训练集用于对网络进行训练。只要网络针对验证集持续改进,训练就会继续。测试集提供完全独立的网络准确度测量。
[net,tr] = train(net,Xs,Ts,Xi,Ai);
%% 均方误差
%性能以均方误差衡量,并以对数刻度显示。随着网络训练的加深,均方误差迅速降低。
%绘图会显示训练集、验证集和测试集的性能。
plotperform(tr)
%% 测试神经网络
%测量经过训练的神经网络在所有时间步的均方误差
Y = net(Xs,Xi,Ai);
perf = mse(net,Ts,Y)
%PLOTRESPONSE 将显示网络的响应与实际磁体位置的比较。如果模型准确,“+”点将跟随菱形点,底轴的误差将非常小。
%PLOTERRCORR 显示时间 t 处的误差 e(t) 与基于不同滞后的误差 e(t+lag) 之间的相关性。中心线显示均方误差。如果网络训练良好,所有其他线将短得多,并且大多数(如果不是全部)将在红色置信界限范围内。plotresponse(Ts,Y)
%函数 GSUBTRACT 用于计算误差。该函数对减法进行泛化,以支持求元胞数组数据之间的差。
%PLOTINERRCORR 显示误差与具有不同程度滞后的输入的相关性。在这种情况下,大多数或所有线都应在置信界限范围内,包括中心线。E = gsubtract(Ts,Y);
ploterrcorr(E)
%% 网络以开环形式进行训练
%网络以开环形式进行训练,其中目标被用作反馈输入。也可以将网络转换为闭环形式,其中,其自身预测成为反馈输入。
net2 = closeloop(net);
view(net2)
%PREPARETS 会再次准备时间序列数据,同时会考虑更改后的网络。
[Xs,Xi,Ai,Ts] = preparets(net2,x,{},t);
Y = net2(Xs,Xi,Ai);
plotresponse(Ts,Y)
%% 提前实际磁体位置一个时间步访问预测磁体位置
%提前实际磁体位置一个时间步访问预测磁体位置,可以从网络中删除一个延迟,以便在任何给定时间 t,输出均为时间 t+1 处的位置的估计值。
net3 = removedelay(net);
view(net3)
%再次使用 PREPARETS 准备用于仿真的时间序列。这次网络又是非常准确,因为它进行的是开环预测,但输出移位一个时间步。
[Xs,Xi,Ai,Ts] = preparets(net3,x,{},t);
Y = net3(Xs,Xi,Ai);
plotresponse(Ts,Y)

 

 

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

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

相关文章

竞赛选题 python+深度学习+opencv实现植物识别算法系统

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的植物识别算法研究与实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分工作量:4分创新点:4分 🧿 更多…

基于Java微信小程序自驾游拼团设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟感兴趣的可以先收藏起来,还…

27. 高级特性(下)

目录 一、为了类型安全和抽象而使用 newtype 模式二、使用类型别名创建类型同义词2.1 使用type关键赋予现有类型一个别名2.2 减少重复2.3 与Result<T, E>结合使用2.4 从不返回的 never type 三、高级函数和闭包3.1 函数指针3.2 返回闭包 四、宏4.1 宏和函数的区别4.2 mac…

python基础语法 003-3 数据类型元组

1 元组 1.1 元组含义 1.1.1 元组的表示 #元组的表示方法:() names ("xiaoyun", "xiaoming") print(names)--结果------- (xiaoyun, xiaoming) 1.1.2 空元组 #空元组 names () print(type(names)) print(len(names))----------------结果--------- &l…

安装vue开发者工具

浏览器控制台提示&#xff1a; 打开网址 GitHub - vuejs/devtools: ⚙️ Browser devtools extension for debugging Vue.js applications. 点击添加 上图地址&#xff1a;Installation | Vue Devtools 安装好了

群体优化算法---石墨烯优化算法介绍以及在期权定价上的应用(Black-Scholes模型来计算欧式期权的理论价格)

介绍 石墨烯算法是一种新兴的优化算法&#xff0c;灵感来自于石墨烯的结构和特性。石墨烯是一种由碳原子构成的二维蜂窝状晶格结构&#xff0c;具有优异的机械、电学和热学性能。石墨烯算法通过模拟石墨烯原子之间的相互作用和迁移&#xff0c;来求解复杂的优化问题 基本概念…

K8S -理解StatefulSet - 部署有状态应用

什么是 有状态服务和 无状态服务 有状态服务&#xff08;Stateful Service&#xff09;&#xff1a; 有状态服务是指在处理请求期间维护和跟踪用户状态或会话信息的服务。这意味着服务在多个请求之间保持状态&#xff0c;并且需要在请求之间共享和使用这些状态信息。通常&…

Websocket在Java中的实践——握手拦截器

在《Websocket在Java中的实践——最小可行案例》一文中&#xff0c;我们看到如何用最简单的方式实现Websocket通信。本文中&#xff0c;我们将介绍如何在握手前后进行干涉&#xff0c;以定制一些特殊需求。 在《Websocket在Java中的实践——最小可行案例》的基础上&#xff0c;…

PID原理及控制算法详解

文章目录 1. 概念 1.1 PID框图 1.2 具体示例&#xff1a;无人机高度控制 2. PID原理 3. 常用术语 4. 计算过程 4.1 比例控制&#xff08;Proportional&#xff09; 4.2 积分控制&#xff08;Integral&#xff09; 4.3 微分控制&#xff08;Derivative&#xff09; 5.…

windows@文件高级共享设置@网络发现功能@从资源管理器网络中访问远程桌面

文章目录 高级共享设置常用选项其他选项操作界面说明 网络类型检查和设置(专用网络和公用网络)&#x1f47a;Note 高级共享设置和防火墙&#x1f47a;命令行方式使用图形界面方式配置 网络发现网络发现功能的详细介绍网络发现的作用&#x1f47a;网络发现的工作原理启用和配置网…

【Python实战因果推断】2_因果效应异质性2

目录 CATE with Regression Evaluating CATE Predictions CATE with Regression 我想你可能已经预料到了&#xff1a;与应用因果推理中的大多数情况一样&#xff0c;答案往往从线性回归开始。但在走这条路之前&#xff0c;让我们把事情变得更具体一些。假设你在一家遍布全国的…

[A133]uboot启动流程

[A133]uboot启动流程 hongxi.zhu 2024-6-21 1. 第一阶段 lds描述 从u-boot.lds中能找到程序的汇编入口ENTRY(_start) brandy/brandy-2.0/u-boot-2018/u-boot.lds OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") OUT…

vant组件 顶部下拉刷新和页面底部下拉获取数据+顶部搜索框

1.html部分&#xff08;顶部tab切换无&#xff0c;只有主体list部分&#xff09; <div class"yd" ><!-- yd端 --><!-- 搜索框 --><van-searchv-model"ydsearchvalue"show-actionplaceholder"请输入搜索关键词"search"…

JavaEE之HTTP协议(1)_HTTP基础知识,HTTP 请求、响应格式,方法,状态码

一、HTTP协议 1.1 基本概念: HTTP全称超文本传输协议&#xff0c;是一种无状态的、应用层的协议&#xff0c;它基于请求/响应模型。客户端&#xff08;通常是Web浏览器&#xff09;通过发送HTTP请求到服务器来获取或发送信息&#xff0c;服务器则返回HTTP响应作为回应。HTTP协…

shell (三)shell脚本

SHELL脚本 编程语言的分类 解释型语言&#xff1a;shell&#xff0c;Python&#xff0c;需要解析器 编译型语言&#xff1a;C语言&#xff0c;C&#xff0c;需要编译器 shell脚本 操作系统的结构 shell&#xff08;贝壳&#xff09; 应用层 app&#xff0c;代码 应用层需要通…

1、线性回归模型

1、主要解决问题类型 1.1 预测分析(Prediction) 线性回归可以用来预测一个变量(通常称为因变量或响应变量)的值,基于一个或多个输入变量(自变量或预测变量)。例如,根据房屋的面积、位置等因素预测房价。 1.2 异常检测(Outlier Detection) 线性回归可以帮助识别数…

鸿蒙开发系统基础能力:【@ohos.systemTime (设置系统时间)】

设置系统时间 本模块用来设置、获取当前系统时间&#xff0c;设置、获取当前系统日期和设置、获取当前系统时区。 说明&#xff1a; 本模块首批接口从API version 7开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import systemTime …

沙盒在数据防泄密领域意义

在信息化快速发展的今天&#xff0c;数据已成为企业最宝贵的资产之一。然而&#xff0c;数据泄密事件频发&#xff0c;给企业的安全和发展带来了巨大威胁。SDC沙盒防泄密系统&#xff0c;作为一种创新的数据防泄密解决方案&#xff0c;正逐渐在数据防泄密领域发挥着越来越重要的…

安装zabbix时报错Could not resolve host: mirrors.huaweicloud.com;Unknown error解决办法

目录 1、问题原因 2、解决办法 3、知识拓展 DNS的区别 DNS配置文件解析 域名解析过程 4、书籍推荐 当安装Zabbix server&#xff0c;Web前端&#xff0c;agent时出现&#xff1a; [rootsc-zabbix-server ~]# yum install zabbix-server-mysql zabbix-agent安装过程中会出…

Python3极简教程(一小时学完)上

开始 Python 之旅 本教程基于 Python for you and me 教程翻译制作&#xff0c;其中参考了 Python tutorial 和 _The Python Standard Library_&#xff0c;并对原教程的内容进行了改进与补充。 相关链接地址如下&#xff1a; _Python tutorial_&#xff1a;Python 入门指南…