Source code for pyfdm.methods.wpm.fuzzy

# Copyright (c) 2023 Jakub Więckowski

import numpy as np

[docs] def fuzzy(matrix, weights, normalization, defuzzify): """ Calculates the alternatives preferences based on Triangular Fuzzy Number extension Parameters ---------- matrix : ndarray Decision matrix / alternatives data. Alternatives are in rows and Criteria are in columns. weights : ndarray Vector of criteria weights in a crisp form normalization: callable Function used to normalize the decision matrix Returns ------- ndarray: Crisp preferences of alternatives """ # normalized decision matrix if normalization is not None: nmatrix = normalization(matrix) else: nmatrix = matrix.copy() if weights.ndim == 1: weights = np.repeat(weights, 3).reshape((len(weights), 3)) # weighted normalized decision matrix wmatrix = nmatrix ** weights prod_w = np.prod(wmatrix, axis=1) return np.array([defuzzify(s) for s in prod_w])