Skip to content

给本科:毕设 1

  • 主题:使用神经网络补偿 PID 控制

思路依据

  • 被控对象为函数 \(f(u)\)
  • 原始 PID 控制器的输出为 \(c(e)=u\)

原始 PID 控制器的输出 \(c(e)\) 的控制效果不佳。理论上,存在一个更优秀的控制序列 \(v(t)\),使得 \(f(v(t))\) 的表现更好。

为了达到这样的新的控制量 \(v\),数学上的做法是找到 \(c(e)\) 的反函数,也就是满足

\[ c^{-1}(v)=\hat{e} \]

这个 \(\hat{e}\) 就应当是 神经网络给出的结果。

整体的连接图如下所示

目标值 (Set-point)
             |
             v      原始误差 (e)       NN 输出 (e')      控制量 (u)          输出 (y)
           ( Σ ) ----------------> [ Neural ] --------> [  PID  ] --------> [ System ] ---+---> (y)
             ^                     [ Network]          [ Contrl ]          [ (Plant)]   |
             |                                                                          |
             |                                 反馈 (Feedback)                          |
             +--------------------------------------------------------------------------+

实施方法

为了实际找到这个神经网络,需要训练数据。为此必须先知道怎么样的 \(\hat{e}\) 更优秀。这里采取实验的办法进行级联 PID 的测试,通过调整级联 PID 的参数确定更优秀的控制误差序列,这个补充的级联 PID 理论上就可以是神经网络的输入输出训练数据。

获取数据的实验示意图如下所示

目标值 (Set-point)
             |
             v      原始误差 (e)         理论输出 (e')      控制量 (u)          输出 (y)
           ( Σ ) ------------------> [  PID   ] --------> [  PID  ] --------> [ System ] ---+---> (y)
             ^           |           [控制器 2]     |     [控制器 1]          [ (Plant)]   |
             |           |                          |                                  |
             |           | - - - - - - - ->         | - - - - - - - ->                 |
             |          (nn 理论输入)               (nn 理论输出)                         |
             |                                                                         |
             |                                 反馈 (Feedback)                         |
             +-------------------------------------------------------------------------+