 GeeksforGeeks App
Open App Browser
Continue

# Common Operations on Fuzzy Set with Example and Code

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 Sets``A ``=` `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)`

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 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 Sets``A ``=` `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 Intersection 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 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 Sets``A ``=` `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)`

Output

```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 Sets``A ``=` `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)`

My Personal Notes arrow_drop_up