利用scikit-fuzzy
时间: 2023-05-25 11:03:04 浏览: 584
Scikit-fuzzy是一种基于Python的工具,可用于模糊系统建模和控制。它提供了一组用于模糊逻辑和模糊控制的函数和类。
以下是使用scikit-fuzzy的一些示例:
1.创建模糊变量
借助模糊变量,模糊控制系统可以将非精确输入映射到模糊输出。例如,对于一个绕过障碍物的机器人,距离可以用朦胧的距离变量表示。该代码段演示了如何创建一个名为“distance”的朦胧变量,其范围为0-10:
```
import numpy as np
import skfuzzy as fuzz
from skfuzzy import control as ctrl
distance = ctrl.Antecedent(np.arange(0, 11, 1), 'distance')
```
2. 创建朦胧集合
随着每个朦胧变量的变化,它的“成员资格函数”也随之变化。可以使用一系列的朦胧集合来描述成员资格函数,以便在距离变量中指定距离值。
```
distance['long'] = fuzz.trimf(distance.universe, [5, 10, 10])
distance['medium'] = fuzz.trimf(distance.universe, [0, 5, 10])
distance['short'] = fuzz.trimf(distance.universe, [0, 0, 5])
```
3. 创建朦胧规则
朦胧规则描述了对模糊变量的模糊控制。在这个例子中,根据障碍物到机器人的距离,朦胧规则可以控制机器人向左或向右移动。
```
move = ctrl.Consequent(np.arange(-10, 11, 1), 'move')
move['left'] = fuzz.trimf(move.universe, [-10, -10, 0])
move['right'] = fuzz.trimf(move.universe, [0, 10, 10])
rule1 = ctrl.Rule(distance['short'], move['left'])
rule2 = ctrl.Rule(distance['long'], move['right'])
rule3 = ctrl.Rule(distance['medium'], move['left'] | move['right'])
```
4. 创建控制系统
通过将变量,集合和规则组合在一起,可以创建一个完整的控制系统。可以使用“ControlSystem”类直接表示控制系统。
```
move_ctrl = ctrl.ControlSystem([rule1, rule2, rule3])
```
5. 运行控制系统
通过将输入提供给控制系统并通过遵循朦胧规则来自动计算输出。可以使用“ControlSystemSimulation”类创建控制系统。
```
move_sim = ctrl.ControlSystemSimulation(move_ctrl)
move_sim.input['distance'] = 7
move_sim.compute()
print(move_sim.output['move'])
```
这个示例演示了如何使用模糊变量,模糊集合,模糊规则和模糊控制系统来建模和控制朦胧系统。 Scikit-fuzzy可以用于工业和科学应用中的模糊逻辑和模糊控制问题。
阅读全文