一、概念

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

二、控制过程

所谓模糊控制,一般是用模糊的概念来描述偏差,并通过模糊推测得到模糊的给定量。比如,对偏差的描述常用“正大”,“正小”,“零”,“负小”,“负大”等模糊概念。
alt text

  • 精确的测量值经过输入模糊化过程变成模糊集;
  • 利用控制规则进行推理,即模糊决策,得到控制作用的模糊集;
  • 将控制作用的模糊集按照一定的规则转化成精确值,此为逆模糊化。

三、前置基础知识

1. 模糊逻辑与传统逻辑的区别

模糊逻辑是模糊控制的重要工具,它与传统逻辑的主要区别在于变量的真值

  • 传统逻辑
    真值只能是 0 或 1(非黑即白)。

    • 例:今天是否下雨?要么“是”,要么“否”。
  • 模糊逻辑
    真值可以是 [0, 1] 之间的任意值,表示某事的模糊程度。

    • 例:今天是“有点下雨”(隶属度为 0.6)。

2. 集合的基本概念

集合是数学中最基本的概念之一。传统集合的特点是清晰性,即一个元素要么属于该集合,要么不属于该集合。

例如:

  • 集合 $A = {x \in \mathbb{R} | x > 0}$ 表示所有大于零的实数。
  • 集合 $B = {1, 2, 3, 4}$ 表示四个具体的数字。

3. 域的基本概念

域是变量的取值范围,是模糊集合的定义基础。它通常由一个连续或离散的数值范围构成。

  • 基本论域:
    基本论域是指变量的所有可能取值范围。在模糊控制中,每个输入或输出变量都有一个对应的基本论域。它定义了模糊集合的作用范围。
    示例:
    • 如果一个模糊控制系统的输入是温度,温度可能在 $[0, 100]$ ℃ 之间变化,那么温度的基本论域就是 $[0, 100]$。
    • 输出变量是风扇的转速,其基本论域可能是 $[0, 3000]$ rpm。
  • 子论域:
    子论域是从基本论域中划分出来的一个子集,通常与特定的模糊集(如“低”、“中”、“高”等)相关联,用于描述变量的模糊值。
    示例:

    • 对于温度的基本论域 $[0, 100]$,可以定义以下子论域:
      • “低温”对应 $[0, 30]$。
      • “中温”对应 $[20, 70]$。
      • “高温”对应 $[60, 100]$。
    • 子论域之间通常有交叠,以符合模糊集合的特性。
  • 基本论域$[a,b]$到子论域$[-n,n]$的转换关系:

4. 模糊集合

4.1. 数学定义

模糊集合 $A$ 定义在一个论域 $X$ 上,它是所有元素 $x \in X$ 与其隶属度 $\mu_A(x)$ 的集合:
[
A = {(x, \mu_A(x)) | x \in X, \mu_A(x) \in [0, 1]}
]
其中:

  • $X$ 是论域(所有可能的元素集合),比如一个变量的取值范围;
  • $\mu_A(x)$ 是隶属函数,表示元素 $x$ 属于模糊集合 $A$ 的程度;
  • $\mu_A(x) \in [0, 1]$,即隶属度在 0 和 1 之间。

4.2. 模糊集合与传统集合的区别

1. 传统集合
在传统集合中,元素要么属于集合,要么不属于集合:

  • 如果元素 $x$ 属于集合 $A$,则 $x \in A$,隶属度 $\mu_A(x) = 1$;
  • 如果 $x$ 不属于集合 $A$,则 $\mu_A(x) = 0$。

例如:

  • 定义集合 $A = {x | x \geq 18}$,表示成年人;
    • 如果 $x = 20$,则 $\mu_A(20) = 1$;
    • 如果 $x = 15$,则 $\mu_A(15) = 0$。

2. 模糊集合
模糊集合允许元素部分属于集合,属于的程度由隶属函数 $\mu_A(x)$ 表示。例如,“接近年轻的人”:

  • 如果 $x = 20$ 岁,$\mu_A(20) = 1$(完全年轻);
  • 如果 $x = 30$ 岁,$\mu_A(30) = 0.5$(部分年轻);
  • 如果 $x = 50$ 岁,$\mu_A(50) = 0$(完全不年轻)。

5. 隶属度

隶属度(Membership Degree)是模糊集合理论中的核心概念,用来描述某个元素属于某模糊集合的程度。隶属度的值是一个介于 0 和 1 之间的实数,通过 隶属函数 来定义。

5.1. 隶属度的定义

隶属度通常用符号 $\mu_A(x)$ 表示,定义如下:

其中:

  • $x$ 是集合的元素;
  • $\mu_A(x)$ 是 $x$ 属于模糊集合 $A$ 的隶属度。

隶属度具有以下特点:

  • $\mu_A(x) = 1$ 表示 $x$ 完全属于集合 $A$;
  • $\mu_A(x) = 0$ 表示 $x$ 完全不属于集合 $A$;
  • $\mu_A(x) \in (0, 1)$ 表示 $x$ 部分属于集合 $A$,属于的程度由隶属度值表示。

