一、模糊自适应PID简介

模糊自适应PID算法主要是由模糊控制器和PID控制器结合而成,模糊控制器以误差e和误差变化率ec作为输入,利用模糊规则对PID控制器的参数Kp、Ki、和Kd进行自适应整定,使被控对象保持在良好的动、静态稳定状态。相比传统的PID控制,模糊自适应PID更加的灵活稳定,特别是对于时变性和非线性较大的被控对象,其优点更加突出。
在这里插入图片描述

二、步骤

1.输入量的量化

所谓量化就是通过量化函数将输入量投射到一定的数字级别,一般都是相对于0对称的数字区间。
首先引入e和ec模糊集对应的论域,定义为{-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6}。对于任何一个物理量测量信号都有一个量程范围,我们记为Vmax和Vmin,和在PID调节时设定值的范围预期相同,所以偏差e的范围就是Vmin-Vmax的范围内,而偏差的增量范围则是其两倍。这里我们采用线性方式量化,则其函数关系为:
f ( e ) = 6 ∗ e V max ⁡ − V min ⁡        f ( e c ) = 6 ∗ e c 2 ( V max ⁡ − V min ⁡ ) f\left( e \right) =\frac{6*e}{V_{\max}-V_{\min}}\ \ \ \ \ \ f\left( ec \right) =\frac{6*ec}{2\left( V_{\max}-V_{\min} \right)} f(e)=VmaxVmin6e      f(ec)=2(VmaxVmin)6ec

2.输入值的模糊化

首先,我们确定e和ec的模糊子集,对于PID控制我们选则:负大[NB]、负中[NM]、负小[NS]、零[ZO]、正小[PS]、正中[PM]、正大[PB]等7个语言变量就能够有足够精度表达其模糊子集。所以我们定义e和ec的模糊子集均为{NB,NM,NS,ZO,PS,PM,PB}。
然后我们确定e和ec在模糊子集上的隶属度。隶属度是一个介于0和1之间的值,用以描述对应一个输入属于某一个模糊自己的程度。一般我们描述成隶属度函数,可采用的隶属度函数很多,我们在此采用线性的隶属度函数,或者称为三角隶属度函数,其函数关系如下:在这里插入图片描述
书上使用正态分布函数作为隶属度函数,同时还有梯形隶属度函数等等。

3.建立模糊规则表

3.1 Kp模糊规则设计

在PID控制器中,Kp值的选取决定于系统的响应速度。增大Kp能提高响应速度,减小稳态偏差;但是,Kp值过大会产生较大的超调,甚至使系统不稳定减小Kp可以减小超调,提高稳定性,但Kp过小会减慢响应速度,延长调节时间。因此,调节初期应适当取较大的Kp值以提高响应速度,而在调节中期,Kp则取较小值,以使系统具有较小的超调并保证一定的响应速度;而在调节过程后期再将Kp值调到较大值来减小静差,提高控制精度。基于上述描述我们定义Kp的模糊规则如下:在这里插入图片描述

3.2 Ki模糊规则设计

在系统控制中,积分控制主要是用来消除系统的稳态偏差。由于某些原因(如饱和非线性等),积分过程有可能在调节过程的初期产生积分饱和,从而引起调节过程的较大超调。因此,在调节过程的初期,为防止积分饱和,其积分作用应当弱一些,甚至可以取零;而在调节中期,为了避免影响稳定性,其积分作用应该比较适中;最后在过程的后期,则应增强积分作用,以减小调节静差。依据以上分析,我们制定的Ki模糊规则如下:在这里插入图片描述

3.3 Kd模糊规则设计

