用MATLAB玩控制-神经网络PID控制

标签:
神经网络pid控制bp神经网络反向梯度下降法非线性系统杂谈 |
教科书上介绍的神经网络PID控制,多是基于BP神经网络的自学习PID控制器,BP神经网络的结构如图1所示(参见《智能控制技术》),从图中可以看出这是一个三层神经网络,神经网络的输出是Kp、Ki、Kd,输入可以选为e、∫edt、de/dt,式中e为控制系统偏差,BP神经网络的学习原理是反向梯度下降算法,用到的数学工具就是微积分,所以神经网络权系数公式的推导应当不是很难,只是计算相当繁复,同时,由于是梯度下降算法,所以,就有陷入局部最优点的缺陷,这是需要注意到的,对这一点可以采用具全局最优化的算法,比如遗传算法、粒子群算法等,来优化权系数,从而找到全局最优点,以后有机会给出这样例子。将神经网络的输出Kp、Ki、Kd三个参数传递给常规PID调节器,就构成了神经网络PID控制,整个系统结构如图2所示,由于BP神经网络的特点,Kp、Ki、Kd三个参数只能小于等于1,所以,你可以看到,书上举的神经网络PID控制例子,多是非线性系统,在那些例子中,Kp、Ki、Kd小于等于1时,就能达到很好的控制效果,当然,选用非线性系统的主要原因是,神经网络PID控制对非线性系统非常有效。从实现角度讲,编程时只需照搬书上公式就成,只是神经网络的计算公式非常复杂,所以,编程时需要仔细点,那些可调参数,如学习速率η、平滑因子α等,可参照书上给出的值,或在此基础上作适当调整。用MATLAB实现的神经网络PID控制,针对一个时变非线性系统,其效果如图3所示,从图中可以看出,控制品质相当好。我们也可以再增加一个基于BP神经网络的系统辨识环节,此时系统辨识的效果如图
4所示,从图中可以看出,辨识效果很好,控制效果也一如既往的好。