1、模糊控制的基本原理
模糊控制是以模糊集理论、模糊语言变量和模糊逻辑推理为基础的一种智能控制方法,它是从行为上模仿人的模糊推理和决策过程的一种智能控制方法。该方法首先将操作人员或专家经验编成模糊规则,然后将来自传感器的实时信号模糊化,将模糊化后的信号作为模糊规则的输入,完成模糊推理,将推理后得到的输出量加到执行器上。

2、模糊控制器
模糊控制器(Fuzzy Controller—FC):也称为模糊逻辑控制器(Fuzzy Logic Controller—FLC),由于所采用的模糊控制规则是由模糊理论中模糊条件语句来描述的,因此模糊控制器是一种语言型控制器,故也称为模糊语言控制器(Fuzzy Language Controller—FLC)。

(1)模糊化接口(Fuzzy interface)
模糊控制器的输入必须通过模糊化才能用于控制输出的求解,因此它实际上是模糊控制器的输入接口。它的主要作用是将真实的确定量输入转换为一个模糊矢量。
(2)知识库(Knowledge Base—KB)
知识库由数据库和规则库两部分构成。
①数据库(Data Base—DB) 数据库所存放的是所有输入、输出变量的全部模糊子集的隶属度矢量值(即经过论域等级离散化以后对应值的集合),若论域为连续域则为隶属度函数。在规则推理的模糊关系方程求解过程中,向推理机提供数据。
②规则库(Rule Base—RB) 模糊控制器的规则司基于专家知识或手动操作人员长期积累的经验,它是按人的直觉推理的一种语言表示形式。模糊规则通常有一系列的关系词连接而成,如if-then、else、also、end、or等,关系词必须经过“翻译”才能将模糊规则数值化。最常用的关系词为if-then、also,对于多变量模糊控制系统,还有and等。
(3)推理与解模糊接口(Inference and Defuzzy-interface)
推理是模糊控制器中,根据输入模糊量,由模糊控制规则完成模糊推理来求解模糊关系方程,并获得模糊控制量的功能部分。在模糊控制中,考虑到推理时间,通常采用运算较简单的推理方法。最基本的有Zadeh近似推理,它包含有正向推理和逆向推理两类。正向推理常被用于模糊控制中,而逆向推理一般用于知识工程学领域的专家系统中。推理结果的获得,表示模糊控制的规则推理功能已经完成。但是,至此所获得的结果仍是一个模糊矢量,不能直接用来作为控制量,还必须作一次转换,求得清晰的控制量输出,即为解模糊。通常把输出端具有转换功能作用的部分称为解模糊接口。
3、模糊控制系统的工作原理(实例)
来看一个实例,控制进水阀S1和出水阀S2,使水箱水位保持在目标水位O处。

按照日常操作经验,有以下规则:
1、 若当前水位高于目标水位,则向外排水,差值越大,排水越快;
2、 若当前水位低于目标水位,则向内注水,差值越大,注水越快;
3、 若当前水位和目标水位相差很小,则保持排水速度和注水速度相等。
下面来设计一个模糊控制器
以水位的模糊控制为例,如图4-4所示。设有一个水箱,通过调节阀可向内注水和向外抽水。设计一个模糊控制器,通过调节阀门将水位稳定在固定点附近。按照日常的操作经验,可以得到基本的控制规则:
“若水位高于O点,则向外排水,差值越大,排水越快”;
“若水位低于O点,则向内注水,差值越大,注水越快”。
根据上述经验,按下列步骤设计模糊控制器:

1)确定观测量和控制量
定义理想液位O点的水位为h0,实际测得的水位高度为h,选择液位差:

将当前水位对于O点的偏差e作为观测量。
2)输入量和输出量的模糊化
将偏差e分为五个模糊集:负大(NB),负小(NS),零(O),正小(PS),正大(PB)。根据偏差e的变化范围分为七个等级:-3,-2,-1,0,+1,+2,+3。得到水位变化模糊表4-1。

控制量u为调节阀门开度的变化。将其分为五个模糊集:负大(NB),负小(NS),零(ZO),正小(PS),正大(PB)。并将u的变化范围分为九个等级:-4,-3,-2,-1,0,+1,+2,+3,+4。得到控制量模糊划分表4-2。

3)模糊规则的描述
根据日常的经验,设计以下模糊规则:
(1)“若e负大,则u负大”
(2)“若e负小,则u负小”
(3)“若e为0,则u为0”
(4)“若e正小,则u正小”
(5)“若e正大,则u正大”
其中,排水时,u为负,注水时,u为正。
上述规则采用“IF A THEN B”形式来描述:
(1) if e=NB then u=NB
(2) if e=NS then u=NS
(3) if e=0 then u=0
(4) if e=PS then u=PS
(5) if e=PB then u=PB
根据上述经验规则,可得模糊控制表4-3。

