skcriteria.madm.simus module

SIMUS (Sequential Interactive Model for Urban Systems) Method.

skcriteria.madm.simus.simus(matrix, objectives, b=None, rank_by=1, solver='pulp')[source]

Execute SIMUS without any validation.

class skcriteria.madm.simus.SIMUS(*, rank_by=1, solver='pulp')[source]

Bases: SKCDecisionMakerABC

SIMUS (Sequential Interactive Model for Urban Systems).

SIMUS developed by Nolberto Munier (2011) is a tool to aid decision-making problems with multiple objectives. The method solves successive scenarios formulated as linear programs. For each scenario, the decision-maker must choose the criterion to be considered objective while the remaining restrictions constitute the constrains system that the projects are subject to. In each case, if there is a feasible solution that is optimum, it is recorded in a matrix of efficient results. Then, from this matrix two rankings allow the decision maker to compare results obtained by different procedures. The first ranking is obtained through a linear weighting of each column by a factor - equivalent of establishing a weight - and that measures the participation of the corresponding project. In the second ranking, the method uses dominance and subordinate relationships between projects, concepts from the French school of MCDM.

Parameters
  • rank_by (1 or 2 (default=1)) – Witch of the two methods are used to calculate the ranking. The two methods are executed always.

  • solver (str, (default="pulp")) – Which solver to use to solve the underlying linear programs. The full list are available in pulp.listSolvers(True). “pulp” or None used the default solver selected by “PuLP”.

Warning

UserWarning:

If the method detect different weights by criteria.

Raises
  • ValueError: – If the length of b does not match the number of criteria.

  • See

  • ---

  • PuLP Documentation <https://coin-or.github.io/pulp/>`

property solver

Solver used by PuLP.

property rank_by

Which of the two ranking provided by SIMUS is used.

evaluate(dm, *, b=None)[source]

Validate the decision matrix and calculate a ranking.

Parameters
  • dm (skcriteria.data.DecisionMatrix) – Decision matrix on which the ranking will be calculated.

  • b (numpy.ndarray) –

    Right-side-value of the LP problem,

    SIMUS automatically assigns the vector of the right side (b) in the constraints of linear programs.

    If the criteria are to maximize, then the constraint is <=; and if the column minimizes the constraint is >=. The b/right side value limits of the constraint are chosen automatically based on the minimum or maximum value of the criteria/column if the constraint is <= or >= respectively.

    The user provides “b” in some criteria and lets SIMUS choose automatically others. For example, if you want to limit the two constraints of the dm with 4 criteria by the value 100, b must be [None, 100, 100, None] where None will be chosen automatically by SIMUS.

Returns

Ranking.

Return type

skcriteria.data.RankResult