skcriteria.core.dominance module
Dominance helper for the DecisionMatrix object.
- class skcriteria.core.dominance.DecisionMatrixDominanceAccessor(dm)[source]
Bases:
AccessorABCCalculate basic statistics of the decision matrix.
- bt()[source]
Compare on how many criteria one alternative is better than another.
bt = better-than.
- Returns:
Where the value of each cell identifies on how many criteria the row alternative is better than the column alternative.
- Return type:
pandas.DataFrame
- eq()[source]
Compare on how many criteria two alternatives are equal.
- Returns:
Where the value of each cell identifies how many criteria the row and column alternatives are equal.
- Return type:
pandas.DataFrame
- dominance(*, strict=False)[source]
Compare if one alternative dominates or strictly dominates another alternative.
In order to evaluate the dominance of an alternative a0 over an alternative a1, the algorithm evaluates that a0 is better in at least one criterion and that a1 is not better in any criterion than a0. In the case that
strict = Trueit also evaluates that there are no equal criteria.- Parameters:
strict (bool, default
False) – If True, strict dominance is evaluated.- Returns:
Where the value of each cell is True if the row alternative dominates the column alternative.
- Return type:
pandas.DataFrame
- compare(a0, a1)[source]
Compare two alternatives.
It creates a summary data frame containing the comparison of the two alternatives on a per-criteria basis, indicating which of the two is the best value, or if they are equal. In addition, it presents a “Performance” column with the count for each case.
- dominated(*, strict=False)[source]
Which alternative is dominated or strictly dominated by at least one other alternative.
- Parameters:
strict (bool, default
False) – If True, strict dominance is evaluated.- Returns:
Where the index indicates the name of the alternative, and if the value is is True, it indicates that this alternative is dominated by at least one other alternative.
- Return type:
pandas.Series
- has_loops(*, strict=False)[source]
Returns True if there is a loop in the dominance graph.
A loop is defined as if there are alternatives a0, a1 and ‘a2’ such that “a0 ≻ a1 ≻ a2 ≻ a0” if
strict=True, or “a0 ≽ a1 ≽ a2 ≽ a0” ifstrict=False- Parameters:
strict (bool, default
False) – If True, strict dominance is evaluated.- Returns:
If True a loop exists.
- Return type:
Notes
This method uses the networkx library to compute the dominance graph and check if it is a DAG.