5.2. 隶属函数

隶属函数是定义隶属度的数学表达式,决定了模糊集合的形状和性质。不同的隶属函数适用于不同的应用场景。

常见的隶属函数类型包括:

(1) 三角隶属函数
三角隶属函数是一种简单且常用的形式,定义为:

  • $a$ 和 $c$ 是底边的左右端点;
  • $b$ 是顶点(隶属度为 1)。

示例
模糊集合“中等温度”定义为:

  • 当温度 $T$ 为 20℃时,$\mu_A(20) = 0$;
  • 当温度 $T$ 为 50℃时,$\mu_A(50) = 1$;
  • 当温度 $T$ 为 80℃时,$\mu_A(80) = 0$。

(2) 梯形隶属函数
梯形隶属函数是三角隶属函数的扩展,定义为:

  • $[a, b]$ 是上升部分;
  • $[c, d]$ 是下降部分;
  • $[b, c]$ 是平台部分,隶属度为 1。

(3) 高斯隶属函数
高斯隶属函数(Gaussian Membership Function)定义为:

  • $c$ 是高斯曲线的中心;
  • $\sigma$ 是曲线的宽度。

这种函数平滑连续,适合处理对边界敏感的问题。

(4) S型隶属函数
S型隶属函数用于描述平滑的上升趋势,定义为:

6. 模糊集合运算

模糊集合的基本运算包括交集、并集和补集,与传统集合类似,但使用的是隶属度进行操作:

  • 交集(AND)

  • 并集(OR)

  • 补集(NOT)

四、控制过程理解

例子:智能风扇速度控制

目标:设计一个模糊控制系统,根据环境温度调整风扇速度,保持室内舒适温度。

  • 目标温度:$T_\text{target} = 25^\circ C$。
  • 温度偏差:温度偏差的定义为:

    其中:

    • $e > 0$ 表示室温高于目标温度,需要增加风扇速度;
    • $e < 0$ 表示室温低于目标温度,需要降低风扇速度。
  • 风扇速度:转速的基本论域为 $[0, 1000]$(单位:RPM)。

1. 输入与输出的模糊集合

输入变量:温度偏差 $e$
偏差的基本论域为 $[-10, 10]$(单位:℃),划分为以下模糊集合:

  • NB(负大):$e \leq -5$
  • NS(负小):$-5 < e \leq -1$
  • ZE(零):$-1 < e < 1$
  • PS(正小):$1 \leq e < 5$
  • PB(正大):$e \geq 5$

输出变量:风扇速度调整 $\Delta V$
风扇速度的调整量的基本论域为 $[-300, 300]$(单位:RPM),划分为:

  • NB(减速大):$\Delta V \leq -200$
  • NS(减速小):$-200 < \Delta V \leq -50$
  • ZE(不变):$-50 < \Delta V < 50$
  • PS(加速小):$50 \leq \Delta V < 200$
  • PB(加速大):$\Delta V \geq 200$

2. 模糊规则设计

模糊规则根据温度偏差 $e$ 生成风扇速度调整 $\Delta V$。示例如下:

$e$ $\Delta V$(调整规则)
NB PB(加速大)
NS PS(加速小)
ZE ZE(保持不变)
PS NS(减速小)
PB NB(减速大)
  • 解释
    • 如果偏差 $e$ 很负(NB),说明当前温度远低于目标温度,需要大幅度增加风扇速度;
    • 如果偏差 $e$ 很正(PB),说明当前温度远高于目标温度,需要大幅度减小风扇速度。

3. 隶属关系计算

隶属度函数
1. 输入变量:温度偏差 $ e $
基本论域:$[-10, 10]$
模糊集合及隶属度函数如下:
| 模糊集合 | 隶属度函数 |
| ——————— | ———————————————————————————————————————————————————————————— |
| NB(负大) | $\mu\text{NB}(e) = \begin{cases} 1 & e \leq -5 \ \frac{-1}{5}(e + 5) & -5 < e \leq -1 \ 0 & e > -1 \end{cases}$ |
| NS(负小) | $\mu
\text{NS}(e) = \begin{cases} 0 & e \leq -5 \text{ 或 } e > -1 \ \frac{1}{4}(e + 5) & -5 < e \leq -1 \end{cases}$ |
| ZE(零) | $\mu\text{ZE}(e) = \begin{cases} 0 & e \geq 1 或e \leq -1 \ 1 - e & -1 < e < 1 \end{cases}$ |
| PS(正小) | $\mu
\text{PS}(e) = \begin{cases} 0 & e \leq 1 \text{ 或 } e > 5 \ \frac{1}{4}(5 - e) & 1 < e \leq 5 \end{cases}$ |
| PB(正大) | $\mu_\text{PB}(e) = \begin{cases} 0 & e \leq 1 \ \frac{1}{5}(e - 1) & 1 < e \leq 5 \ 1 & e > 5 \end{cases}$ |

