我想制作一个推理模糊引擎,它可以推断出 3 种类型的规则:
- 清晰的规则。
- 模糊规则。
- 具有清晰和模糊事实的混合规则。
每个规则都有一个假设集、一个结论集和一个确定性因子。在集合的事实中,如果一个事实是一个模糊的事实,那么它就具有一定程度的真实性。
有推断清晰规则和模糊规则的教程,但我如何推断混合规则?
我想制作一个推理模糊引擎,它可以推断出 3 种类型的规则:
每个规则都有一个假设集、一个结论集和一个确定性因子。在集合的事实中,如果一个事实是一个模糊的事实,那么它就具有一定程度的真实性。
有推断清晰规则和模糊规则的教程,但我如何推断混合规则?
模糊规则不是清晰规则的概括(如果我正确理解清晰规则的含义)。将模糊规则转换为清晰规则的方法是确保前件中的隶属函数 (MF) 不与任何其他隶属函数重叠,并且随后的 MF 是这样的,当去模糊时,它基本上给出了单一的清晰值。
例如:输入温度如下 MF:
temp_low_mf = fuzz.trimf(x_temp, [0, 0, 10])
temp_med_mf = fuzz.trimf(x_temp, [0, 20, 45])
temp_high_mf = fuzz.trimf(x_temp, [20, 45, 45])
输出风扇速度具有与清晰规则相关的 MF 之一:
fanspeed_low_mf = fuzz.trimf(x_fanspeed, [0, 0, 0])
所以下面的模糊规则实际上是一个清晰的规则:
rule1 = ctrl.Rule(tempAnt['low'], fanspeedCon['low'], "Cold Climate Rule")
即:如果温度小于 10,则风扇速度应为 0。