Source code for pysensmcda.compromise.borda

# Copyright (C) 2024 Bartosz Paradowski, Jakub Więckowski

import numpy as np
from scipy.stats import rankdata
from ..validator import Validator
from ..utils import memory_guard

[docs] @memory_guard def borda(rankings: np.ndarray) -> np.ndarray: """ Calculates compromised ranking using borda voting rule. Parameters: ------------- rankings: ndarray Two-dimensional matrix containing different rankings in columns. Returns: ---------- ndarray Numpy array containing compromised ranking. Example: ------------ >>> rankings = np.array([[3, 2, 3], >>> [4, 4, 4], >>> [2, 3, 2], >>> [1, 1, 1]]) >>> compromised_ranking = borda(rankings) """ Validator.is_type_valid(rankings, np.ndarray, 'rankings') alt_num = rankings.shape[0] count = np.sum((alt_num + 1) - rankings, axis=1) return rankdata(-count)