模糊推理
模糊推理 (Fuzzy Inference) 是模糊系统的核心计算流程,负责将精确输入通过模糊规则库转化为精确输出。整个过程分为三个阶段:模糊化、规则推理和去模糊化。
推理流水线
精确输入 → [模糊化] → 模糊隶属度 → [推理引擎 + 规则库] → 模糊输出 → [去模糊化] → 精确输出这条流水线是模糊系统的"脊柱",所有类型的模糊系统(Mamdani、T-S、ANFIS)都遵循这一基本结构,只是在各步骤的具体实现上有所不同。
第一步:模糊化
模糊化 (Fuzzification) 将精确的输入值映射为各模糊集上的隶属度。
例如,输入温度 ,系统中定义了三个语言值"低"“中"“高”,分别有各自的隶属函数。模糊化的过程就是计算 、、 的值。
假设结果为 、、,表示 28°C “主要属于中等温度,部分属于高温”。
对于多输入系统,每个输入变量独立进行模糊化。
第二步:规则推理
规则推理 (Rule Evaluation) 将模糊化后的隶属度与模糊规则库进行匹配和计算。
规则激活强度
每条规则的激活强度 (Firing Strength) 由前件条件的隶属度决定。对于 AND 连接的规则:
例如规则"IF 温度 is 高 AND 湿度 is 大 THEN …",如果 ,,则该规则的激活强度为 。
输出推理
对于 Mamdani 系统:用激活强度"截断"后件模糊集。如果后件是"风扇转速 is 快”,对应的隶属函数被截取到 的水平。最终将所有规则截取后的输出模糊集叠加(取 max 或求和)。
对于 T-S 系统:直接用后件函数计算输出值 ,然后用激活强度加权平均:
T-S 系统直接得到精确输出,不需要去模糊化步骤。
第三步:去模糊化
去模糊化 (Defuzzification) 将 Mamdani 系统的模糊输出集合转化为一个精确数值。
常用去模糊化方法
| 方法 | 公式 | 说明 | 优先级 |
|---|---|---|---|
| 重心法 (Centroid) | 输出模糊集的"质心"位置,最常用 | ⭐⭐⭐⭐⭐ | |
| 最大隶属度法 | 取隶属度最高的点,计算简单 | ⭐⭐⭐⭐ | |
| 加权平均法 | 对各规则中心的加权平均 | ⭐⭐⭐⭐ | |
| 平均最大值法 | — | 取所有最大隶属度点的平均值 | ⭐⭐⭐ |
重心法是默认选择,因为它考虑了输出模糊集的完整形状,产生的输出最平滑。最大隶属度法在实时性要求高的场景中更有优势。
II 型系统的额外步骤
对于 II 型模糊系统,由于隶属度本身是模糊的(用 FOU 表示),在去模糊化之前需要先做类型约简 (Type Reduction):
推理
与 I 型类似,但输出是一个 II 型模糊集(区间形式)。
类型约简
将 II 型输出降维为 I 型(或精确区间)。常用的 Karnik-Mendel (KM) 算法通过迭代计算左右端点。
去模糊化
对约简后的 I 型结果进行去模糊化,输出精确值。
类型约简是 II 型模糊系统计算复杂度高于 I 型的主要原因。区间 II 型模糊集 (IT2FS) 的类型约简比一般 II 型要简单得多,这也是 IT2FS 成为主流 II 型形式的原因。
完整示例
以一个温度控制器为例说明 Mamdani 系统的完整推理过程:
规则库:
- Rule 1: IF 温度 is 低 THEN 加热 is 强
- Rule 2: IF 温度 is 中 THEN 加热 is 中
- Rule 3: IF 温度 is 高 THEN 加热 is 弱
输入:温度 = 28°C
模糊化:,,
激活:Rule 1 激活强度 0,Rule 2 激活强度 0.6,Rule 3 激活强度 0.4
输出合成:将"加热 is 中"截取到 0.6、“加热 is 弱"截取到 0.4,叠加后得到输出模糊集
去模糊化:对叠加后的输出模糊集用重心法计算精确输出值