2. 输出变量:风扇速度调整 $\Delta V$
基本论域:$[-300, 300]$
模糊集合及隶属度函数如下:

模糊集合 隶属度函数
NB(减速大) $\mu_\text{NB}(\Delta V) = \begin{cases} 1 & \Delta V \leq -200 \ \frac{-1}{100}(\Delta V + 200) & -200 < \Delta V \leq -100 \ 0 & \Delta V > -100 \end{cases}$
NS(减速小) $\mu_\text{NS}(\Delta V) = \begin{cases} 0 & \Delta V \leq -200 \text{ 或 } \Delta V > -50 \ \frac{1}{150}(\Delta V + 200) & -200 < \Delta V \leq -50 \end{cases}$
ZE(不变) $\mu_\text{ZE}(\Delta V) = \begin{cases} 0 &\Delta V \geq 50或 \Delta V \leq -50 \ 1 - \frac{ \Delta V }{50} & -50 < \Delta V < 50 \end{cases}$
PS(加速小) $\mu_\text{PS}(\Delta V) = \begin{cases} 0 & \Delta V \leq 50 \text{ 或 } \Delta V > 200 \ \frac{1}{150}(\Delta V - 50) & 50 < \Delta V \leq 200 \end{cases}$
PB(加速大) $\mu_\text{PB}(\Delta V) = \begin{cases} 0 & \Delta V \leq 200 \ \frac{1}{100}(\Delta V - 200) & 200 < \Delta V \leq 300 \ 1 & \Delta V > 300 \end{cases}$

隶属度表格

输入变量:温度偏差 $ e $

$ e $ $ \mu_\text{NB}(e) $ $ \mu_\text{NS}(e) $ $ \mu_\text{ZE}(e) $ $ \mu_\text{PS}(e) $ $ \mu_\text{PB}(e) $
-10 1 0 0 0 0
-5 1 0.0 0 0 0
-3 0.4 0.6 0 0 0
-1 0.0 1.0 0 0 0
0 0 0 1.0 0 0
1 0 0 0 1.0 0
3 0 0 0 0.6 0.4
5 0 0 0 0.0 1
10 0 0 0 0 1

输出变量:风扇速度调整 $\Delta V$

$\Delta V$ $\mu_\text{NB}(\Delta V)$ $\mu_\text{NS}(\Delta V)$ $\mu_\text{ZE}(\Delta V)$ $\mu_\text{PS}(\Delta V)$ $\mu_\text{PB}(\Delta V)$
-300 1 0 0 0 0
-200 1 0.0 0 0 0
-100 0.0 0.6667 0 0 0
0 0 0 1.0 0 0
100 0 0 0 0.6667 0
200 0 0 0 0.0 1
300 0 0 0 0 1

4. 计算

根据前面的分析和计算,我们已经得到输出变量的隶属度。现在我们需要从输出变量的隶属度推导出风扇的转速调整量。

步骤 1:确定输出变量的隶属度

输入误差 $ e = 3 $ 对应的隶属度值为:

  • $ \mu_\text{NB} = 0 $
  • $ \mu_\text{NS} = 0 $
  • $ \mu_\text{ZE} = 0 $
  • $ \mu_\text{PS} = 0.6 $
  • $ \mu_\text{PB} = 0.4 $

根据模糊关系矩阵 $ R $,输出对应的隶属度值分别为:

  • NB(减速大):$ \mu_\text{NB} = 0.4 $
  • NS(减速小):$ \mu_\text{NS} = 0.6 $
  • ZE(不变):$ \mu_\text{ZE} = 0 $
  • PS(加速小):$ \mu_\text{PS} = 0 $
  • PB(加速大):$ \mu_\text{PB} = 0 $

步骤 2:去模糊化

我们可以使用质心法(Centroid Method)来进行去模糊化。质心法的公式为:

其中:

  • $ \mu_i $ 是对应模糊集合的隶属度值;
  • $ V_i $ 是对应模糊集合的中心值。

输出变量的中心值

根据风扇转速调整量 $ \Delta V $ 的模糊集合定义,我们可以计算每个集合的中心值(即隶属度函数的“中点”):

  • NB(减速大):$ V_{\text{NB}} = -250 $(大约为 -300 和 -200 之间的中心点)
  • NS(减速小):$ V_{\text{NS}} = -125 $(大约为 -200 和 -50 之间的中心点)
  • ZE(不变):$ V_{\text{ZE}} = 0 $(即没有调整)
  • PS(加速小):$ V_{\text{PS}} = 125 $(大约为 50 和 200 之间的中心点)
  • PB(加速大):$ V_{\text{PB}} = 250 $(大约为 200 和 300 之间的中心点)

质心法计算

最终结果

根据去模糊化的计算,当前输入误差 $ e = 3 $ 对应的风扇速度调整量为 -175 RPM,即风扇应当减速。