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


一、前言

模糊逻辑控制(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中系统的控制。希望对大家有所帮助。

  • 30
    点赞
  • 188
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
模糊控制方法(fuzzy logic)是一种基于模糊推理和模糊推断的控制方法。它与传统的基于精确数学模型的控制方法不同,能够更好地处理实际问题中的不确定性和模糊性。 模糊控制方法使用了模糊集合论中的模糊集合和模糊逻辑运算,通过构建模糊规则库和设计模糊推理机制来实现控制过程。它不需要准确的数学模型和精确的输入输出关系,而是通过对输入和输出的模糊化处理,将问题转化为一系列模糊规则的推理和模糊推断过程。 在模糊控制方法中,我们首先将系统的输入和输出进行模糊化处理,即通过模糊集合来表示输入和输出的不确定性和模糊性。然后,构建模糊规则库,其中包含了一系列模糊规则,每条规则描述了输入和输出之间的关系。接下来,通过使用模糊推理机制,将输入与规则库进行匹配,得到模糊推理结果。最后,通过去模糊化处理,将模糊输出转化为具体的控制指令。 模糊控制方法广泛应用于各种工程控制领域,特别是在处理非线性、模糊和不确定性问题上表现出色。它能够处理模糊输入输出、模糊规则和模糊推理等问题,使得控制系统更加鲁棒和适应性强。同时,由于模糊控制方法充分考虑了人类专家知识和经验,使得控制规则更加直观和易于理解。 总之,模糊控制方法通过模糊推理和模糊推断,能够有效处理实际问题中的模糊性和不确定性,具有广泛的应用前景。它在工程控制和人工智能领域都有着重要的研究和应用价值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值