1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 初学模糊逻辑控制(Fuzzy Logic Control)

初学模糊逻辑控制(Fuzzy Logic Control)

时间:2023-02-18 03:12:01

相关推荐

初学模糊逻辑控制(Fuzzy Logic Control)

初学模糊逻辑控制(Fuzzy Logic Control)

一、前言二、基本概念1.模糊集合(Fuzzy set)2.控制规则和模糊推理3.多个控制规则时的模糊关系R4.解模糊4.1 最大隶属度法4.2 重心法三、利用Matlab Fuzzy工具箱实际模糊控制器1.控制问题2.利用Fuzzy工具箱设计Fuzzy控制器2.1 初识模糊控制器设计界面2.2 输入/输出模糊变量隶属度函数设置2.3 模糊规则2.4 保存所构建的模糊控制器3.在Simulink中调用相关模糊控制器四、写在最后

一、前言

模糊逻辑控制(Fuzzy Logic Control)是基于模糊数学发展来的一类控制方法,由扎德(Zadeh)于1965年提出。在传统的PID控制中,被控量误差通过精确的比例—积分—微分运算得到精确的控制动作,作用于被控对象,达到被控量追踪其参考值的效果。而在模糊逻辑控制中,从被控量误差得到控制动作不再依赖具体的数学表达式,而是通过人类模糊的经验获得,以控制电机转速为例:如果电机转速稍大于参考速度,那么我们就稍微减小电机速度,而如果电机转速远大于目标转速,那么我们就显著减小电机速度。这里得稍大于稍微减小远大于显著减小,都是一个比较抽象模糊的概念,而不是像比例—积分—微分运算那样精确。

模糊逻辑控制是一类更接近于人类思维习惯的控制策略,在生活中也有很多成功的应用,因此,有必要来了解一下其中蕴含的思想。

本文将以如下模糊控制系统为例,首先介绍模糊逻辑控制的一些基本概念,之后介绍一下其流程。

二、基本概念

1.模糊集合(Fuzzy set)

对于一个变量,如温度,除了用具体的温度数值来表示,我们平时生活中,还习惯用“温度高”、“温度低”等模糊词语表示,这里的“温度高”、“温度低”就是模糊集合。

以“温度高”这个模糊集合为例,假设论域Ω={0℃,10℃,20℃,30℃,40℃},即我们在Ω中讨论“温度高”这一概念,隶属度函数μ(a)为:μ(0℃)=0,μ(10℃)=0,μ(20℃)=0.3,μ(30℃)=0.6,μ(40℃)=1,这里,隶属度函数代表论域中元素a属于某模糊概念的可能性,显然,在Ω中,0℃显然不属于“温度高”这一模糊概念,所以μ(0℃)=0。那么,“温度高”对应的模糊集合A={(0℃, 0),(10℃, 0),(20℃, 0.33),(30℃, 0.6),(40℃, 1) },为了方便,可以记A=0/0℃+0/10℃+0.3/20℃+0.6/30℃+1/40℃。

从上面的例子来看,模糊集合A是元素a与其隶属度函数μ(a)的序偶集合,即:

对于本文前言所用的模糊控制系统,对于变量“误差e”和其“导数ec”,可以将其模糊化为{负大,负中,负小,零,正小,正中,正大},简记为{NB,NM,NS,O,PS,PM,PB},其中,负大、负中等均代表一个模糊集合

2.控制规则和模糊推理

在模糊控制中,我们需要根据实际生活中的经验去人为地设置一些控制规则。对于变量“误差e”和“控制量u”来说,两者论域均为{1,2,3,4,5},且“误差小”这一模糊集合A的隶属度函数为μ_es=(1.0,0.8,0.3,0.1,0.0),“控制量大”这一模糊集合B的隶属度函数为μ_ub=(0.0,0.2,0.4,0.7,1.0)。如果有类似这样的控制规则:“如果误差小,那么控制量大”,我们怎么根据两个隶属度函数推出两个模糊集合之间的模糊关系R呢?以下给出R的定义:

根据以上步骤,我们得到了模糊集合A到模糊集合B的模糊关系R。但是,这个R的含义是什么,怎么去用它呢?这就需要介绍模糊推理了。

模糊推理就是用已有的规则,由输入近似推理输出。比如说,我们有规则“变量x为A,则变量y为B”,且实际的变量x为A‘,那么实际的变量y’对应的B‘是什么呢?这里就用到了模糊集合A、B之间的模糊关系R,即:

仍以上述误差和控制量为例,我们已经求出了模糊集合A和B之间的关系R,即式(2)。如果已知实际变量x’对应的模糊集合就是A,则μ_A’=(1.0,0.8,0.3,0.1,0.0),那么μ_B’可以由下式求得:

我们仔细观察一下,这个μ_B’恰好是μ_ub,,也就是B‘对应“控制量大”这一模糊集合B。从模糊推理这个例子来看,上述定义的R确实能够反映“如果误差小,那么控制量大”这一控制规则。

上述输入只有一个误差e,如果输入变为误差e和其导数ec后,模糊关系R是什么样的呢?假设误差e的一个模糊集合为E,对应隶属度函数为μ_E=(0.8,0.2),误差ec的一个模糊集合为EC,对应隶属度函数为μ_EC=(0.1,0.6,1.0),控制量u的模糊集合为U,对应隶属度函数为μ_U=(0.3,0.7,1.0)。则R的求解如下:

注意,这里算出R1后,再算R时用的是R1’,将矩阵变成了向量。推理的时候,用:

