Common Operations on Fuzzy Set with Example and Code - GeeksforGeeks

08 Mar, 2022
What is Fuzzy Set ?
Fuzzy refers to something that is unclear or vague . Hence, Fuzzy Set is a Set where every key is associated with value, which is between 0 to 1 based on the certainty .This value is often called as degree of membership. Fuzzy Set is denoted with a Tilde Sign on top of the normal Set notation.
Operations on Fuzzy Set with Code :
1. Union :
Consider 2 Fuzzy Sets denoted by A and  B, then let’s consider Y be the Union of them, then for every member of  A and  B, Y will be:
 degree_of_membership(Y)= max(degree_of_membership(A), degree_of_membership(B)) 
EXAMPLE : 
Python3
# Example to Demonstrate the# Union of Two Fuzzy SetsA = dict()B = dict()Y = dict() A = {"a": 0.2, "b": 0.3, "c": 0.6, "d": 0.6}B = {"a": 0.9, "b": 0.9, "c": 0.4, "d": 0.5} print('The First Fuzzy Set is :', A)print('The Second Fuzzy Set is :', B)  for A_key, B_key in zip(A, B):    A_value = A[A_key]    B_value = B[B_key]     if A_value > B_value:        Y[A_key] = A_value    else:        Y[B_key] = B_value         print('Fuzzy Set Union is :', Y)
The First Fuzzy Set is : {'a': 0.2, 'b': 0.3, 'c': 0.6, 'd': 0.6}
The Second Fuzzy Set is : {'a': 0.9, 'b': 0.9, 'c': 0.4, 'd': 0.5}
Fuzzy Set Union is : {'a': 0.9, 'b': 0.9, 'c': 0.6, 'd': 0.6}
2. Intersection :
Consider 2 Fuzzy Sets denoted by A and  B, then let’s consider Y be the Intersection of them, then for every member of  A and  B, Y will be:
degree_of_membership(Y)= min(degree_of_membership(A), degree_of_membership(B)) 
EXAMPLE : 
Python3
# Example to Demonstrate# Intersection of Two Fuzzy SetsA = dict()B = dict()Y = dict() A = {"a": 0.2, "b": 0.3, "c": 0.6, "d": 0.6}B = {"a": 0.9, "b": 0.9, "c": 0.4, "d": 0.5} print('The First Fuzzy Set is :', A)print('The Second Fuzzy Set is :', B)  for A_key, B_key in zip(A, B):    A_value = A[A_key]    B_value = B[B_key]     if A_value < B_value:        Y[A_key] = A_value    else:        Y[B_key] = B_valueprint('Fuzzy Set Intersection is :', Y)
The First Fuzzy Set is : {'a': 0.2, 'b': 0.3, 'c': 0.6, 'd': 0.6}
The Second Fuzzy Set is : {'a': 0.9, 'b': 0.9, 'c': 0.4, 'd': 0.5}
Fuzzy Set Intersection is : {'a': 0.2, 'b': 0.3, 'c': 0.4, 'd': 0.5}
3. Complement :
Consider a Fuzzy Sets denoted by A  , then let’s consider Y be the Complement of it, then for every member of  A  , Y will be:
degree_of_membership(Y)= 1 - degree_of_membership(A)
EXAMPLE :
Python3
# Example to Demonstrate the# Difference Between Two Fuzzy SetsA = dict()Y = dict() A = {"a": 0.2, "b": 0.3, "c": 0.6, "d": 0.6} print('The Fuzzy Set is :', A)  for A_key in A:   Y[A_key]= 1-A[A_key]         print('Fuzzy Set Complement is :', Y)
The Fuzzy Set is : {'a': 0.2, 'b': 0.3, 'c': 0.6, 'd': 0.6}
Fuzzy Set Complement is : {'a': 0.8, 'b': 0.7, 'c': 0.4, 'd': 0.4}
4. Difference :  Consider 2 Fuzzy Sets denoted by A and  B, then let’s consider Y be the Intersection of them, then for every member of  A and  B, Y will be:
degree_of_membership(Y)= min(degree_of_membership(A), 1- degree_of_membership(B)) 
EXAMPLE :
Python3
# Example to Demonstrate the# Difference Between Two Fuzzy SetsA = dict()B = dict()Y = dict() A = {"a": 0.2, "b": 0.3, "c": 0.6, "d": 0.6}B = {"a": 0.9, "b": 0.9, "c": 0.4, "d": 0.5} print('The First Fuzzy Set is :', A)print('The Second Fuzzy Set is :', B)  for A_key, B_key in zip(A, B):    A_value = A[A_key]    B_value = B[B_key]    B_value = 1 - B_value     if A_value < B_value:        Y[A_key] = A_value    else:        Y[B_key] = B_value         print('Fuzzy Set Difference is :', Y)
Output 
The First Fuzzy Set is : {"a": 0.2, "b": 0.3, "c": 0.6, "d": 0.6}
The Second Fuzzy Set is : {"a": 0.9, "b": 0.9, "c": 0.4, "d": 0.5}
Fuzzy Set Difference is : {"a": 0.1, "b": 0.1, "c": 0.6, "d": 0.5}
Class Fuzzy Sets
Python3
class FzSets:   def __init__(self):    self.A = dict()    self.B = dict()             self.complement_A = dict()    self.complement_B = dict()    self.union_AB = dict()    self.intersection_AB = dict()    self.differenceAB = dict()    self.differenceBA = dict()     self.change_union = False    self.change_intersection = False    self.change_complement = False   def __init__(self,A,nA,B,nB):    self.A = A    self.B = B    self.Aname = nA    self.Bname = nB       self.complement_A = dict()    self.complement_B = dict()    self.union_AB = dict()    self.intersection_AB = dict()    self.differenceAB = dict()    self.differenceBA = dict()     self.change_union = False    self.change_intersection = False    self.change_complement = False    def unionOp(self):    if self.change_union:      print('Result of UNION operation :',self.union_AB)    else:             #unionSet = set(self.A.keys()).union(self.B.keys())      sa = set(self.A.keys())      sb = set(self.B.keys())      intersectionSet = set(self.A.keys()).intersection(self.B.keys())       for i in intersectionSet:        self.union_AB[i] = max(self.A[i],self.B[i])      for i in sa-intersectionSet:        self.union_AB[i] = self.A[i]      for i in sb-intersectionSet:        self.union_AB[i] = self.B[i]             print('Result of UNION operation :',self.union_AB)            def intersectionOp(self):    if self.change_intersection:      print('Result of INTERSECTION operation :\n\t\t',self.intersection_AB)    else:             #unionSet = set(self.A.keys()).union(self.B.keys())      sa = set(self.A.keys())      sb = set(self.B.keys())      intersectionSet = set(self.A.keys()).intersection(self.B.keys())       for i in intersectionSet:        self.intersection_AB[i] = min(self.A[i],self.B[i])      for i in sa-intersectionSet:        self.intersection_AB[i] = 0.0      for i in sb-intersectionSet:        self.intersection_AB[i] = 0.0             print('Result of INTERSECTION operation :\n\t\t',self.intersection_AB)      self.change_intersection = True   def complementOp(self):    if self.change_complement:      print('Result of COMPLEMENT on ',self.Aname,' operation :',self.complement_A)      print('Result of COMPLEMENT on ',self.Bname,' operation :',self.complement_B)    else:             for i in self.A:        self.complement_A[i] = 1 - A[i]      for i in self.B:        self.complement_B[i] = 1 - B[i]       print('Result of COMPLEMENT on ',self.Aname,' operation :',self.complement_A)      print('Result of COMPLEMENT on ',self.Aname,' operation :',self.complement_B)       self.change_complement = True     def __oneMinustwo(self,L,R):    minus_d = dict()    Rcomp = dict()    for i in R:      Rcomp[i] = 1 - R[i]    sa = set(L.keys())    sb = set(R.keys())    intersectionSet = sa.intersection(sb)   # min( A , complement(B) )     # l - r OR a - b    for i in intersectionSet:      minus_d[i] = min(L[i],Rcomp[i])    for i in sa-intersectionSet:      minus_d[i] = 0.0    for i in sb-intersectionSet:      minus_d[i] = 0.0     return minus_d         def AminusB(self):    self.differenceAB = self.__oneMinustwo(self.A,self.B)    print('Result of DIFFERENCE ',self.Aname,' | ',self.Bname,' operation :\n\t\t',self.differenceAB)   def BminusA(self):    self.differenceBA = self.__oneMinustwo(self.B,self.A)    print('Result of DIFFERENCE ',self.Bname,' | ',self.Aname,' operation :\n\t\t',self.differenceBA)   def change_Setz(self,A,B):    self.A = A    self.B = B     print('\nSet ',self.Aname,' :',self.A)    print('Set ',self.Bname,' :',self.B,end='')     self.change_union = True    self.change_intersection = True    self.change_complement = True    print('\t\t\t Cache Reset')   def displaySets(self):    print('\nSet ',self.Aname,' :',self.A)    print('Set ',self.Bname,' :'  ,self.B)
lonelionlancer
simranarora5sos
fuzzy-logic
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
How to Install PIP on Windows ?
Enumerate() in Python
Different ways to create Pandas Dataframe
Python OOPs Concepts
Create a Pandas DataFrame from Lists
*args and **kwargs in Python
How to drop one or multiple columns in Pandas Dataframe
Python String | replace()
Python | Get unique values from a list
sum() function in Python