-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathusage.py
More file actions
83 lines (69 loc) · 2.65 KB
/
usage.py
File metadata and controls
83 lines (69 loc) · 2.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
"""
usage.py
This is an example of how to use the fuzzy inference system with a simple
temperature control system.
"""
from src.fis import FuzzyInferenceSystem
from src.linguisticVariable import LinguisticVariable
from src.membershipFunction import MembershipFunctionFactory
def main():
# Create fuzzy inference system
fis = FuzzyInferenceSystem()
# Create input variable: temperature
temperature = LinguisticVariable("temperature", [0, 50])
temperature.add_membership_function(
MembershipFunctionFactory.create_triangular("cold", [0, 10, 20])
)
temperature.add_membership_function(
MembershipFunctionFactory.create_triangular("normal", [15, 25, 35])
)
temperature.add_membership_function(
MembershipFunctionFactory.create_triangular("hot", [30, 40, 50])
)
# Create input variable: humidity
humidity = LinguisticVariable("humidity", [0, 100])
humidity.add_membership_function(
MembershipFunctionFactory.create_triangular("low", [0, 25, 50])
)
humidity.add_membership_function(
MembershipFunctionFactory.create_triangular("medium", [25, 50, 75])
)
humidity.add_membership_function(
MembershipFunctionFactory.create_triangular("high", [50, 75, 100])
)
# Create output variable: fan_speed
fan_speed = LinguisticVariable("fan_speed", [0, 100])
fan_speed.add_membership_function(
MembershipFunctionFactory.create_triangular("slow", [0, 25, 50])
)
fan_speed.add_membership_function(
MembershipFunctionFactory.create_triangular("medium", [25, 50, 75])
)
fan_speed.add_membership_function(
MembershipFunctionFactory.create_triangular("fast", [50, 75, 100])
)
# Add variables to the fuzzy inference system
fis.add_input_variable(temperature)
fis.add_input_variable(humidity)
fis.add_output_variable(fan_speed)
# Add rules from string
rules_str = """
IF temperature is hot AND humidity is high THEN fan_speed is fast;
IF temperature is hot AND humidity is medium THEN fan_speed is medium;
IF temperature is normal AND humidity is high THEN fan_speed is medium;
IF temperature is normal AND humidity is medium THEN fan_speed is slow;
IF temperature is cold THEN fan_speed is slow
"""
fis.add_rules_from_string(rules_str)
# Test the fuzzy inference system
inputs = {
"temperature": 38, # Hot
"humidity": 70, # High
}
result = fis.infer(inputs)
print(
f"Input: Temperature = {inputs['temperature']}°C, Humidity = {inputs['humidity']}%"
)
print(f"Output: Fan Speed = {result['fan_speed']}%")
if __name__ == "__main__":
main()