skcriteria.madm.moora module

Implementation of a family of Multi-objective optimization on the basis of ratio analysis (MOORA) methods.

class skcriteria.madm.moora.RatioMOORA(wnorm='sum')[source]

Bases: skcriteria.madm._dmaker.DecisionMaker

The method refers to a matrix of responses of alternatives to objectives, to which ratios are applied.

In MOORA the set of ratios (by default) has the square roots of the sum of squared responses as denominators.

\[\overline{X}_{ij} = \frac{X_{ij}}{\sqrt{\sum\limits_{j=1}^m X_{ij}^{2}}}\]

These ratios, as dimensionless, seem to be the best choice among different ratios. These dimensionless ratios, situated between zero and one, are added in the case of maximization or subtracted in case of minimization:

\[Ny_i = \sum_{i=1}^{g} Nx_{ij} - \sum_{i=1}^{g+1} Nx_{ij}\]

with: \(i = 1, 2, ..., g\) for the objectives to be maximized, \(i = g + 1, g + 2, ...,n\) for the objectives to be minimized.

Finally, all alternatives are ranked, according to the obtained ratios.

Parameters:
wnorm : string, callable, optional (default=”sum”)

Normalization method for the weights array.

Returns:
Decision : skcriteria.madm.Decision

With values:

  • kernel_: None

  • rank_: A ranking (start at 1) where the i-nth element represent the position of the i-nth alternative.

  • best_alternative_: The index of the best alternative.

  • alpha_solution_: True

  • beta_solution_: False

  • gamma_solution_: True

  • e_: Particular data created by this method.

    • e_.points: Array where the i-nth element represent the importance of the i-nth alternative.

References

