基于BP神经网络的自整定PID控制仿真
一、目的
1.熟悉神经网络的特征、结构以及学习算法
2.掌握神经网络自整定PID的工作原理
3.了解神经网络的结构对控制效果的影响
4.掌握用MATLAB实现神经网络控制系统仿真的方法。
二、设备及条件
计算机系统
Matlab仿真软件
三、问题背景
在工业控制中,PID控制是工业控制中最常用的方法。这是因为PID控制器结构简单、实现简单,控制效果良好,已得到广泛应用。但是,PID具有一定的局限性:被控制对象参数随时间变化时,控制器的参数难以自动调整以适应外界环境的变化。为了使控制器具有较好的自适应性,实现控制器参数的自动调整,可以采用神经网络控制的方法。利用人工神经网络的自学习这一特性,并结合传统的PID控制理论,构造神经网络PID控制器,实现控制器参数的自动调整。
基于BP神经网络的PID控制器结构如图1所示。控制器由两部分组成:一是常规PID控制器,
用以直接对对象进行闭环控制,且三个参数在线整定;二是神经网络NN,根据系统的运行状态,学习调整权系数,从而调整PID参数,达到某种性能指标的最优化。
图1 基于神经网络的PID控制器结构
四、基于BP神经网络的PID设计
1设计原理
神经网络采用结构为4-5-3型的BP网络,如图2。
图2 BP网络结构
其中,输出层激励函数取非负的Sigmoid函数,隐层取正负对称的Sigmoid函数。
被控对象为一时变非线性对象,数学模型可表示为:
a(k)y(k1)u(k1)1y2(k1)
y(k) 式中,系数a(k)是慢时变的,。
为保证控制器有一定的动态跟踪能力,选定神经网络的输入层输入为
Xin[e(k),e(k1),e(k2),1]T
网络的学习过程由正向和反向传播两部分组成。如果输出层不能得到期望输出,那么转入反向传播过程,通过修改各层神经元的权值,使得输出误差信号最小。
输出层节点分别对应三个可调参数
O1(3)Kp(3)O2KIO3(3)KD
1E(k)(r(k)y(k))22 取性能指标函数为:
设其中 r(k)y(k)e(k)
若PID控制器采用采用增量式数字PID控制算法,则有
u(k)e(k)(3)O2u(k)e(k)2e(k1)e(k2)O3(3)
u(k)e(k)e(k1)O1(3)2.网络权系数调整
网络权系数的修正采用梯度下降法。
根据相关数学知识,针对指定因变量的梯度代表了使因变量增速最大的自变量变化方向,故而其反方向代表了因变量下降最快的自变量变化方向,如果我们选取性能指标E(k)为因变量,网络各层权系数为自变量,则对应梯度的负方向就是权系数调整的最佳方向,因此,实际上构成了一个有目标的搜索算法,对最终结果的收敛性提供了有力的保证。
对应于本题采用的4-5-3型的BP网络,梯度负方向的计算:
(1) 隐含层-输出层:
E(k)E(k)y(k1)u(k)Ol(3)netl(3)**(3)**(3)(3)y(k1)u(k)Onet(3)jllljl
其中:E(k)为指标函数
(3)jl为隐含层-输出层权系数矩阵元素
y(k1) 为被控对象输出
u(k) 为PID控制器输出
Ol(3) 为输出层输出
netl(3)为输出层输入
根据所选用神经网络的数学模型,易知:
E(k)(r(k1)y(k1))e(k1)y(k1)u(k)e(k)e(k1)O1(3)u(k)e(k)(3)O2u(k)e(k)2e(k1)e(k2)(3)O3Ol(3)(3)g[netl](3)netlnetl(3)(2)O(k)j(3)jl
其中: j1,2,3,4 l1,2,3
O(2)j(k)为隐含层输出,
1g[x][1tanh(x)]'g2,为输出层激励函数,(x)g(x)*[1g(x)]为其偏导数。
y(k1)另外,u(k)直接的数学表达不容易获得,但我们可以使用它的符号函数来近似,仍可以保证参
数修正方向的正确性,而由此造成其模的误差只影响参数调整的速度,它可以通过调整学习速率来得
以补偿。
故而最终有:
E(k)y(k1)(3)(2)e(k1)*sgn[]*[e(k)e(k1)]*g[net]*Olj(k)(3)jlu(k)
(2) 输入层-隐含层:
333E(k)E(k)net1(k)E(k)net2(k)E(k)net3(k)***(2)3(2)3(2)3Ojnet1(k)Ojnet2(k)Ojnet3(k)O(2)jO(2)net(2)E(k)E(k)jj**(2)(2)ij(k)O(2)net(2)jj(k)ij(k)
其中: i1,2,3,4 j1,2,3,4,5 l1,2,3
E(k)E(k)y(k1)u(k)Ol(3)***netl3y(k1)u(k)Ol(3)netl(3)
O(2)j
net(2)j(k)f'[net(2)j(k)]
net13(k)(3)jl(k)(2)Oj
net(2)j(k)(2)ijOi(1)(k)
'2f(x)[1f(x)]/2为其偏导数。 f(x)tanh(x) ,为输出层激励函数,
故而最终有:
3E(k)E(k)'(2)(1)[*(3)jl(k)]*f[netj(k)]*Oi(k)(2)3ij(k)l1netl(k)
(3) 网络权值修正量
梯度的负方向给出了网络权值修正的方向,乘以系数,即为权值修正量。其中代表了算法每次在梯度负方向搜索的步长,称为网络的学习速率,另外,如果考虑上次权值对本次权值变化的影响,需要加入动量(平滑)因子 ,此时新的权值为:
(2)(2)ij(k1)ij(k)*E(k)(2)(2)[(k)(k1)]ijij(2)ij(k)E(k)(3)(3)(3)[(3)jl(k1)jl(k)*jl(k)jl(k1)](3)jl(k)
3.程序流程
步骤1:设定初始状态和参数初始值,包括随机产生初始BP神经网络权值系数,设定初始输入输出值为零,设定学习速率和惯性系数,计数器设为k=1,并设定计数上限等。
步骤2:计算产生BP神经网络隐含层输入。本程序为采样获得e(k),并结合储存的e(k-1),e(k-2),及常数1作为隐含层输入。前两次的e(k-1),e(k-2)并未真实产生直接取0.
步骤3:前向传播计算。包括:
(1)BP神经网络前向传播计算,得到输出层输出
Kp,KI, KD.;
(2)增量式PID控制器计算控制器输出u(k);
(3)被控对象模型计算输出值y(k)
步骤4:反向传播计算。包括:
(1) 修正输出层的权系数
(3)jl(k);
(2) 修正隐含层的权系数
(2)ij(k);
步骤5:参数更新
步骤6:如果k达到设定的次数上限,则结束;否则,k=k+1,并返回步骤2.
总的程序流程图如下:
开始BP网络参数及初始值设定前向传播否反向传播参数更新是否达到最大步数?是结束
图3 程序流程图
五、运行结果及分析
1.运行结果
取学习速率0.25,惯性系数0.05,隐层节点数位5,各层加权系数的初值取区间[-0.5, 0.5]上的随机数进行仿真实验,由于初始值随机,各次仿真结果不完全相同,但基本都能够快速收敛至理想结果,取其中具有普遍代表性的两幅图:
图4 随机结果1
图5 随机结果2
图中红线表示输入阶跃信号,蓝线表示被控对象输出
2.改变参数对运行结果的影响及分析
为了便于结果的对比,使每次的初始网络权系数都相同,每次只改变所要考察的参数。此处取网络权系数矩阵的各元素初始值为-0.5.
(1)隐层节点数对仿真结果的影响
分别取具有代表性的隐层节点数为3, 5,7,8的情况进行仿真,仿真过程分为两个阶段:刚开始,输入信号幅值为1,对于收敛的系统,一般会在50到100次之间稳定,我们可以通过系统在前200次迭代情况,考察系统的收敛性及收敛速度;从第201次开始,我们改变输入信号的幅值为1.2,考察稳定系统在情况发生改变的情况下,跟踪并稳定至新状态的能力。同时为了使各系统间性能对比更
明显,对系统的时变程度也进行了适当的放大。
图6 隐层节点数为4
图7 隐层节点数为5
图8 隐层节点数为7
图9 隐层节点数为8
由以上图可知,对于前200次的迭代,在隐层节点数较小时,随着节点数增多,系统对误差的敏感性增强,隐层节点数从4变成5,收敛变短,但随着节点数进一步增加,系统振荡程度变大,反而又不容易收敛。另一方面,这个变化规律在后200次的新状态跟踪中也是成立的。这一点并不难以理解,因为后200次改变输入幅值,本质上其实就是人为产生一个误差,然后重新训练并跟踪的过程,所不同的是,它的初始网络权值本身就是网络在前一稳定状态的训练结果,在此基础上的新状态跟踪能力本身就是系统性能的体现,相对与完全的随机初始值或者某一指定值,在低重复次数的试验中,其结果更具代表性和可靠性。以上各图结果中,前后两阶段变化规律的相似性也印证了这一点。
总的来讲,增大隐层节点数,在一定范围内会减少收敛时间,但同时也会造成系统稳定性变差,超调振荡变得严重,而在系统收敛的范围内,隐层节点数太小,系统相对迟钝,收敛速度变慢,输入变化时,抗干扰能力较差,跟踪新状态所花的时间也变长。另外,从图中明显可以看出,隐层节点数过大,系统陷入局部最优的风险也在不断增大,表现为跟踪曲线中有明显变长的水平线,实际上,在所给的情况下,当隐层节点数增为13时,系统明显陷入局部最优。
图10 隐层节点数13时,系统陷入局部最优
综上,系统隐层节点数并不是越多越好,也不是越少越好,而应该根据实际情况和实验结果选定合适值。针对本实验问题,合适的隐层节点数为5个,图7显示了各方面都较好的跟踪能力。
(2)学习速率及惯性系数对仿真结果的影响
0.25,0.05时,有如下结果
图11 0.25,0.05时的跟踪曲线
保持0.05时,改变分别为1.25, 0.02有如下结果
图12 1.25,0.05 图13 0.02,0.05 保持0.25,改变分别为0.1,0.001结果如下
图14 0.25,0.1 图15 0.25,0.01
从以上图可知,学习速率对结果的影响与隐层节点数有些类似,太小系统跟踪能力较差或跟踪不上,太大容易振荡并且陷入局部最优的风险也增大。惯性系数对结果的影响不是很突出,可能与有相反的效果的趋势,但是并不明显,不过可以确定的是,的取值应当较小,而不能大,否则系统性能明显恶化。