模糊推理实例代码python
时间: 2023-11-29 09:46:53 浏览: 39
以下是一个模糊推理的实例代码,使用了scikit-fuzzy库来实现:
```python
import numpy as np
import skfuzzy as fuzz
from skfuzzy import control as ctrl
# 定义论域
sludge = ctrl.Antecedent(np.arange(0, 101, 1), 'sludge')
grease = ctrl.Antecedent(np.arange(0, 101, 1), 'grease')
wash_time = ctrl.Consequent(np.arange(0,121, 1), 'wash_time')
# 定义隶属度函数
sludge['SD'] = fuzz.trimf(sludge.universe, [0, 0, 50])
sludge['MD'] = fuzz.trimf(sludge.universe, [0, 50, 100])
sludge['LD'] = fuzz.trimf(sludge.universe, [50, 100,100])
grease['NG'] = fuzz.trimf(grease.universe, [0,0, 50])
grease['MG'] = fuzz.trimf(grease.universe, [0,50, 100])
grease['LG'] = fuzz.trimf(grease.universe, [50, 100, 100])
wash_time['VS'] = fuzz.trimf(wash_time.universe, [0, 0, 30])
wash_time['S'] = fuzz.trimf(wash_time.universe, [0, 30, 60])
wash_time['M'] = fuzz.trimf(wash_time.universe, [30, 60, 90])
wash_time['L'] = fuzz.trimf(wash_time.universe, [60, 90, 120])
wash_time['VL'] = fuzz.trimf(wash_time.universe, [90, 120, 120])
# 定义规则
rule1 = ctrl.Rule(sludge['SD'] & grease['NG'], wash_time['S'])
rule2 = ctrl.Rule(sludge['SD'] & grease['MG'], wash_time['M'])
rule3 = ctrl.Rule(sludge['SD'] & grease['LG'], wash_time['L'])
rule4 = ctrl.Rule(sludge['MD'] & grease['NG'], wash_time['S'])
rule5 = ctrl.Rule(sludge['MD'] & grease['MG'], wash_time['M'])
rule6 = ctrl.Rule(sludge['MD'] & grease['LG'], wash_time['L'])
rule7 = ctrl.Rule(sludge['LD'] & grease['NG'], wash_time['M'])
rule8 = ctrl.Rule(sludge['LD'] & grease['MG'], wash_time['L'])
rule9 = ctrl.Rule(sludge['LD'] & grease['LG'], wash_time['VL'])
# 定义控制系统
washing_ctrl = ctrl.ControlSystem([rule1, rule2, rule3, rule4, rule5, rule6, rule7, rule8, rule9])
washing = ctrl.ControlSystemSimulation(washing_ctrl)
# 输入污泥和油脂的值
washing.input['sludge'] = 30
washing.input['grease'] = 70
# 运行控制系统
washing.compute()
# 输出洗涤时间的值
print(washing.output['wash_time'])
# 输出洗涤时间的隶属度函数
wash_time.view(sim=washing)
```