模糊控制

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

  1. %水位模糊控制算法
  2. clear all;
  3. close all;
  4. a = newfis('fuzzy tank');
  5. a = addvar(a,'input','e',[-3,3]);
  6. a = addmf(a,'input',1,'NB','zmf',[-3,-1]);
  7. a =addmf(a,'input',1,'NS','trimf',[-3,-1,1]);
  8. a =addmf(a,'input',1,'ZO','trimf',[-2,0,2]);
  9. a =addmf(a,'input',1,'PS','trimf',[-1,1,3]);
  10. a = addmf(a,'input',1,'PB','smf',[1,3]);
  11. a = addvar(a,'output','u',[-4,4]);
  12. a = addmf(a,'output',1,'NB','zmf',[-4,-2]);
  13. a =addmf(a,'output',1,'NS','trimf',[-4,-2,0]);
  14. a =addmf(a,'output',1,'ZO','trimf',[-2,0,2]);
  15. a =addmf(a,'output',1,'PS','trimf',[0,2,4]);
  16. a = addmf(a,'output',1,'PB','smf',[2,4]);
  17. %建立模糊规则
  18. rulelist=[1 1 1 1;
  19. 2 2 1 1;
  20. 3 3 1 1;
  21. 4 4 1 1;
  22. 5 5 1 1];
  23. a = addrule(a,rulelist);
  24. %设置反模糊化算法
  25. a1 = setfis(a,'DefuzzMethod','mom');
  26. writefis(a1,'tank');
  27. a2 = readfis('tank');
  28. figure(1);
  29. plotfis(a2);
  30. figure(2);
  31. plotmf(a,'input',1);
  32. figure(3);
  33. plotmf(a,'output',1);
  34. showrule(a);
  35. ruleview('tank');
  36. for i=1:1:7
  37. e(i)=i-4;
  38. Ulist(i)=evalfis([e(i)],a2);
  39. end
  40. Ulist = round(Ulist); %对决策结果四舍五入取整
  41. disp('------------------------------------------------------');
  42. disp('----------模糊控制表:e =[-3,3], u = [-4,4]-----------');
  43. disp('------------------------------------------------------');
  44. fprintf('| a |');
  45. fprintf(' %d |',e);
  46. fprintf('n');
  47. fprintf('| u |');
  48. fprintf(' %d |',Ulist);
  49. 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(向下取整)。

最后总结一下模糊控制器的设计步骤:


点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注