模糊控制规则表是怎么确定的_模糊控制

本文介绍了模糊控制的基本原理,模糊控制器的组成包括模糊化接口、知识库和推理与解模糊接口。模糊控制规则基于专家知识或经验,通过模糊推理和解模糊过程实现对控制量的调整。通过一个水位控制的例子,详细阐述了模糊规则的建立、模糊决策和控制量的反模糊化。最后提到了MATLAB在模糊控制中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、模糊控制的基本原理

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

f391f2f493cdd0585090c826ad2d0ad0.png

2、模糊控制器

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

ca7c649daef7a712007ae00b182eda82.png

(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处。

ee4caf052bc9d95ab07ea72e1236fec7.png

按照日常操作经验,有以下规则:

1、 若当前水位高于目标水位,则向外排水,差值越大,排水越快;

2、 若当前水位低于目标水位,则向内注水,差值越大,注水越快;

3、 若当前水位和目标水位相差很小,则保持排水速度和注水速度相等。

下面来设计一个模糊控制器

以水位的模糊控制为例,如图4-4所示。设有一个水箱,通过调节阀可向内注水和向外抽水。设计一个模糊控制器,通过调节阀门将水位稳定在固定点附近。按照日常的操作经验,可以得到基本的控制规则:

“若水位高于O点,则向外排水,差值越大,排水越快”;

“若水位低于O点,则向内注水,差值越大,注水越快”。

根据上述经验,按下列步骤设计模糊控制器:

f0c9e841a44f965eaab98fb939e67b07.png

1)确定观测量和控制量

定义理想液位O点的水位为h0,实际测得的水位高度为h,选择液位差:

7754689dfebc1662c8ccb004346a8a1d.png

将当前水位对于O点的偏差e作为观测量。

2)输入量和输出量的模糊化

将偏差e分为五个模糊集:负大(NB),负小(NS),零(O),正小(PS),正大(PB)。根据偏差e的变化范围分为七个等级:-3,-2,-1,0,+1,+2,+3。得到水位变化模糊表4-1。

085b8e906c537a2d383e8fed573184e4.png

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

7015cac584c4afa5be47e26047d17805.png

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。

ee78b7a038a837e5136303a4df8c32fb.png

4)求模糊关系

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

d816a73ff898eb1f6fb6fb2477231ba8.png

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

b62a3dbde5d3c039f59faf7f591cd1a5.png

4d5c44fee6e2438fbdf7b6f924f4b883.png

7392146158b491e70051ee9c319c1497.png

5)模糊决策

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

f17a164256002dd58bfb37e139297d3e.png

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

249668e8a2c883f129a5dc2daa57dad7.png

6、控制量的反模糊化

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

bafd976741d19151ab44c79e0ed09b64.png

如果按照“隶属度最大原则”进行反模糊化,则选择控制量为 u=-4,即阀门的开度应关大一些,减少进水量。

7、matlab实现

所幸的是,在matlab模糊控制工具箱中已经帮我们实现了4-6步求解矩阵运算的操作,只需要直接调用evalfis函数就可以得到相应的决策控制量。

288f512488da89512c47c55dcc867892.png

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

11171239100b4d85f8b3edd3dfc22aef.png

9f621572429f776804de30807e25c6a1.png

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(向下取整)。

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

d718bf31708fa85a9e78b90bdae08859.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值