用python写一个模糊控制的代码
时间: 2023-12-17 15:49:02 浏览: 59
以下是一个简单的模糊控制代码,用于控制一个灯的亮度。
```python
import numpy as np
import skfuzzy as fuzz
from skfuzzy import control as ctrl
# 定义输入变量
light = ctrl.Antecedent(np.arange(0, 101, 1), 'light')
# 定义输出变量
brightness = ctrl.Consequent(np.arange(0, 11, 1), 'brightness')
# 定义模糊集合和隶属函数
light['low'] = fuzz.trimf(light.universe, [0, 0, 50])
light['medium'] = fuzz.trimf(light.universe, [0, 50, 100])
light['high'] = fuzz.trimf(light.universe, [50, 100, 100])
brightness['low'] = fuzz.trimf(brightness.universe, [0, 0, 5])
brightness['medium'] = fuzz.trimf(brightness.universe, [0, 5, 10])
brightness['high'] = fuzz.trimf(brightness.universe, [5, 10, 10])
# 定义规则
rule1 = ctrl.Rule(light['low'], brightness['low'])
rule2 = ctrl.Rule(light['medium'], brightness['medium'])
rule3 = ctrl.Rule(light['high'], brightness['high'])
# 建立控制系统
brightness_ctrl = ctrl.ControlSystem([rule1, rule2, rule3])
brightness_level = ctrl.ControlSystemSimulation(brightness_ctrl)
# 输入一个光强值并进行模糊推理
brightness_level.input['light'] = 70
brightness_level.compute()
# 输出结果
print("The brightness level should be:", brightness_level.output['brightness'])
brightness.view(sim=brightness_level)
```
在这个例子中,输入变量是灯的光强度,输出变量是亮度级别。我们使用模糊控制方法来确定灯的亮度级别。根据输入变量的值,我们使用三个模糊集合(低、中、高)来描述输入变量的隶属度。同样,我们使用三个模糊集合(低、中、高)来描述输出变量的隶属度。
然后我们定义了三个规则,规则1:如果光强度低,则亮度级别低;规则2:如果光强度中等,则亮度级别中等;规则3:如果光强度高,则亮度级别高。
最后我们建立了一个控制系统并进行了模糊推理。输出结果是亮度级别,并将其可视化出来。