Main Content

Simulink 中设计模型参考神经控制器

神经模型参考控制架构使用两个神经网络:控制器网络和被控对象模型网络,如下图所示。首先识别被控对象模型,然后训练控制器,使被控对象输出在参考模型输出之后。

Model reference diagram with input labeled "Command Input" and outputs labeled "Control Error" and "Plant Output"

下图显示在 Deep Learning Toolbox™ 软件中实现的神经网络被控对象模型和神经网络控制器的细节。每个网络有两个层,您可以选择在隐藏层中使用的神经元数量。有三组控制器输入:

  • 延迟的参考输入

  • 延迟的控制器输出

  • 延迟的被控对象输出

对于上述每一种输入,您都可以选择要使用的延迟值数目。通常,延迟的数目随着被控对象的阶数而增大。神经网络被控对象模型有两组输入:

  • 延迟的控制器输出

  • 延迟的被控对象输出

与控制器一样,您可以设置延迟的数目。下一节将说明如何设置参数。

Model diagram with sections labeled "Neural Network Controller" and "Neural Network Plant Model". The model has input labeled "r(t)" and outputs labeled "e_c(t)" and "c(t)"

使用 Model Reference Controller 模块

本节说明如何训练神经网络控制器。第一步是将 Model Reference Controller 模块从 Deep Learning Toolbox 模块集复制到 Simulink® 编辑器。如果您不确定如何操作,请参阅 Simulink 文档。在以下示例中跳过此步骤。

Deep Learning Toolbox 软件附带示例模型,以说明如何使用模型参考控制器。此示例的目标是控制简单的单链机械臂的运动,如下图所示:

Diagram of robot arm with angle of angle from the vertical labeled with phi.

机械臂的运动方程是

d2ϕdt2=10sinϕ2dϕdt+u

其中,ϕ 是机械臂的角度,u 是直流电机提供的扭矩。

目标是训练控制器,使机械臂跟踪参考模型

d2yrdt2=9yr6dyrdt+9r

其中 yr 是参考模型的输出,r 是输入参考信号。

此示例使用具有 5-13-1 架构的神经网络控制器。控制器的输入由两个延迟的参考输入、两个延迟的被控对象输出和一个延迟的控制器输出组成。使用的是 0.05 秒的采样间隔。

要运行此示例,请执行下列步骤:

  1. 启动 MATLAB®

  2. 在 MATLAB 命令行窗口中键入 mrefrobotarm。此命令将打开 Simulink 编辑器,模型中已有 Model Reference Controller 模块。

    Screenshot of mrefrobotarm Simulink model

  3. 双击 Model Reference Controller 模块。这将打开以下窗口,用于训练模型参考控制器。

    Screenshot of Model Reference Control dialogue box

  4. 下一步通常是点击被控对象辨识,这将打开“被控对象辨识”窗口。然后您将训练被控对象模型。由于“被控对象辨识”窗口与先前的控制器使用的窗口相同,此处省略了该过程。

  5. 点击生成训练数据。程序开始生成用于训练控制器的数据。在数据生成后,将出现以下窗口。

    Screen shot of Plant Input-Output Data for NN Model Reference Control dialogue box

  6. 点击接受数据。返回到“模型参考控制”窗口,并点击训练控制器。程序将向网络提供一段数据,并按照指定的迭代次数(本例中为 5 次)训练网络。此过程将一次执行一个片段,直到整个训练集都呈现给网络。控制器训练的耗时可能明显大于被控对象模型训练的耗时。这是因为必须使用动态反向传播来训练控制器(请参阅 [HaJe99])。训练完成后,将显示生成的闭环系统的响应,如以下图窗中所示。

    Screen shot of Plant Input-Output Data for NN Model Reference Control dialogue box

  7. 返回到“模型参考控制”窗口。如果控制器的性能不精确,您可以再次选择训练控制器,这将使用相同的数据集继续训练控制器。如果要使用新数据集继续训练,在选择训练控制器之前,请先选择生成数据导入数据。(如果您要继续使用相同的权重进行训练,请确保选择使用当前权重。)可能还需要重新训练被控对象模型。如果被控对象模型不精确,则可能会影响控制器训练。对于此示例,控制器应该是足够精确的,因此请选择确定。这会将控制器权重加载到 Simulink 模型中。

  8. 返回 Simulink 编辑器,选择菜单选项仿真 > 运行开始仿真。当仿真运行时,显示被控对象输出和参考信号,如以下图窗中所示。

    2-D line plot with title "X Y Plot". The horizontal axis is labeled "X Axis". The vertical axis is labeled "Y Axis".