模糊逻辑 | 模糊推理 | 模糊控制

注:本文为 “模糊逻辑” 相关文章合辑。

图片清晰度限于引文原状。

如有内容异常,请看原文。


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

ziqian__ 已于 2022-08-19 20:30:25 修改

一、前言

模糊逻辑控制(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 中系统的控制。

希望对大家有所帮助。


一文搞懂什么是模糊逻辑【附应用举例】

报告,今天也有好好学习 于 2020-10-21 00:56:45 发布

模糊逻辑

著名的 “沙堆问题”

“从一个沙堆里拿走一粒沙子,这还是一个沙堆吗?”

如果有人正正经经地问你这个问题,那你毫无疑问是会回答 “是”。

但如果每拿一粒就问你这个问题,问题的答案会一直都是 “是” 吗?

如果每次都是拿走一粒,始终还是一个沙堆的话,那么到最后一粒沙都没有的沙堆也能成为沙堆咯。

这显然是违背我们认知的,那么这里的问题出在哪呢?

这里的问题就在于 “沙堆” 这个概念是模糊的,没有一个清晰的界限将 “沙堆” 与 “非沙堆” 分开。我们没有办法明确指出,在这个不断拿走沙子的过程中,什么时候 “沙堆” 不再是 “沙堆”。

与 “沙堆” 相似的模糊概念还有 “年轻人”、“小个子”、“大房子” 等。这种在生活中常见的模糊概念,在用传统数学方法处理时,往往会出现问题。

那么,如果尝试消除这些概念的模糊性,会怎样呢?

如果规定沙堆只能由 10000 粒以上的沙子组成,“沙堆” 这个概念的模糊性就消除了。10000 粒沙子组成的是沙堆,9999 粒沙子组成的不是沙堆:这在数学上没有任何问题。

然而,仅仅取走微不足道的一粒沙子,就将 “沙堆” 变为 “非沙堆”,这又不符合我们日常生活中的思维习惯。

在企图用数学处理生活中的问题时,精确的数学语言和模糊的思维习惯产生了矛盾。

传统的数学方法常常试图进行精确定义,而人关于真实世界中事物的概念往往是模糊的,没有精确的界限和定义。在处理一些问题时,精确性和有效性形成了矛盾,诉诸精确性的传统数学方法变得无效,而具有模糊性的人类思维却能轻易解决。例如人脸识别问题。

所以,模糊逻辑就是用来解决这一矛盾的工具之一。

1.1 模糊逻辑简介

经典二值逻辑中,通常以 0 表示 “假” 以 1 表示 “真”,一个命题非真即假 。

在模糊逻辑中,一个命题不再非真即假,它可以被认为是 “部分的真” 。

模糊逻辑取消二值之间非此即彼的对立,用隶属度表示二值间的过度状态 。

打个比方,身高一米 178 是高个子。这句话无论你认为是真还是否,其实都是不准确的。

然后结合上文我们提到的隶属度,可以认为身高 178 对 “高个子” 的隶属度为 0.7。

下文放一张模糊理论的发展历程图。

在这里插入图片描述

1.2 模糊集合与模糊逻辑

在介绍模糊集合之间,我们先来回忆一下我们之前学习过的古典集合。

古典集合:对于任意一个集合 A,论域中的任何一个元素 x,或者属于 A,或者不属于 A。集合 A 也可以由其特征函数定义:

f A ( x ) = { 1 ,   x ∈ A 0 ,   x ∉ A \Large \mathop{f}_{A}(x)=\left\{ \begin{matrix} 1,\text{ }x\in A \\ 0,\text{ }x\notin A \\ \end{matrix} \right. fA(x)= 1, xA0, x/A

而模糊集合呢,则是论域上的元素可以 “部分地属于” 集合 A 。一个元素属于集合 A 的程度称为隶属度,模糊集合可用隶属度函数定义。

模糊集合的完整定义如下:

设存在一个普通集合 U,U 到 [0,1] 区间的任一映射 f 都可以确定 U 的一个模糊子集,称为 U 上的模糊集合 A。其中映射 f 叫做模糊集的隶属度函数,对于 U 上一个元素 u, f (u) 叫做 u 对于模糊集的隶属度,也可写作 A (u) 。

看不懂这句话就多看几遍,哈哈。然后还可以结合下文的内容,增进理解。

1.2.1 模糊集合与隶属度函数

隶属度表示程度,它的值越大,表明 u 属于 A 的程度越高,反之则表明 u 属于 A 的程度越低 。

古典集合可以看作一种退化的模糊集合,即论域中不属于该古典集合的元素隶属度为 0,其余元素隶属度为 1。

模糊集合的表示法

一共有两种表示方法,分别如下所示。

(1)Zadeh 表示法

当论域 U 为离散集合时,一个模糊集合可以表示为:

A ∼   = ∑ u ∈ U μ A ∼   ( u ) u \Large \underset{\sim}{\mathop{A}}\,=\sum\limits_{u\in U}{\frac{\mathop{\mu }_{\underset{\sim }{\mathop{A}}\,}(u)}{u}} A=uUuμA(u)

当论域 U 为连续集合时,一个模糊集合可以表示为:

A ∼   = ∫ u μ A ∼   ( u ) u \Large \underset{\sim }{\mathop{A}}\,=\int\limits_{u}{\frac{\mathop{\mu }_{\underset{\sim }{\mathop{A}}\,}(u)}{u}} A=uuμA(u)

需要注意的是,这里仅仅是借用了求和与积分的符号,并不表示求和与积分

(2)序对表示法

对于一个模糊集合来说,如果给出了论域上所有的元素以及其对应的隶属度,就等于表示出了该集合。所以,序对表示法出现了。

A ∼   = { ( u , μ A ( u ) ) ∣ u ∈ U } \Large \underset{\sim }{\mathop{A}}\,=\{(u,\mathop{\mu }_{A}(u))|u\in U\} A={(u,μA(u))uU}

模糊集合表示法示例

在这里插入图片描述

在这里插入图片描述

简单总结一下就是,模糊集合可以让很多情况的分类不显得那么绝对,而显得相对。

至于上文提到的隶属度函数,显而易见的是,隶属度函数十分重要,而不同问题对应的隶属度函数也不同,并且往往需要专家提供专业知识。

1.2.2 模糊集合上的运算定律

没啥好说的,基本同古典集合的运算定律一致。除了在古典集合中成立的矛盾律和排中律在模糊集合上不成立外。

定义:当且仅当对论域上任意元素 u,都有

μ A ∼   ( u ) ≤ μ B ∼   ( u ) \large \mathop{\mu }_{\underset{\sim }{\mathop{A}}\,}(u)\le \mathop{\mu }_{\underset{\sim }{\mathop{B}}\,}(u) μA(u)μB(u)

则称模糊集合 A 是模糊集合 B 的子集。

在这里插入图片描述

1.2.3 模糊逻辑

经典逻辑是二值逻辑,其中一个变元只有 “真” 和 “假”(1 和 0)两种取值,其间不存在任何第三值。

模糊逻辑也属于一种多值逻辑,在模糊逻辑中,变元的值可以是 [0,1] 区间上的任意实数。

设 P、Q 为两个变元,模糊逻辑的基本运算定义如下:

在这里插入图片描述

1.2.4 模糊关系及其合成运算

模糊关系也是模糊集合上的一种映射。像经典关系一样,模糊关系上也定义了映射特有的合成运算。

设 X,Y,Z 为论域,R 是 X×Y 上的模糊关系,S 是 Y×Z 上的模糊关系,T 是 R 到 S 的合成,记为 T=R◦S,其隶属度函数定义如下:

μ R ⋅ S ( x , z ) = V y ∈ Y   ( μ R ( x , y ) × μ S ( y , z ) \large \mathop{\mu }_{R\cdot S}(x,z)=\underset{y\in Y}{\mathop{V}}\,(\mathop{\mu }_{R}(x,y)\times \mathop{\mu }_{S}(y,z) μRS(x,z)=yYV(μR(x,y)×μS(y,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值