10
10
class TrapezoidalFuzzySet :
11
11
"""
12
12
Represents and manipulates trapezoidal fuzzy sets.
13
-
13
+
14
14
Attributes:
15
15
name: The name or label of the fuzzy set.
16
16
left_base: The left base of the trapezoid.
@@ -46,24 +46,34 @@ def membership(self, value: float) -> float:
46
46
if value < self .left_base or value > self .right_base :
47
47
membership_value = 0.0
48
48
elif self .left_base <= value < self .left_peak :
49
- membership_value = (value - self .left_base ) / (self .left_peak - self .left_base )
49
+ membership_value = (value - self .left_base ) / (
50
+ self .left_peak - self .left_base
51
+ )
50
52
elif self .left_peak <= value <= self .right_peak :
51
53
membership_value = 1.0
52
54
elif self .right_peak < value <= self .right_base :
53
- membership_value = (self .right_base - value ) / (self .right_base - self .right_peak )
54
-
55
+ membership_value = (self .right_base - value ) / (
56
+ self .right_base - self .right_peak
57
+ )
58
+
55
59
# For complements, invert the membership value
56
60
return membership_value if not self .is_complement else 1 - membership_value
57
61
58
62
def complement (self ) -> TrapezoidalFuzzySet :
59
63
"""
60
64
Creates a new TrapezoidalFuzzySet instance representing the complement.
61
-
65
+
62
66
>>> TrapezoidalFuzzySet("Medium", 0, 1, 2, 3).complement().membership(1)
63
67
0.0
64
68
"""
65
- return TrapezoidalFuzzySet (f"¬{ self .name } " , self .left_base , self .left_peak , self .right_peak , self .right_base ,
66
- is_complement = not self .is_complement )
69
+ return TrapezoidalFuzzySet (
70
+ f"¬{ self .name } " ,
71
+ self .left_base ,
72
+ self .left_peak ,
73
+ self .right_peak ,
74
+ self .right_base ,
75
+ is_complement = not self .is_complement ,
76
+ )
67
77
68
78
def plot (self ) -> None :
69
79
"""
@@ -78,12 +88,16 @@ def plot(self) -> None:
78
88
plt .grid ()
79
89
plt .legend ()
80
90
91
+
81
92
if __name__ == "__main__" :
82
93
from doctest import testmod
94
+
83
95
testmod ()
84
96
85
97
# Create an instance of TrapezoidalFuzzySet
86
- fuzzy_set = TrapezoidalFuzzySet ("Medium Temperature" , left_base = 20 , left_peak = 25 , right_peak = 30 , right_base = 35 )
98
+ fuzzy_set = TrapezoidalFuzzySet (
99
+ "Medium Temperature" , left_base = 20 , left_peak = 25 , right_peak = 30 , right_base = 35
100
+ )
87
101
88
102
# Display some membership values
89
103
print (f"Membership at 25: { fuzzy_set .membership (25 )} " )
@@ -95,4 +109,3 @@ def plot(self) -> None:
95
109
fuzzy_set .complement ().plot ()
96
110
plt .title ("Trapezoidal Fuzzy Set and its Complement" )
97
111
plt .show ()
98
-
0 commit comments