值得注意的是,这里算出来E’×EC’后,也需要将矩阵转换成向量。

3.多个控制规则时的模糊关系R

对于每一条控制规则“如果…,那么…”,都有一个Ri与之对应。而一个模糊控制器中不止一个控制规则,最终的模糊关系R由下式得到:

4.解模糊

我们根据模糊推理,得到的是控制变量的模糊集合U,或者说是其隶属度函数μ_U,如何根据隶属度函数得到具体的控制变量值u呢?这里需要用到解模糊。解模糊的方式有很多种,有最大隶属度法、重心法、系数加权平均法等,这里只介绍最大隶属度法和重心法。

4.1 最大隶属度法

对于控制变量u,假设其论域为{1,2,3,4,5},而求出来的模糊控制集合U的隶属度函数为(0.2,0.3,0.7,0.4,0.3)。那么,我们选取最大隶属度,即0.7,对应的论域元素,即3,作为控制变量u施加给执行器。

4.2 重心法

仍然假设对于控制变量u,其论域为{1,2,3,4,5},而求出来的模糊控制集合U的隶属度函数为(0.2,0.3,0.7,0.4,0.3)。则u=(0.21+0.32+0.73+0.44+0.3*5)/(0.2+0.3+0.7+0.4+0.3)=3.16。用公式表示为:

式(7)针对离散论域,式(8)针对连续论域。

三、利用Matlab Fuzzy工具箱实际模糊控制器

Matlab中有自带的Fuzzy控制器设计工具,也可以很方便地在Simulink调用。本节以一个简单的问题为例,说明利用Matlab中的Fuzzy工具箱来控制系统的大体流程。

1.控制问题

对于如下系统,设计一个模糊控制器,使其输出能够跟随输入。

2.利用Fuzzy工具箱设计Fuzzy控制器

在Matlab的命令行窗口中输入fuzzy,打开Fuzzy工具箱,如下图所示。

2.1 初识模糊控制器设计界面

从图中可以看出,模糊控制器设计界面分为4个部分:

第1部分是模糊控制器整体,包含输入,所设计控制器,及输出。值得注意的是,输入输出数量是可以改变的,具体通过菜单栏>>Edit>>Add Variable实现。

第2部分为模糊控制器类型,分为mamdani和sugeno型。前者是输出是模糊量,后者输出是精确量。两者区别可参考 Mamdani模糊系统 、 Sugeno模糊模型 和 Mamdani and Sugeno Fuzzy Inference Systems。本文中用的是mamdani型。

第3部分为模糊推理及解模糊相关设置。

以规则“如果input1是A并且/或input2是B,那么output是C”为例。

该规则中,并且就是3中的and,就是3中的or,选择不同的and和or操作,结果也会不同,一般情况and设置为min操作,or设置为max操作即可。

implication指的是规则中的那么,是根据已知条件推理的过程,一般选为min。

Aggregation是对多个控制规则得到的输出进行整合,得到最终的模糊输出。

Defuzzification指的是解模糊过程,将得到的模糊输出清晰化,是其能够直接用于系统控制。

关于第三部分各参数含义,以及模糊控制器工作过程,具体参考 Matlab 帮助说明 Fuzzy Inference Process,里面详细生动地给出了模糊控制器工作过程,对理解模糊控制很有帮助。

第4部分就是1中当前选中的内容一些信息。比如图中所展示的,1中当前选中了input1,则input1相关信息就在4中展示出来。

2.2 输入/输出模糊变量隶属度函数设置

双击1中的input1/output1,可以进入相应的隶属度函数设置界面,如下图

第1部分展示了所有模糊变量的隶属度函数总体形状。

第2部分可以改变输入范围(Range),以及显示范围,即第一部分坐标轴横坐标(Display Range)。

第3部分相当重要,通过该部分,可以设置模糊变量名称(Name)及相应隶属度函数形状(Type,可以是三角形、梯形等),也可以通过改变Params,来改变隶属度函数宽窄。

如果想要增加模糊变量个数,可以通过菜单栏>>Edit>>Add MFs实现。

至此,我们完成了对输入输出模糊变量隶属度函数的设置,接下来,需要我们设置规则,实现通过已知模糊输入,得到模糊输出。

2.3 模糊规则

通过菜单栏>>Edit>>Rules,可以实现模糊规则的添加,如下图

第1部分为已经制定好的模糊规则。

第2部分为输出条件之间关系,并(and)/或(or)。

第3部分为该规则的权重,权重越大,该条规则优先级越大。

第4部分为删除/增加/改变规则。

2.4 保存所构建的模糊控制器

至此,我们设计了一个模糊控制器,通过菜单栏>>File>>Export>>To workspace/file。前者将设计的模糊控制器导出到workspace中,后者将模糊控制器保存在电脑上。注意,仅保存到workspace中的模糊控制器在matlab关闭后随之消失。

3.在Simulink中调用相关模糊控制器

在Simulink中搭建1中所例举系统并使用模糊控制器控制,如下图

第1部分为输入量限制,将输入量控制在输入论域范围。

第2部分为所构建的模糊控制器,先在Simulink中加入Fuzzy Logic Controller模块,双击将其中名称改为刚才设计的控制器名称即可。注意,运行仿真程序前,最好将刚才设计的模糊控制器导入到workspace,这样simulink调用时不会出错。

第3部分为1中被控系统。

四、写在最后

至此,介绍了模糊控制的一些概念,利用matlab设计模糊控制并将其用于simulink中系统的控制。希望对大家有所帮助。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。