鲁棒性强、能够很好地克服传动系统中模型参数变化和非线性等不确定因素的优点,因此,模糊控制在实际控制系统中得到广泛应用。模糊控制器普遍采用的是离线进行模糊推理产生的模糊控制表,然后把控制表存储在单片机中进行在线查表控制,但模糊推理计算量大,这给模糊控制器的设计和调整带来了许多困难。此外,模糊控制存在的一个较大的缺点是稳态精度不高。为此,人们提出了许多改进的方法[1],其中最直接的方法是增加模糊量化论域。但是,当量化论域中元素、控制规则的条数很多时,模糊推理计算控制表的运算量大大增加。本文在MATLAB环境下,研究了模糊推理算法,研制了模糊推理程序。只要给出模糊控制器的输入和输出量的隶属函数矩阵、控制规则矩阵、模糊量的特征向量矩阵,运行该程序就可得到模糊控制表。该软件使用方便,为模糊控制的研究和应用提供了方便的条件。
1 模糊推理概述
在模糊控制中,关键是要求得模糊关系矩阵,应用最多的是离线进行模糊推理产生控制表,模糊推理是模糊控制器的核心。这里以两入一出、采用CRI推理方法及重心法解模糊的模糊控制器为例,简要介绍模糊推理过程。
设模糊集合 Ai
=(a1i...ani)∈F(X),Bi
=(b1i...bmi)∈F(Y),C
=(c1i...cti)∈F(Z) (i=1,...,p),模糊规则为“IF
Ai AND Bi THEN Ci”(i=1,...,p)。其中p为模糊变量的个数,F(X)、F(Y)、F(Z)分别为论域X、Y、Z上的模糊集。由此可求得总模糊关系:
对某一模糊特征向量A*、B*,进一步可求出输出的模糊量:
最后,通过解模糊判决可求出输出的精确量:
注:Ai×Bi
是模糊向量的笛卡儿积,由公式(4)计算:
其中,“T”表示转置,“o”表示矩阵合成运算,使用最常见的
“∨—∧”算子计算,见公式:
这里需要指出的是,把笛卡儿乘积看作一个n×1与一个1×m的矩阵合成。计算结果是n×m模糊阵,而(Ai×Bi)T1表示把这个n×m模糊阵按行“拉直”成nm元模糊行向量,再转置成nm元模糊列向量;(A*×B*)T2的含义是:把A*×B*这个n×m模糊阵按行“拉直”成nm元模糊行向量。
2 基于MATLAB实现模糊推理程序设计
在MATLAB环境下,充分利用其矩阵处理能力[2],可实现“∨—∧”、“∨—· ”及 “∧—”模糊算子运算、重心法(或最大隶属度法)解模糊。由于模糊推理过程涉及到合成、求模糊关系及解模糊运算等,采用自定义函数实现各个功能的模块化。图1为主函数程序框图;图2为求模糊关系程序框图;图3为解模糊程序框图;图4为合成程序框图。
运行此程序,只要输入矩阵A和B及相应矩阵C、控制矩阵Q、特征向量矩阵A*和B*及输出量化论域矩阵QF,就能得到模糊控制表。
3 计算实例
3.1 常规模糊控制器
下面以常规模糊控制器为例来验证此程序的正确性。在常规模糊控制器中,输入语言变量偏差E、偏差变化率CE、输出语言变量控制量U的赋值表及E、CE→U的控制规则表见文献[3]。文献[3]中的原控制表如表1所示,利用本文编制的模糊推理程序(采用“∨—∧”算子、最大隶属度解模糊)得到的控制表如表2所示。
在表1、表2中最上面一行为输入量误差E的量化等级,最左一列为输入量误差变化CE的量化等级。表1与表2中的数据存在差异,这是因为表1中的带*的数据均是修正后的结果。这一点可以通过特征展开近似推理方法[4]进行验证。具体验证方法如下:
表1 E、CE→U 控制表
-6 | -5 | -4 | -3 | -2 | -1 | -0 | +0 | 1 | 2 | 3 | 4 | 5 | 6 | |
-6 | 7 | 6* | 7 | 7* | 4 | 4 | 4 | 4 | 2* | 1 | 0 | 0 | 0 | 0 |
-5 | 6* | 6* | 6* | 6* | 4 | 4 | 4 | 4 | 2* | 2* | 0 | 0 | 0 | 0 |
-4 | 7 | 6* | 7 | 6* | 4 | 4 | 4 | 4 | 2* | 1 | 0 | 0 | 0 | 0 |
-3 | 6* | 6* | 6* | 6* | 5* | 5* | 5* | 5* | 2* | 2* | 0* | -2* | -2* | -2* |
-2 | 7 | 6* | 7 | 6* | 4 | 4 | 1 | 1 | 0 | 0 | -3* | -4 | -4 | -4 |
-1 | 7 | 6* | 7 | 6* | 4 | 4 | 1 | 1 | 0 | -3* | -3* | -4 | -4 | -4 |
0 | 7 | 6* | 7 | 6* | 4 | 1* | 0 | 0 | -1* | -4 | -6* | -7 | -6* | -7 |
1 | 4 | 4 | 4 | 3* | 1* | 0 | -1 | -1 | -4 | -4 | -6* | -7 | -6* | -7 |
2 | 4 | 4 | 4 | 2* | 0 | 0 | -1 | -1 | -4 | -4 | -6* | -7 | -6* | -7 |
3 | 2* | 2* | 2* | 0* | 0* | 0* | -1* | -1* | -3* | -3* | -6* | -6* | -6* | -6* |
4 | 0 | 0 | 0 | -1* | -1 | -3* | -4 | -4 | -4 | -4 | -6* | -7 | -6* | -7 |
5 | 0 | 0 | 0 | -1* | -1* | -2* | -4 | -4 | -4 | -4 | -6* | -6* | -6* | -6* |
6 | 0 | 0 | 0 | -1* | -1 | 1* | -4 | -4 | -4 | -4 | -6* | -7 | -6* | -7 |
表2 E、CE→U 控制表
-6 | -5 | -4 | -3 | -2 | -1 | -0 | +0 | 1 | 2 | 3 | 4 | 5 | 6 | |
-6 | 7 | 6.5 | 7 | 6.5 | 4 | 4 | 4 | 4 | 1.5 | 1 | 0 | 0 | 0 | 0 |
-5 | 6.5 | 6.5 | 6.5 | 6.5 | 4 | 4 | 4 | 4 | 1.5 | 1.5 | 0 | 0 | 0 | 0 |
-4 | 7 | 6.5 | 7 | 6.5 | 4 | 4 | 4 | 4 | 1.5 | 1 | 0 | 0 | 0 | 0 |
-3 | 6.5 | 6.5 | 6.5 | 6.5 | 4 | 4 | 3 | 3 | 1 | 1 | -3 | -3 | -3 | -3 |
-2 | 7 | 6.5 | 7 | 6.5 | 4 | 4 | 1 | 1 | 0 | 0 | -4 | -4 | -4 | -4 |
-1 | 7 | 6.5 | 7 | 6.5 | 4 | 4 | 1 | 1 | 0 | 0 | -4 | -4 | -4 | -4 |
0 | 7 | 6.5 | 7 | 6.5 | 4 | 4 | 0 | 0 | -4 | -4 | -6.5 | -7 | -6.5 | -7 |
1 | 4 | 4 | 4 | 4 | 0 | 0 | -1 | -1 | -4 | -4 | -6.5 | -7 | -6.5 | -7 |
2 | 4 | 4 | 4 | 4 | 0 | 0 | -1 | -1 | -4 | -4 | -6.5 | -7 | -6.5 | -7 |
3 | 3 | 3 | 3 | 3 | -1 | -1 | -3 | -3 | -4 | -4 | -6.5 | -6.5 | -6.5 | -6.5 |
4 | 0 | 0 | 0 | 0 | -1 | -1.5 | -4 | -4 | -4 | -4 | -6.5 | -7 | -6.5 | -7 |
5 | 0 | 0 | 0 | 0 | -1.5 | -1.5 | -4 | -4 | -4 | -4 | -6.5 | -6.5 | -6.5 | -6.5 |
6 | 0 | 0 | 0 | 0 | -1 | -1.5 | -4 | -4 | -4 | -4 | -6.5 | -7 | -6.5 | -7 |
以表1的第10行第7列为例,即E*=(0,0,0,0,0,0,1,0,0,0,0,0,0,0),CE*=(0,0,0,0,0,0,0,0,0,1,0,0,0)为其特征向量,由特征展开近似推理方法[4]的式:
可计算出α3=0.3,α4=1,β5=0.7,β6=0.7,β7=0.1,(α3∧β5)U4=0.3U4,(α3∧β6)U3=0.3U3,(α3∧β7)U3=0.1U3,(α4∧β5)U3=0.7U3,(α4∧β6)U2=0.7U2,(α4∧β7)U2=0.1U2,由其余50条规则得到的αi或βj总有一个为0,故这一对模糊输入得到的模糊输出为:
U=0.3U4∪0.7U3∪0.3U3∪0.1U3∪0.7U2∪0.1U2
=(0,0.14,0.49,0.7,0.49,0.56,0.7,0.3,0.15,0,0,0,0,0,0)
经过解模糊得到精确输出为:
u=((-4)+(-1))/2=-2.5
3.2 增加模糊量化论域的模糊控制器
以增加模糊量化论域的模糊控制器为例进行模糊推理,计算出控制表。取误差E、误差变化CE和控制量U的量化论域均为:
{-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10}
取误差E、误差变化CE和控制量U的模糊论域均为:
{NVB,NB,NM,NS,NVS,ZO,PVS,PS,PM,PB,PVB}
误差E、误差变化CE和控制量U的隶属函数均如图5所示。
借鉴常规模糊控制器设计经验,得到语言控制规则表,如表3所示。表中共有121条控制规则,其中一些规则可以合并。但利用计算机进行推理计算,这些规则就没必要合并了。
表3 E、CE→U 模糊控制规则表
E U CE |
NVB | NB | NM | NS | NVS | ZO | PVS | PS | PM | PB | PVB |
NVB | PVB | PVB | PB | PM | PM | PS | PS | PVS | ZO | ZO | ZO |
NB | PVB | PB | PB | PM | PM | PS | PS | PVS | ZO | ZO | ZO |
NM | PB | PB | PM | PM | PS | PS | PVS | PVS | ZO | ZO | ZO |
NS | PB | PM | PM | PS | PS | PVS | PVS | ZO | NVS | NVS | NVS |
NVS | PM | PM | PS | PS | PVS | PVS | ZO | NVS | NVS | NS | NS |
ZO | PM | PS | PS | PVS | PVS | ZO | NVS | NVS | NS | NS | NS |
PVS | PS | PS | PVS | PVS | ZO | NVS | NVS | NS | NS | NM | NM |
PS | PS | PVS | PVS | ZO | NVS | NVS | NS | NS | NM | NM | NM |
PM | PVS | PVS | ZO | NVS | NVS | NS | NS | NM | NM | NB | NB |
PB | PVS | ZO | NVS | NVS | NS | NS | NM | NM | NB | NB | NVB |
PVB | ZO | NVS | NVS | NS | NS | NM | NM | NB | NB | NVB | NVB |
利用研制的模糊推理计算程序,采用“∨—?”得到的E,CE→U控制表,如表4所示。在表中最上面一行为误差E的量化等级,最左一列为误差变化CE的量化等级。
表4 控制表
u | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
-10 | 9.7 | 9.7 | 9.7 | 9.7 | 8 | 7 | 6 | 6 | 6 | 5 | 4 | 4 | 4 | 3 | 2 | 1 | 0 | 0 | 0 | 0 | 0 |
-9 | 9.7 | 8.7 | 8.7 | 8.7 | 8 | 7 | 6 | 6 | 6 | 5 | 4 | 4 | 4 | 3 | 2 | 1 | 0 | 0 | 0 | 0 | 0 |
-8 | 9.7 | 8.7 | 8 | 8 | 8 | 7 | 6 | 6 | 6 | 5 | 4 | 4 | 4 | 3 | 2 | 1 | 0 | 0 | 0 | 0 | 0 |
-7 | 8.7 | 8.7 | 8 | 7 | 7 | 7 | 6 | 5 | 5 | 5 | 4 | 3 | 3 | 3 | 2 | 1 | 0 | 0 | 0 | 0 | 0 |
-6 | 8 | 8 | 8 | 7 | 6 | 6 | 6 | 5 | 4 | 4 | 4 | 3 | 2 | 2 | 2 | 1 | 0 | 0 | 0 | 0 | 0 |
-5 | 8 | 7 | 7 | 7 | 6 | 5 | 5 | 5 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 0 | -1 | -1 | -1 | -1 | -1 |
-4 | 8 | 7 | 6 | 6 | 6 | 5 | 4 | 4 | 4 | 3 | 2 | 2 | 2 | 1 | 0 | -1 | -2 | -2 | -2 | -2 | -2 |
-3 | 7 | 7 | 6 | 5 | 5 | 5 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 0 | -1 | -1 | -2 | -3 | -3 | -3 | -3 |
-2 | 6 | 6 | 6 | 5 | 4 | 4 | 4 | 3 | 2 | 2 | 2 | 1 | 0 | -1 | -2 | -2 | -2 | -3 | -4 | -4 | -4 |
-1 | 6 | 5 | 5 | 5 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 0 | -1 | -1 | -2 | -3 | -3 | -3 | -4 | -4 | -4 |
0 | 6 | 5 | 4 | 4 | 4 | 3 | 2 | 2 | 2 | 1 | 0 | -1 | -2 | -2 | -2 | -3 | -4 | -4 | -4 | -4 | -4 |
1 | 5 | 5 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 0 | -1 | -1 | -2 | -3 | -3 | -3 | -4 | -5 | -5 | -5 | -5 |
2 | 4 | 4 | 4 | 3 | 3 | 2 | 2 | 1 | 0 | -1 | -1 | -1 | -1 | -3 | -4 | -4 | -4 | -5 | -6 | -6 | -6 |
3 | 4 | 3 | 3 | 3 | 2 | 1 | 1 | 0 | -1 | -1 | -2 | -3 | -3 | -3 | -4 | -5 | -5 | -5 | -6 | -6 | -6 |
4 | 4 | 3 | 2 | 2 | 2 | 1 | 0 | -1 | -2 | -2 | -2 | -3 | -4 | -4 | -4 | -5 | -6 | -6 | -6 | -6 | -6 |
5 | 3 | 3 | 2 | 1 | 1 | 0 | -1 | -1 | -2 | -3 | -3 | -3 | -4 | -5 | -5 | -5 | -6 | -7 | -7 | -7 | -7 |
6 | 2 | 2 | 2 | 1 | 0 | -1 | -2 | -2 | -2 | -3 | -4 | -4 | -4 | -5 | -6 | -6 | -6 | -7 | -8 | -8 | -8 |
7 | 2 | 1 | 1 | 0 | -1 | -1 | -2 | -3 | -3 | -3 | -4 | -5 | -5 | -5 | -6 | -7 | -7 | -7 | -8 | -8.7 | -8.7 |
8 | 2 | 1 | 0 | -1 | -2 | -2 | -2 | -3 | -4 | -4 | -4 | -5 | -6 | -6 | -6 | -7 | -8 | -8 | -8 | -8.7 | -9.7 |
9 | 1 | 0 | -1 | -1 | -2 | -3 | -3 | -3 | -4 | -5 | -5 | -5 | -6 | -7 | -7 | -7 | -8 | -8.7 | -8.7 | -8.7 | -9.7 |
10 | 0 | -1 | -2 | -2 | -2 | -3 | -4 | -4 | -4 | -5 | -6 | -6 | -6 | -7 | -8 | -8 | -8 | -8.7 | -9.7 | -9.7 | -9.7 |
4 仿真结果
这里以对象
为例,分别使用表2、表4中的数据构成模糊控制器,响应曲线如图6中曲线1、2所示,其中采样周期
T=0.1s。从图6中可以看出,增加模糊量化论域的模糊控制器的稳态精度明显提高。
此程序方便地实现了模糊推理的功能,免去了手工计算的麻烦。而且,不论变量的量化等级为多大,只要给定模糊控制器的输入和输出量的隶属函数矩阵、控制规则矩阵、模糊量的特征向量矩阵,运行该软件就可快速地获得相应的模糊控制表。另外,该软件可实现“∨—∧”、“∨—· ”、 “—∧”模糊算子运算及重心法、最大隶属度原则模糊判决方法。因此,本文为模糊控制的研究和应用提供了方便的条件。