基于CMAC神经网络的PID参数自整定方法的研究
扫描二维码
随时随地手机看文章
0 引言
控制器的参数整定是通过对PID控制器参数(KP,KI,KD)的调整,使得系统的过渡过程达到满意的质量指标要求。PID参数的整定一般需要经验丰富的工程技术人员来完成,既耗时又耗力,加之实际系统千差万别,又有滞后非线性等因素,使PID参数的整定有一定的难度,致使许多PID控制器没能整定的很好;这样的系统自然无法工作在令人满意的状态,为此人们提出了自整定PID控制器。将过程动态性能的确定和PID控制器参数的计算方法结合起来就可实现PID控制器的自整定[1,2]。
笔者设计出一种基于CMAC小脑模型神经网络的PID参数自整定的控制系统,从而实现PID参数的快速整定,并且使得PID的参数整定达到一定的精度。
1 CMAC神经网络
CMAC(Cerebellar model articulation controller)是J. S. Albus在1975年提出的一种模拟小脑功能的神经网络模型。CMAC是一种联想网络,对每一输出只有小部分神经元(由输入决定)与之相关,它的联想具有局部泛化能力,即相似的输入将产生相似的输出,而远离的输入产生几乎独立的输出。CMAC与感知器比较相似,虽然从每个神经元看其关系是一种线性关系,但从结果总体看,它适合一种非线性的映射,因而可以把CMAC看作一个用于表达非线性映射(函数)的表格系统[3]。由于它的自适应调节(学习)是在线性映射部分,所以其学习算法是简单的 算法,收敛速度比BP快得多,且不存在局部极小问题[4]。CMAC神经网络结构如图1所示。
图1 CMAC结构
2 系统原理
系统的工作原理为:当闭环控制系统受到扰动时,对系统误差 的时间特性进行模式识别,首先得出系统误差曲线的峰值及时间,如图2所示。
图2 给定值阶跃变化时的误差e(t)曲线
再根据以下公式得出该过程响应曲线的多个特征参数ei(i=1,2,3)分别为:超调量σ,阻尼比ζ和衰减振荡周期T。
将识别出的三个特征参数作为输入送入CMAC参数整定网络,经计算后得出相应的PID参数的变化量( ),再将所得参数送入PID控制器,从而实现PID参数的自整定。PID参数自整定系统如图3所示。
图3 PID参数自整定控制系统
在本CMAC神经网络中,获取系统误差特性曲线中的三个特征参数,每个特征参数根据表的划分,成为一个特征参数等级。当每个区域的特征参数大小都确定时,就组成了一个特征参数模式。当获取的特征值发生变化时,相应的模式也发生变化。因而本文建立的CMAC网络的输入是一个3个分量组成的向量,即选取的三个特征值(阻尼比 ,超调量百分比 ,衰减振荡周期 )也可称为特征参数模式。由于PID控制器需整定的参数为3个,所以,CMAC网络的输出为3个分量组成的向量。每一个元素与PID控制器中的一个待整定参数相对应。
3 CMAC神经网络的改进与实现[5]
1)基函数的布置和总数
2)高阶基函数
当初始CMAC网络使用二值基函数时,它的输出是分段连续的,即在每个网格内是连续的,在输入轴节点处是间断的。要使网络有连续的输出,必须要求基函数的输出在其定义域的边界上为0。本设计中,用表示距离,表示单变量函数,采用无穷大泛数基函数实现连续输出。
并利用无穷大泛数计算距离时,可以使基函数在定义域边界的输出为0,在定义域中心的输出为1/ρ。在一维情况下,其他输出值是在这两个极值间的线性插值。在二维输入空间中,基函数输出呈“金字塔”型。
3)内存杂散技术
CMAC网络对内存的需求量正比于 的指数倍,所以它是很大的。对高维输入 ,基函数的数量 可以由公式(5)近似地计算出来。由于要求基函数的数量要小于网格的数量(p<<p‘,p‘是CMAC网络中网格的数量),所以一般的算法只适用于维数较低或者适中的网络输入,如果维数较高,就要使用内存杂散技术。内存杂散技术是将分布稀疏、占用较大存储空间的数据作为一个伪随机发生器的变量,产生一个占用空间较小的随机地址,而在这个随机地址内就存放着占用大量内存空间地址内的数据,这就完成了由多到少的映射。
4 ) CMAC神经网络的编程实现
CMAC神经网络的算法主要函数是由C语言编程实现的。本设计中的代码是在Visual C++平台上调试实现的。int allocate_cmac(int num_state, int *qnt_state, int num_cell, int memory, int field_shape, int collision_flag); allocate函数用指定的参数为CMAC网络在内存中分配空间。num_state是输入向量的维数; *qnt_state是指向 维数组的指针,这个数组定义了每一维输入向量的量化精度;num_cell是泛化系数ρ; memory占用内存空间的数量; field_shape设置基函数的类型;collision_flag训练冲突标记,若冲突发生返回TRUE,反之为FALSE。
MATLAB中的编译与调用时,采用MEX技术来完成MATLAB中调用CMAC网络算法的C语言代码
4 CMAC神经网络训练
CMAC神经网络的主要参数有:输入变量的量化精度、泛化参数以及基函数的种类。对CMAC神经网络的三个输入分别进行量化,阻尼比ζ分为23级,超调量百分比σ分为12个等级,衰减振荡周期Tc分为20个等级,共有23*12*20=5520种训练模式。
在所有5520种训练模式中选取2000种,作为CMAC参数整定网络的选练样本。再在2000组特征参数模式中选取1620组特征参数模式作为训练集对网络进行训练。
建立输入到物理存储空间的映射,同时建立了物理存储空间与输出的关系。泛化参数 选为32,学习算法采用了误差纠正算法。学习率β为0.6,采用样条函数SPLINE替代传统的ALBUS函数作为CMAC神经网络的基函数。ALBUS函数的输出只有0和1,因此输出的曲线分段连续,仅在内节点之间连续,在内节点的分界处往往是不连续的。而样条函数则可以较好的解决这个问题。相应的内存使用量为300。
训练收敛后,权值体现了特征参数与PID控制器的待整定参数的关系。图4所示为CMAC神经网络对1620组特征参数模式的训练误差曲线。
图4 CMAC训练误差曲线
Fig.4 Training error curve of CMAC
图5所示为1620组训练数据送入CMAC神经网络训练后,训练数据在各个误差区间中的个数,可看出超过90%的训练数据具有较高的误差精度,即误差精度<0.1。
图5 训练数据在各误差区间中的个数
Fig.5 Numbers of training data in different section of error
把选取的2000种特征参数模块中剩下的380组作为测试集,对训练后的CMAC参数整定网络进行测试。输出的控制参数变化值与学习样本期望结果进行对比,错误率为7.8%,说明CMAC网络训练比较成功,具有一定的泛化能力。图6所示为CMAC神经网络的测试误差曲线。图7所示为测试数据在各误差区间中的个数。
图6 CMAC测试误差曲线
Fig.6 Testing error curve of CMAC
图7 测试数据在各误差区间中的个数
Fig.7 Numbers of testing data in different section of error
5 仿真结果
选取被控对象为: ,原控制器对此对象的控制性能达到要求,阶跃扰动曲线如图8中线1所示。当进行PID参数自整定,整定后的响应曲线为图8中线2,把特征参量送入CMAC参数整定网络,整定后参数为。从仿真图中,我们可以看出PID参数的整定效果比较理想,且CMAC神经网络的达到稳定的训练时间也比较短。
图8 整定前后的响应曲线
6 结论
仿真结果表明,CMAC神经网络的特性使其适合在PID参数自整定中使用。CMAC神经网络权值的调整是局部的,学习速度快,收敛性好,而且PID参数的整定效果也满足整定要求。文章的创新点:在基于模式识别的PID参数自整定系统中,直接利用CMAC网络获取整定规则,避免了传统的大量专家整定经验的建立。