新闻中心

EEPW首页>模拟技术>设计应用> 基于CMAC神经网络的PID参数自整定方法的研究

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

作者: 时间:2009-12-01 来源:网络 收藏
3的改进与实现[5]

本文引用地址://m.amcfsurvey.com/article/188490.htm

  1)基函数的布置和总数


  2)高阶基函数

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

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

  3)内存杂散技术

网络对内存的需求量正比于的指数倍,所以它是很大的。对高维输入,基函数的数量可以由公式(5)近似地计算出来。由于要求基函数的数量要小于网格的数量(pp‘,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语言代码

4CMAC神经网络训练

  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控制器相关文章:pid控制器原理




评论


相关推荐

技术专区

关闭