微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 工业电子 > 基于CMAC神经网络的PID参数自整定方法的研究

基于CMAC神经网络的PID参数自整定方法的研究

时间:12-07 来源:互联网 点击:
控制器的参数整定是通过对PID控制器参数(KP,KI,KD)的调整,使得系统的过渡过程达到满意的质量指标要求。PID参数的整定一般需要经验丰富的工程技术人员来完成,既耗时又耗力,加之实际系统千差万别,又有滞后非线性等因素,使PID参数的整定有一定的难度,致使许多PID控制器没能整定的很好;这样的系统自然无法工作在令人满意的状态,为此人们提出了自整定PID控制器。将过程动态性能的确定和PID控制器参数的计算方法结合起来就可实现PID控制器的自整定[1,2]。

笔者设计出一种基于CMAC小脑模型神经网络的PID参数自整定的控制系统,从而实现PID参数的快速整定,并且使得PID的参数整定达到一定的精度。

1 CMAC神经网络

CMAC(Cerebellarmodelarticulationcontroller)是J.S.Albus在1975年提出的一种模拟小脑功能的神经网络模型。CMAC是一种联想网络,对每一输出只有小部分神经元(由输入决定)与之相关,它的联想具有局部泛化能力,即相似的输入将产生相似的输出,而远离的输入产生几乎独立的输出。CMAC与感知器比较相似,虽然从每个神经元看其关系是一种线性关系,但从结果总体看,它适合一种非线性的映射,因而可以把CMAC看作一个用于表达非线性映射(函数)的表格系统。由于它的自适应调节(学习)是在线性映射部分,所以其学习算法是简单的算法,收敛速度比BP快得多,且不存在局部极小问题。CMAC神经网络结构如图1所示。



图1CMAC结构

2 系统原理

系统的工作原理为:当闭环控制系统受到扰动时,对系统误差的时间特性进行模式识别,首先得出系统误差曲线的峰值及时间,如图2所示。



图2给定值阶跃变化时的误差e(t)曲线

再根据以下公式得出该过程响应曲线的多个特征参数ei(i=1,2,3)分别为:超调量σ,阻尼比ζ和衰减振荡周期T。



将识别出的三个特征参数作为输入送入CMAC参数整定网络,经计算后得出相应的PID参数的变化量(

),再将所得参数送入PID控制器,从而实现PID参数的自整定。PID参数自整定系统如图3所示。



图3PID参数自整定控制系统

在本CMAC神经网络中,获取系统误差特性曲线中的三个特征参数,每个特征参数根据表的划分,成为一个特征参数等级。当每个区域的特征参数大小都确定时,就组成了一个特征参数模式。当获取的特征值发生变化时,相应的模式也发生变化。因而本文建立的CMAC网络的输入是一个3个分量组成的向量,即选取的三个特征值(阻尼比,超调量百分比,衰减振荡周期)也可称为特征参数模式。由于PID控制器需整定的参数为3个,所以,CMAC网络的输出为3个分量组成的向量。每一个元素与PID控制器中的一个待整定参数相对应。

3 CMAC神经网络的改进与实现

1)基函数的布置和总数





2)高阶基函数

当初始CMAC网络使用二值基函数时,它的输出是分段连续的,即在每个网格内是连续的,在输入轴节点处是间断的。要使网络有连续的输出,必须要求基函数的输出在其定义域的边界上为0。本设计中,用表示距离,表示单变量函数,采用无穷大泛数基函数实现连续输出。



并利用无穷大泛数计算距离时,可以使基函数在定义域边界的输出为0,在定义域中心的输出为1/ρ。在一维情况下,其他输出值是在这两个极值间的线性插值。在二维输入空间中,基函数输出呈“金字塔”型。

3)内存杂散技术

CMAC网络对内存的需求量正比于的指数倍,所以它是很大的。对高维输入,基函数的数量可以由公式(5)近似地计算出来。由于要求基函数的数量要小于网格的数量(p<<p‘,p‘是CMAC网络中网格的数量),所以一般的算法只适用于维数较低或者适中的网络输入,如果维数较高,就要使用内存杂散技术。内存杂散技术是将分布稀疏、占用较大存储空间的数据作为一个伪随机发生器的变量,产生一个占用空间较小的随机地址,而在这个随机地址内就存放着占用大量内存空间地址内的数据,这就完成了由多到少的映射。

4)CMAC神经网络的编程实现

CMAC神经网络的算法主要函数是由C语言编程实现的。本设计中的代码是在VisualC++平台上调试实现的。intallocate_cmac(intnum_state,int*qnt_state,intnum_cell,intmemory,intfield_shape,intcollision_flag);allocate函数用指定的参数为CMAC网络在内存中分配空间。num_state是输入向量的维数;*qnt_state是指向维数组的指针,这个数组定义了每一维输入向量的量化精度;num_cell是泛化系数ρ;memory占用内存空间的数量;field_shape设置基函数的类型;collision_flag训练冲突标记,若冲突发生返回TRUE,反之为FALSE。

MATLAB中的编译与调用时,采用MEX技术来完成MATLAB中调用CMAC网络算法的C语言代码

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top