skcriteria.madm.moora module

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

class skcriteria.madm.moora.FullMultiplicativeForm[source]

Bases: skcriteria.core.methods.SKCDecisionMakerABC

Non-linear, non-additive ranking method method.

Full Multiplicative Form 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})\]


The implementation works Instead the multiplication of the values we add the logarithms of the values to avoid underflow.


ValueError: – If some objective is for minimization or some value in the matrix is <= 0.


[Brauers & Zavadskas, 2012]

class skcriteria.madm.moora.MultiMOORA[source]

Bases: skcriteria.core.methods.SKCDecisionMakerABC

Combination of RatioMOORA, RefPointMOORA and FullMultiplicativeForm.

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.


ValueError: – If some objective is for minimization or some value in the matrix is <= 0.


[Brauers & Zavadskas, 2012]

class skcriteria.madm.moora.RatioMOORA[source]

Bases: skcriteria.core.methods.SKCDecisionMakerABC

Ratio based MOORA method.

In MOORA the set of ratios are suggested to be normalized as the square roots of the sum of squared responses as denominators, but you can use any scaler.

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.


[Brauers & Zavadskas, 2006]

class skcriteria.madm.moora.ReferencePointMOORA[source]

Bases: skcriteria.core.methods.SKCDecisionMakerABC

Rank the alternatives by distance to a reference point.

The reference point is 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 suggested 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 coordinates the dominating coordinates 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 coordinates, which are selected for the reference point, are realized in one of the candidate alternatives.


[Brauers & Zavadskas, 2012]

skcriteria.madm.moora.fmf(matrix, objectives, weights)[source]

Execute Full Multiplicative Form without any validation.

skcriteria.madm.moora.multimoora(matrix, objectives, weights)[source]

Execute weighted product model without any validation.

skcriteria.madm.moora.ratio(matrix, objectives, weights)[source]

Execute ratio MOORA without any validation.

skcriteria.madm.moora.refpoint(matrix, objectives, weights)[source]

Execute reference point MOORA without any validation.