主要内容

磁悬浮建模

这个例子说明了一个NARX(非线性自回归与外部输入)神经网络可以一块磁铁悬浮动力系统模型。

问题:磁悬浮系统模型

在这个例子中,我们试图建立一个可以预测的神经网络的动态行为磁铁悬浮控制电流。

系统的特点是磁铁的位置和控制电流,这两个确定磁铁将瞬间后。

这是一个时间序列问题的一个例子,在过去的反馈值时间序列(磁铁的位置)和外部输入系列(控制电流)是用来预测未来值的反馈。

神经网络的原因吗?

神经网络非常擅长时间序列问题。神经网络有足够的元素(称为神经元)可以具有任意精度的动态系统模型。它们特别适合解决非线性动态问题。神经网络是一个很好的候选人解决这个问题。

网络将被设计通过使用录音实际悬浮磁铁的位置响应控制电流。

准备数据

函数拟合问题的数据建立的神经网络通过将数据组织成两个矩阵,输入时间序列X和目标时间序列T。

连续输入系列X细胞数组,其中每个元素是相关联的控制电流的步伐。

目标系列T是一个行细胞数组,其中每个元素相关联的步伐悬浮磁铁的位置。

这样的数据集加载。

[x, t] = maglev_dataset;

我们可以把输入X和目标T的大小。

注意,X和T有4001列。这些代表4001步伐控制电流和磁铁的位置。

大小(x)
ans =1×21 4001
大小(t)
ans =1×21 4001

时间序列和神经网络建模

下一步是创建一个将学习的神经网络模型磁铁如何改变位置。

由于神经网络从随机初始权重,这个例子的结果会略有不同,每次运行。随机种子将避免这种随机性。然而这并不是您自己的应用程序所必需的。

setdemorandstream (491218381)

两层(即one-hidden-layer) NARX神经网络可以适合任何动态投入产出关系给予足够的隐层神经元。层不输出层被称为隐藏层。

我们将尝试一个单隐层神经元10这个例子。一般来说,更困难的问题需要更多的神经元,或许更多的层。简单的问题需要较少的神经元。

我们还将尝试用抽头延迟两个延迟外部输入(控制电流)和反馈(磁铁的位置)。更多的延迟允许网络模型更复杂的动态系统。

输入和输出大小为0,因为网络尚未配置匹配我们的输入和目标数据。这将发生在网络训练。

输出y (t)也是一个输入,反馈到网络延迟的版本。

网= narxnet (1:2, 1:2, 10);视图(净)

我们可以训练网络之前,我们必须使用前两个步伐的外部输入和反馈时间序列来填补两个利用网络延迟的状态。

此外,我们需要使用反馈系列作为输入系列和目标。

函数PREPARETS准备时间序列数据为我们模拟和训练。Xs将包括输入和目标系列将转向网络。习是初始输入延迟的状态。人工智能是层延迟(空在这种情况下没有层延迟),和Ts系列移位的反馈。

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

现在网络已经准备好被训练。自动分成步伐训练,验证集和测试集。训练集用于教网络。培训持续只要网络持续改进验证集。网络的测试集提供了一个完全独立的测量精度。

神经网络训练工具显示了该算法用于网络训练和训练它。它还显示培训期间状态和停止的标准培训将用绿色被加亮。

底部的按钮打开有用的情节,可以打开期间和之后的训练。链接算法名称和图旁边的按钮打开文档的主题。

(净,tr) =火车(净,x, Ts, Xi, Ai);

看看网络的性能改进的培训期间,点击“性能”按钮在训练工具,或者叫PLOTPERFORM。

性能测量的均方误差,并显示在对数尺度。它迅速减少网络训练。

显示性能的每个训练,验证集和测试集。

plotperform (tr)

测试神经网络

训练神经网络的均方误差为所有步伐现在可以被测量。

Y =净(Xs, Xi, Ai);穿孔= mse(净,Ts, Y)
穿孔= 2.9245 e-06

PLOTRESPONSE将告诉我们网络的反应相比,实际的磁铁的位置。如果模型是准确的“+”点追踪钻石点,和错误在底部轴将会非常小。

plotresponse (Ts, Y)

PLOTERRCORR显示了相关的错误在时间t, e (t)与错误不同的滞后,e (t +延迟)。中心行显示了均方误差。如果网络已经训练好所有其他线路将会更短,和大多数(如果不是全部的话)将属于红色的置信区间。

函数GSUBTRACT是用来计算错误。这个函数概括减法来支持细胞阵列数据之间的差异。金宝app

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

同样,PLOTINERRCORR显示了错误的关联的输入,与不同程度的滞后。在这种情况下,大多数或所有线路应落在置信区间,包括中心线。

plotinerrcorr (Xs, E)

开环形式的网络训练,目标是作为反馈输入。网络也可以转化为闭环形式,在自己的预测成为反馈输入。

net2 = closeloop(净);视图(net2)

我们可以模拟闭环形式的网络。在这种情况下,网络只是给最初的磁铁的位置,然后必须使用自己的预测位置递归预测新职位。

这快速的结果在一个贫穷的健康之间的预测和实际的反应。这将发生,即使模型很好。但有趣的是看到他们比赛多少步骤分离之前。

PREPARETS再次做准备工作的时间序列数据为我们考虑改变网络。

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

如果应用程序要求我们访问预测磁铁位置的步伐前进当它真的发生时,我们可以将延迟从网络在任何给定的时间t,输出是估计的位置在时间t + 1。

net3 = removedelay(净);视图(net3)

我们使用PREPARETS准备时间序列进行模拟。这次网络是非常准确的,因为它是做开环预测,但输出转移步伐。

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

这个例子演示了如何设计一个神经网络模型动态磁铁悬浮系统的行为。

探索其他的例子和文档了解神经网络及其应用。