微分环节的调整主要是针对大惯性过程引入的,微分环节系数的作用在于改变系统的动态特性。系统的微分环节系数能反映信号变化的趋势,并能在偏差信号变化太大之前,在系统中引入一个有效的早期修正信号,从而加快响应速度,减少调整时间,消除振荡.最终改变系统的动态性能。因此,Kd值的选取对调节动态特性影响很大。Kd值过大,调节过程制动就会超前,致使调节时间过长;Kd值过小,调节过程制动就会落后,从而导致超调增加。根据实际过程经验,在调节初期,应加大微分作用,这样可得到较小甚至避免超调;而在中期,由于调节特性对Kd值的变化比较敏感,因此,Kd值应适当小一些并应保持固定不变;然后在调节后期,Kd值应减小,以减小被控过程的制动作用,进而补偿在调节过程初期由于Kd值较大所造成的调节过程的时间延长。依据以上分析,我们制定Kd的模糊规则如下:
在这里插入图片描述
接下来,根据偏差E和偏差增量EC模糊化的结果以及规则库推理出∆Kp、∆Ki、∆Kd对应的模糊子集。由于前面我们设计的是采用隶属度函数来定义输入输出量在模糊子集的隶属度,所以推理出来的∆Kp、∆Ki、∆Kd的模糊子集通常是一个由模糊变量组成的矩阵。而输入量E和EC则是一个由模糊变量组成的向量。

4.解模糊处理

我们前面设计了三角隶属度函数,并采用相同的量化目标即论域{-6,6},所以在某一时刻,输入输出所处的模糊变量的隶属度是相同的。
常用的解模糊方法有:

  • 最大隶属度法——计算简单,适用于控制要求不高场合。
  • 重心法——输出更平滑,但计算难度大
  • 加权平均法——一般在工业上应用最广泛

基于这一基础,我们采用重心法计算各输出量的量化值。其公式如下:
V o = ∑ i = 0 n M i ∗ F i ∑ i = 0 n M i    其中 M 为隶属度, F 为模糊量化值 V_o=\frac{\sum_{i=0}^n{M_i*F_i}}{\sum_{i=0}^n{M_i}}\ \ \ \text{其中}M\text{为隶属度,}F\text{为模糊量化值} Vo=i=0nMii=0nMiFi   其中M为隶属度,F为模糊量化值
其实因为我们采用的隶属度函数的特性,在任何方向的计算隶属度的和均为1,所以分母可以省略。于是每一个对象的计算实际上就是矩阵操作,公式如下
K = [ M e 0 M e 1 ] [ F 00 F 10 F 01 F 11 ] [ M e c 0 M e c 1 ] K=\left[ \begin{matrix} M_{e0}& M_{e1}\\ \end{matrix} \right] \left[ \begin{matrix} F_{00}& F_{10}\\ F_{01}& F_{11}\\ \end{matrix} \right] \left[ \begin{array}{c} M_{ec0}\\ M_{ec1}\\ \end{array} \right] K=[Me0Me1][F00F01F10F11][Mec0Mec1]
得到增量后,我们也可以引入系数来放大和缩小Kp,Ki和Kd变化量,具体实现公式如下:
K ( n ) = K ( n − 1 ) + △ K ∗ α K\left( n \right) =K\left( n-1 \right) +\bigtriangleup K*\alpha K(n)=K(n1)+Kα
α为我们设定的系数
至此,我们得到了模糊自适应后的PID三个参数。

三、疑问

经过阅读资料,几乎所有的论文都引用了上述模糊pid规则表。此处应该把E理解成E=测量值 - 设定值,这样就符合模糊推理规则了。
但在用PID公式
o u t p u t = K p ∗ e + K i ∗ e i n t e g r a l + k p ∗ ( e − e l a s t ) output=Kp*e+Ki*e_{integral}+kp*(e-e_{last}) output=Kpe+Kieintegral+kp(eelast)时,e应该是(预设值-实际值)。个人理解,后续要在实验中检验一下。

四、难点

  1. 选取输入量的量化函数
  2. 选取输入值的隶属度函数
  3. 选取解模糊方法
  4. 与普通pid相比,不仅要确定一套普通的pid参数,同时要设定增量的修正参数

参考文档:

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