Mamdani 推理法
Mamdani 推理法是模糊控制中最常用的推理方法之一,特别适用于模糊控制器设计。它基于模糊逻辑,通过模糊化、模糊规则和去模糊化的过程进行推理和决策。
Mamdani 推理法的主要步骤如下:
-
模糊化(Fuzzification):
将输入变量( crisp inputs )转换为模糊集。也就是将实际的数值输入映射到一个模糊集合中,通常是通过隶属度函数进行转换。 -
规则库(Rule Base):
使用一组模糊规则来描述系统的行为,规则的格式通常为“如果 A,则 B”。这些规则采用语言变量(如“低”、“中”、“高”)来表示。 -
推理(Inference):
根据模糊规则库和输入的模糊集合,使用推理机制进行推理。推理的目的是计算每个输出的模糊值,通常是使用“最小-最大”或“乘法-加法”方法。 -
去模糊化(Defuzzification):
将推理得到的模糊集合转换为实际的输出(crisp output)。常见的去模糊化方法有“重心法”或“最大隶属度法”。
Mamdani 推理法步骤详解
1. 模糊化
将输入的实际数值(crisp input)转换为模糊集。例如,假设有输入变量“温度”,温度值为 30°C,假设温度的模糊化集合包括“低温”、“中温”和“高温”,每个模糊集合都有相应的隶属度函数,温度 30°C 对应的隶属度可能是:
- 低温:0.1
- 中温:0.7
- 高温:0.2
2. 应用规则库
假设有以下模糊规则:
- 规则 1:如果温度是“低温”,则风速是“慢”
- 规则 2:如果温度是“高温”,则风速是“快”
在规则应用时,我们根据输入的模糊值,确定规则的激活程度。例如,如果温度为 30°C 对应的隶属度是“低温 0.1”,“中温 0.7”,“高温 0.2”,则根据这些隶属度值激活相应的规则。
3. 推理(Inference)
对于每个规则,使用规则的隶属度进行推理。具体地,通过模糊乘法(通常是最小化运算)将输入的隶属度与规则的输出进行结合。例如:
- 对于“低温”规则,输出是“慢”,假设“慢”的隶属度函数是 0.4,则激活度为 0.1 × 0.4 = 0.04 0.1 \times 0.4 = 0.04 0.1×0.4=0.04。
- 对于“高温”规则,输出是“快”,假设“快”的隶属度函数是 0.8,则激活度为 0.2 × 0.8 = 0.16 0.2 \times 0.8 = 0.16 0.2×0.8=0.16。
4. 去模糊化
将推理得到的模糊结果转换为实际值。常用的去模糊化方法是重心法(Centroid method)。重心法的公式为:
y = ∑ ( y i × μ i ) ∑ μ i y = ∑ ( y i × μ i ) ∑ μ i y=∑(yi×μi)∑μiy = \frac{\sum (y_i \times \mu_i)}{\sum \mu_i} y=