摘要:介绍了Sugeno型模糊推理算法的基本原理,给出了一种实现方法,并对其控制性能进行了仿真。
关键词:模糊控制器 Sugeno型模糊推理 Mamdani型模糊推理
模糊控制器是模糊控制系统的核心,通常由软件编程实现,其控制算法的简繁直接影响到控制器的实时性。Mamdani型和Sugeno型是两种常用的模糊推理算法模型。在很多情况下,Sugeno型模糊推理算法具有较多的优点。
1 模糊控制器的工作过程
模糊推理过程就是运用模糊逻辑,进行从输入量到输出量映射的过程,可以分为以下5个步骤进行:
(1)输入量模糊化(Fuzzify Inputs)
根据对应的隶属函数,确定输入量的隶属程度。输入量是论域内的数值,输出量是对应叙词的隶属度。模糊化可以通过查表或函数计算等方法实现。
(2)模糊逻辑运算(Apply Fuzzy Operator)
当模糊推理规则的前件(Antecedent)含有几个部分时,就需要对几个输入量进行模糊逻辑运算,以得到模糊逻辑推理所需的单一前件。
(3)模糊蕴含(Apply Implication Method)
根据总结归纳的模糊规则,由前件蕴含出后件(Consequent)。在过程中,各条规则的权重(Weight)可取不同值。结果由前件和输出量隶属函数得出,为一系列隶属函数表示的模糊集合。
(4)模糊合成(Aggregate All Outputs)
将各条规则蕴含出的一系列隶属函数合成为输出量隶属函数。
(5)输出逆模糊化(Defuzzify)
将模糊合成的隶属函数数值化,得出模糊系统的清晰输出量。
图1所示为一个2输入、2规则、1输出的模糊推理过程示意图。
2 Sugeno型模糊推理算法
Mamdani型模糊推理算法是最常用的模糊推理算法。Sugeno型模糊推理算法与Mamdani型类似,其中,输入量模糊化和模糊逻辑运算过程完全相同,主要差别在于输出隶属函数的形式。
典型的零阶Sugeno型模糊规则的形式如下:
If x is A and y is B then z=k
式中x和y为输入语言变量,A和B为推理前件的模糊集合,z为输出语言变量, k为常数。
在Mamdani型模糊推理算法中,输出隶属函数是模糊集合,经过模糊合成处理,即得到一个需要逆模糊化的输出变量。当采用尖峰脉冲形隶属函数替代分布形隶属函数时,往往能使模糊推理过程简化而有效,这就是所谓的单元素隶属函数。单元素隶属函数可以看作已预逆模糊化处理的模糊集合,由于不需要象Mamdani型模型那样计算二维函数的形心,可以极大地提高逆模糊化处理过程的效率。Sugeno模型中即采用单元素输出隶属函数,其模糊蕴含即是简单的乘法,模糊合成即是各单元属输出隶属函数的简单包含。
更为一般的一阶Sugeno模型规则的形式为:
if x is A and y is B then z=p×x+q×y+r
式中x和y为输入语言变量,A和B为推理前件的模糊集合,z为输出语言变量,p,q,r为常数。更高阶数的Sugeno模型规则也可以类似构成,但增加了模型的复杂性,性能却改善不大,故很少使用。
由于各条规则与输入量的线性关系,使得Sugeno型模型特别适合在动态非线性系统中作为不同工作状态下多线性控制器的平滑切换。
3 Sugeno模糊控制器的实现及应用
Sugeno型模糊控制器能广泛地用于各种工业控制系统。下面以二维通用模糊控制器在嵌入式工业控制机上的实现为例说明Sugeno型模糊控制器的编程方法。
二维模糊控制器的输入量取为偏差E和偏差变化率Ec,输出量为控制量变化量ΔU。偏差E的语言词集取8个,为负大NB,负中NM,负小NS,负零NZ,正零PZ,正小PS,正中PM,正大PB;偏差变化率Ec的语言词集取7个,为负大NB,负中NM,负小NS,零Z,正小PS,正中PM,正大PB;输出量变化量ΔU的语言词集也取7个,为负大NB,负中NM,负小NS,零Z,正小PS,正中PM,正大PB。输入量E和Ec的隶属函数形式取为常用的高斯形(Gauss-type),其形状如图2所示。如输出量变化量ΔU的隶属函数形式也取为高斯形,就是Mamdani型模糊推理算法的模糊控制器。为构成Sugeno型模糊控制器,我们取输出量为单元属隶属函数,具体为负大NB=-1,负中NM=-0.667,负小NS=-0.333,零Z=0,正小PS=0.333,正中PM=0.667,正大PB=1。模糊推理规则共56条,详见表1模糊控制规则表,其表面图形示意图见图3。
表1 模糊控制规则表
Ec | |||||||
U | NB | NM | NS | Z | PS | PM | PB |
E | |||||||
NB | 1.00 | 1.00 | 1.00 | 1.00 | 0.67 | 0.33 | 0.33 |
NM | 1.00 | 1.00 | 1.00 | 1.00 | 0.67 | 0.00 | 0.00 |
NS | 0.67 | 0.67 | 0.67 | 0.33 | 0.00 | -0.33 | -0.33 |
NZ | 0.67 | 0.67 | 0.33 | 0.00 | 0.00 | -0.33 | -0.67 |
PZ | 0.67 | 0.33 | 0.00 | 0.00 | -0.33 | -0.67 | -0.67 |
PS | 0.33 | 0.33 | 0.00 | -0.33 | -0.67 | -0.67 | -0.67 |
PM | 0.00 | 0.00 | -0.67 | -1.00 | -1.00 | -1.00 | -1.00 |
PB | -0.33 | -0.33 | -0.67 | -1.00 | -1.00 | -1.00 | -1.00 |
控制器模糊运算方法及逆模糊化方法分别取为:
模糊AND运算为:prod(x,y)=x×y
模糊OR运算为:probor(x,y)=x+y-x×y
逆模糊化运算为加权平均法:ΔU=∑μ×w×z / ∑μ×w
经过上述各项定义,Sugeno型模糊控制器的模型已经完全确定。为方便起见,可以选MATLAB软件作为编程平台。首先,利用MATLAB的可视化模糊逻辑工具FUZZY命令建立文件名为SUGENO.FIS的模糊算法模型,由于MATLAB的FUZZY工具支持多种隶属函数、模糊运算、模糊推理及逆模糊化算法,上述Sugeno模型可以很快建立,而且在可视化环境中完成。下一步是利用MATLAB环境中提供的C/C++编译工具COMPILER V2.0进行编译。SUGENO.FIS的模糊算法模型中使用了FUZZY工具中较多的M文件,如evalfis.m、guessmf.m等,须一并编译。在MATLAB环境下,用mcc命令即可编译得到SUGENO.C和SUGENO.H。该C/C++源程序代码完全支持ANSIC,可以作为程序模块应用于嵌入式或其它工业控制机系统中(须MATLAB C/C++库支持)。至此,基于Sugeno模糊推理算法的二维模糊控制器已经实现。
为验证Sugeno型模糊控制器的性能,在MATLAB的SIMLINK环境中,构造了一个控制系统,对工业控制系统中常见的大滞后、大惯性被控对象:
H(s)=K / (Ts+1)×e-τs
进行了仿真。为比较不同控制算法的差异,还同时对Mamdani型模糊推理算法和Ziegler-Nichols型PID控制算法进行了仿真。仿真结果如图4所示。可以看出,Sugeno型模糊推理算法除了具有模型简单、实时计算快的优点外,其控制性能也比较优异。
Mamdani型模糊推理算法具有直观、已普遍被人们接受和比较适合于人类输入的控制系统等优点。由于采用了单元属隶属函数以及输出与输入的线性关系,Sugeno型模糊推理算法则具有下列优点:
(1)具有较高的计算效率,适用于实时性要求高的系统;
(2)能与线性系统、优化控制和自适应控制系统很好地结合;
(3)能保证控制器输出的平滑性;
(4)比较适合于具有精确数学分析的控制系统,特别是多线性模型的平滑切换。