[1]BRAUERS, W. K.; ZAVADSKAS, Edmundas Kazimieras. The MOORA method and its application to privatization in a transition economy. Control and Cybernetics, 2006, vol. 35, p. 445-469.`
Attributes:
mnorm

Normalization function for the alternative matrix.

wnorm

Normalization function for the weights vector.

Methods

as_dict() Create a simply dict representation of the object.
decide(data[, criteria, weights]) Execute the Solver over the given data.
doc_inherit
make_result(data, kernel, rank, extra) Create a new skcriteria.madm.Decision
preprocess(data) Normalize the alternative matrix and weight vector.
solve(ndata) Execute the multi-criteria method.
as_dict()[source]

Create a simply dict representation of the object.

Notes

x.as_dict != dict(x)

doc_inherit = functools.partial(<function _doc_inherit>, (<class 'skcriteria.madm._dmaker.DecisionMaker'>, <class 'skcriteria.base.BaseSolver'>, <class 'object'>))
solve(ndata)[source]

Execute the multi-criteria method.

Parameters:
data : skcriteria.Data

Preprocessed Data.

Returns:
object

object or tuple of objects with the raw result data.

class skcriteria.madm.moora.RefPointMOORA(wnorm='sum')[source]

Bases: skcriteria.madm._dmaker.DecisionMaker

Rank the alternatives from a reference point selected with the Min-Max Metric of Tchebycheff.

\[\min_{j} \{ \max_{i} |r_i - x^*_{ij}| \}\]

This reference point theory starts from the already normalized ratios as defined in the MOORA method, namely formula:

\[\overline{X}_{ij} = \frac{X_{ij}}{\sqrt{\sum\limits_{j=1}^m X_{ij}^{2}}}\]

Preference is given to a reference point possessing as co-ordinates the dominating co-ordinates per attribute of the candidate alternatives and which is designated as the Maximal Objective Reference Point. This approach is called realistic and non-subjective as the co-ordinates, which are selected for the reference point, are realized in one of the candidate alternatives.

Parameters:
wnorm : string, callable, optional (default=”sum”)

Normalization method for the weights array.

Returns:
Decision : skcriteria.madm.Decision

With values:

  • kernel_: None

  • rank_: A ranking (start at 1) where the i-nth element represent the position of the i-nth alternative.

  • best_alternative_: The index of the best alternative.

  • alpha_solution_: True

  • beta_solution_: False

  • gamma_solution_: True

  • e_: Particular data created by this method.

    • e_.points: array where the i-nth element represent the closenees of the i-nth alternative to a reference point based on the Min-Max Metric of Tchebycheff.

References

[1]Brauers, W. K. M., & Zavadskas, E. K. (2012). Robustness of MULTIMOORA: a method for multi-objective optimization. Informatica, 23(1), 1-25.
[2]Karlin, S., & Studden, W. J. (1966). Tchebycheff systems: With applications in analysis and statistics. New York: Interscience.
Attributes:
mnorm

Normalization function for the alternative matrix.

wnorm

Normalization function for the weights vector.

Methods

as_dict() Create a simply dict representation of the object.
decide(data[, criteria, weights]) Execute the Solver over the given data.
doc_inherit
make_result(data, kernel, rank, extra) Create a new skcriteria.madm.Decision
preprocess(data) Normalize the alternative matrix and weight vector.
solve(ndata) Execute the multi-criteria method.
as_dict()[source]

Create a simply dict representation of the object.

Notes

x.as_dict != dict(x)

doc_inherit = functools.partial(<function _doc_inherit>, (<class 'skcriteria.madm._dmaker.DecisionMaker'>, <class 'skcriteria.base.BaseSolver'>, <class 'object'>))
solve(ndata)[source]

Execute the multi-criteria method.

Parameters:
data : skcriteria.Data

Preprocessed Data.

Returns:
object

object or tuple of objects with the raw result data.

class skcriteria.madm.moora.FMFMOORA(wnorm='sum')[source]

Bases: skcriteria.madm._dmaker.DecisionMaker

Full Multiplicative Form, a method that is non-linear, non-additive, does not use weights and does not require normalization.

To combine a minimization and maximization of different criteria in the same problem all the method uses the formula:

\[U'_j = \frac{\prod_{g=1}^{i} x_{gi}} {\prod_{k=i+1}^{n} x_{kj}}\]

Where \(j\) = the number of alternatives; \(i\) = the number of objectives to be maximized; \(n − i\) = the number of objectives to be minimize; and \(U'_j\): the utility of alternative j with objectives to be maximized and objectives to be minimized.

To avoid underflow, instead the multiplication of the values we add the logarithms of the values; so \(U'_j\):, is finally defined as:

\[U'_j = \sum_{g=1}^{i} \log(x_{gi}) - \sum_{k=i+1}^{n} \log(x_{kj})\]
Parameters:
wnorm : string, callable, optional (default=”sum”)

Normalization method for the weights array.

Returns:
Decision : skcriteria.madm.Decision

With values:

  • kernel_: None
  • rank_: A ranking (start at 1) where the i-nth element represent the position of the i-nth alternative.
  • best_alternative_: The index of the best alternative.
  • alpha_solution_: True
  • beta_solution_: False
  • gamma_solution_: True
  • e_: Particular data created by this method.
    • e_.points: Array where the i-nth element represent the importance of the i-nth alternative.

Notes

The implementation works as follow:

  • Before determine \(U_j\) the values are normalized by the ratio sugested by MOORA.

    \[\overline{X}_{ij} = \frac{X_{ij}}{\sqrt{\sum\limits_{j=1}^m X_{ij}^{2}}}\]
  • If we have some values of any criteria < 0 in the alternative-matrix we add the minimimun value of this criteria to all the criteria.

  • If we have some 0 in some criteria all the criteria is incremented by 1.

  • If some criteria is for minimization, this implementation calculates the inverse.

  • Instead the multiplication of the values we add the logarithms of the values to avoid underflow.

References

[1]Brauers, W. K. M., & Zavadskas, E. K. (2012). Robustness of MULTIMOORA: a method for multi-objective optimization. Informatica, 23(1), 1-25.
Attributes:
mnorm

Normalization function for the alternative matrix.

wnorm

Normalization function for the weights vector.

Methods

as_dict() Create a simply dict representation of the object.
decide(data[, criteria, weights]) Execute the Solver over the given data.
doc_inherit
make_result(data, kernel, rank, extra) Create a new skcriteria.madm.Decision
preprocess(data) Normalize the alternative matrix and weight vector.
solve(ndata) Execute the multi-criteria method.
as_dict()[source]

Create a simply dict representation of the object.

Notes

x.as_dict != dict(x)

doc_inherit = functools.partial(<function _doc_inherit>, (<class 'skcriteria.madm._dmaker.DecisionMaker'>, <class 'skcriteria.base.BaseSolver'>, <class 'object'>))
preprocess(data)[source]

Normalize the alternative matrix and weight vector.

Creates a new instance of data by aplying the normalization function to the alternative matrix and the weights vector containded inside the given data.

Parameters:
data : skcriteria.Data

A data to be Preprocessed

Returns:
skcriteria.Data

A new instance of data with the mtx attributes normalized with mnorm and weights normalized with wnorm. anames and cnames are preseved

solve(ndata)[source]

Execute the multi-criteria method.

Parameters:
data : skcriteria.Data

Preprocessed Data.

Returns:
object

object or tuple of objects with the raw result data.

class skcriteria.madm.moora.MultiMOORA[source]

Bases: skcriteria.madm._dmaker.DecisionMaker

MULTIMOORA is compose the ranking resulting of aplyting the methods, RatioMOORA, RefPointMOORA and FMFMOORA.

These three methods represent all possible methods with dimensionless measures in multi-objective optimization and one can not argue that one method is better than or is of more importance than the others; so for determining the final ranking the implementation maximizes how many times an alternative i dominates and alternative j.

Returns:
Decision : skcriteria.madm.Decision

With values:

  • kernel_: None
  • rank_: A ranking (start at 1) where the i-nth element represent the position of the i-nth alternative.
  • best_alternative_: The index of the best alternative.
  • alpha_solution_: True
  • beta_solution_: False
  • gamma_solution_: True
  • e_: Particular data created by this method.
    • e_.rank_mtx: 2x3 Array where the first column is the RatioMOORA ranking, the second one the RefPointMOORA ranking and the last the FMFMOORA ranking.

Notes

The implementation works as follow:

  • Before determine \(U_j\) the values are normalized by the ratio sugested by MOORA.

    \[\overline{X}_{ij} = \frac{X_{ij}}{\sqrt{\sum\limits_{j=1}^m X_{ij}^{2}}}\]
  • If we have some values of any criteria < 0 in the alternative-matrix we add the minimimun value of this criteria to all the criteria.

  • If we have some 0 in some criteria all the criteria is incremented by 1.

  • If some criteria is for minimization, this implementation calculates the inverse.

  • Instead the multiplication of the values we add the logarithms of the values to avoid underflow.

  • For determining the final ranking the implementation maximizes how many times an alternative i dominates and alternative j.

References

[1]Brauers, W. K. M., & Zavadskas, E. K. (2012). Robustness of MULTIMOORA: a method for multi-objective optimization. Informatica, 23(1), 1-25.
Attributes:
mnorm

Normalization function for the alternative matrix.

wnorm

Normalization function for the weights vector.

Methods

as_dict() Create a simply dict representation of the object.
decide(data[, criteria, weights]) Execute the Solver over the given data.
doc_inherit
make_result(data, kernel, rank, extra) Create a new skcriteria.madm.Decision
preprocess(data) Normalize the alternative matrix and weight vector.
solve(ndata) Execute the multi-criteria method.
as_dict()[source]

Create a simply dict representation of the object.

Notes

x.as_dict != dict(x)

doc_inherit = functools.partial(<function _doc_inherit>, (<class 'skcriteria.madm._dmaker.DecisionMaker'>, <class 'skcriteria.base.BaseSolver'>, <class 'object'>))
preprocess(data)[source]

Normalize the alternative matrix and weight vector.

Creates a new instance of data by aplying the normalization function to the alternative matrix and the weights vector containded inside the given data.

Parameters:
data : skcriteria.Data

A data to be Preprocessed

Returns:
skcriteria.Data

A new instance of data with the mtx attributes normalized with mnorm and weights normalized with wnorm. anames and cnames are preseved

solve(ndata)[source]

Execute the multi-criteria method.

Parameters:
data : skcriteria.Data

Preprocessed Data.

Returns:
object

object or tuple of objects with the raw result data.