Source code for pyfdm.methods.utils.defuzzifications

# Copyright (c) 2022-2023 Jakub Więckowski

__all__ = [
    'mean_defuzzification',
    'mean_area_defuzzification',
    'graded_mean_average_defuzzification',
    'weighted_mean_defuzzification',
    'bisector_defuzzification',
    'height_defuzzification',
    'lom_defuzzification',
    'som_defuzzification',
]


[docs] def mean_defuzzification(a): """ Defuzzify the Triangular Fuzzy Number into crisp value. Uses a formula 1/3 * (l + m + r) Parameters ---------- a : ndarray Triangular Fuzzy Number Returns ------- float Crisp value """ return 1/3 * (a[0] + a[1] + a[2])
[docs] def mean_area_defuzzification(a): """ Defuzzify the Triangular Fuzzy Number into crisp value. Uses a formula 1/4 * (l + 2m + r) Parameters ---------- a : ndarray Triangular Fuzzy Number Returns ------- float Crisp value """ return 1/4 * (a[0] + 2 * a[1] + a[2])
[docs] def graded_mean_average_defuzzification(a): """ Defuzzify the Triangular Fuzzy Number into crisp value. Uses a formula 1/6 * (l + 4m + r) Parameters ---------- a : ndarray Triangular Fuzzy Number Returns ------- float Crisp value """ return 1/6 * (a[0] + 4 * a[1] + a[2])
[docs] def weighted_mean_defuzzification(a, k=2): """ Defuzzify the Triangular Fuzzy Number into crisp value. Uses a formula (m + (r - m) - (m - l)) / (k + 2) Parameters ---------- a : ndarray Triangular Fuzzy Number k : int weight factor Returns ------- float Crisp value """ return a[1] + ((a[2] - a[1]) - (a[1] - a[0])) / (k + 2)
[docs] def bisector_defuzzification(a): """ Defuzzify the Triangular Fuzzy Number into crisp value. Uses a formula (l+m) / 2 Parameters ---------- a : ndarray Triangular Fuzzy Number Returns ------- float Crisp value """ return (a[0] + a[2]) / 2
[docs] def height_defuzzification(a): """ Defuzzify the Triangular Fuzzy Number into crisp value. Returns the middle element of Triangular Fuzzy Number as result Parameters ---------- a : ndarray Triangular Fuzzy Number Returns ------- float Crisp value """ return a[1]
[docs] def lom_defuzzification(a): """ Defuzzify the Triangular Fuzzy Number into crisp value. Largest of Maximum (LOM) defuzzification method. Returns the maximum value of Triangular Fuzzy Number Parameters ---------- a : ndarray Triangular Fuzzy Number Returns ------- float Crisp value """ return max(a)
[docs] def som_defuzzification(a): """ Defuzzify the Triangular Fuzzy Number into crisp value. Smallest of Maximum (SOM) defuzzification method. Returns the minimum value of Triangular Fuzzy Number Parameters ---------- a : ndarray Triangular Fuzzy Number Returns ------- float Crisp value """ return min(a)