摘要:介绍了在MATLAB环境下,实现模糊推理的程序化的方法,解决了由于增加模糊量化论域而产生的复杂计算问题,为模糊控制的研究和应用提供了方便的条件。关键词:模糊控制近似推理模糊推理程序化模糊控制具有不依赖对象的数学模型、鲁棒性强、能够很好地克服传动系统中模型参数变化和非线性等不确定因素的优点,因此,模糊控制在实际控制系统中得到广泛应用。模糊控制器普遍采用的是离线进行模糊推理产生的模糊控制表,然后把控制表存储在单片机中进行在线查表控制,但模糊推理计算量大,这给模糊控制器的设计和调整带来了许多困难。此外,模糊控制存在的一个较大的缺点是稳态精度不高。为此,人们提出了许多改进的方法[1],其中最直接的方法是增加模糊量化论域。但是,当量化论域中元素、控制规则的条数很多时,模糊推理计算控制表的运算量大大增加。本文在MATLAB环境下,研究了模糊推理算法,研制了模糊推理程序。只要给出模糊控制器的输入和输出量的隶属函数矩阵、控制规则矩阵、模糊量的特征向量矩阵,运行该程序就可得到模糊控制表。该软件使用方便,为模糊控制的研究和应用提供了方便的条件。1模糊推理概述在模糊控制中,关键是要求得模糊关系矩阵,应用最多的是离线进行模糊推理产生控制表,模糊推理是模糊控制器的核心。这里以两入一出、采用CRI推理方法及重心法解模糊的模糊控制器为例,简要介绍模糊推理过程。设模糊集合Ai=(a1i...ani)∈F(X),Bi=(b1i...bmi)∈F(Y),C=(c1i...cti)∈F(Z)(i=1,...,p),模糊规则为“IFAiANDBiTHENCi”(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]进行验证。具体验证方法如下:表1E、CE→U控制表-6-5-4-3-2-1-0+0123456-676*77*44442*10000-56*6*6*6*44442*2*0000-476*76*44442*10000-36*6*6*6*5*5*5*5*2*2*0*-2*-2*-2*-276*76*441100-3*-4-4-4-176*76*44110-3*-3*-4-4-4076*76*41*00-1*-4-6*-7-6*-714443*1*0-1-1-4-4-6*-7-6*-724442*00-1-1-4-4-6*-7-6*-732*2*2*0*0*0*-1*-1*-3*-3*-6*-6*-6*-6*4000-1*-1-3*-4-4-4-4-6*-7-6*-75000-1*-1*-2*-4-4-4-4-6*-6*-6*-6*6000-1*-11*-4-4-4-4-6*-7-...