4)求模糊关系
模糊控制规则是一个多条语句,它可以表示为U×V上的模糊子集,即模糊关系R:

其中规则内的模糊集运算取交集,规则间的模糊集运算取并集。



5)模糊决策
模糊控制器的输出为误差向量和模糊关系的合成:

当误差e为NB时,e=[1,0.5,0,0,0,0,0]控制器输出为:

6、控制量的反模糊化
由模糊决策可知,当误差为负大时,实际液位远高于理想液位,e=NB,控制器的输出为一模糊向量,可表示为:

如果按照“隶属度最大原则”进行反模糊化,则选择控制量为 u=-4,即阀门的开度应关大一些,减少进水量。
7、matlab实现
所幸的是,在matlab模糊控制工具箱中已经帮我们实现了4-6步求解矩阵运算的操作,只需要直接调用evalfis函数就可以得到相应的决策控制量。

通过matlab集成的模糊控制模块,我们能够更加方便地对应偏差e和控制量u的关系,并可以调节e在不同值下u的对应输出。


Matlab程序
[cpp] view plain copy
- %水位模糊控制算法
- clear all;
- close all;
- a = newfis('fuzzy tank');
- a = addvar(a,'input','e',[-3,3]);
- a = addmf(a,'input',1,'NB','zmf',[-3,-1]);
- a =addmf(a,'input',1,'NS','trimf',[-3,-1,1]);
- a =addmf(a,'input',1,'ZO','trimf',[-2,0,2]);
- a =addmf(a,'input',1,'PS','trimf',[-1,1,3]);
- a = addmf(a,'input',1,'PB','smf',[1,3]);
- a = addvar(a,'output','u',[-4,4]);
- a = addmf(a,'output',1,'NB','zmf',[-4,-2]);
- a =addmf(a,'output',1,'NS','trimf',[-4,-2,0]);
- a =addmf(a,'output',1,'ZO','trimf',[-2,0,2]);
- a =addmf(a,'output',1,'PS','trimf',[0,2,4]);
- a = addmf(a,'output',1,'PB','smf',[2,4]);
- %建立模糊规则
- rulelist=[1 1 1 1;
- 2 2 1 1;
- 3 3 1 1;
- 4 4 1 1;
- 5 5 1 1];
- a = addrule(a,rulelist);
- %设置反模糊化算法
- a1 = setfis(a,'DefuzzMethod','mom');
- writefis(a1,'tank');
- a2 = readfis('tank');
- figure(1);
- plotfis(a2);
- figure(2);
- plotmf(a,'input',1);
- figure(3);
- plotmf(a,'output',1);
- showrule(a);
- ruleview('tank');
- for i=1:1:7
- e(i)=i-4;
- Ulist(i)=evalfis([e(i)],a2);
- end
- Ulist = round(Ulist); %对决策结果四舍五入取整
- disp('------------------------------------------------------');
- disp('----------模糊控制表:e =[-3,3], u = [-4,4]-----------');
- disp('------------------------------------------------------');
- fprintf('| a |');
- fprintf(' %d |',e);
- fprintf('n');
- fprintf('| u |');
- fprintf(' %d |',Ulist);
- fprintf('n');
备注:
1、模糊规则矩阵rulelist的含义:模糊矩阵是由模糊规则转化而来,这里矩阵规模为5*4,矩阵第一列表示输入e(5个模糊集合PB/PS/ZO/NS/NB依次对应1-5),矩阵第二列表示输出u(含义同理),第三列为规则的权重weight,第四列为AND模糊运算(1对应AND,2对应OR),如果是多输入多数出模糊控制器,规则列表的含义请参考:
The first mcolumns refer to the inputs of the system. Each column contains a number thatrefers to the index of the membership function for that variable.
The next n columns refer to the outputs of thesystem. Each column contains a number that refers to the index of themembership function for that variable.
The m + n + 1 column contains the weight that isto be applied to the rule. The weight must be a number between zero and one andis generally left as one.
The m + n + 2 column contains a 1 if the fuzzyoperator for the rule's antecedent is AND. It contains a 2 if the fuzzyoperator is OR.
2、设置反模糊化方法setfis(a,'DefuzzMethod','mom');反模糊化方法不同最终输出控制量也不同。
mom 最大隶属度平均法
centroid 面积重心法
bisector 面积等分法
som 最大隶属度取小法
lom 最大隶属度去大法
3、如果要对决策结果取整有三种方法:round(四舍五入)、ceil(向上取整)、floor(向下取整)。
最后总结一下模糊控制器的设计步骤:
