Learn R Programming

MCDA (version 0.0.19)

SRMPInferenceFixedLexicographicOrder: Exact inference of an SRMP model given the lexicographic order of the profiles

Description

Exact inference approach from pairwise comparisons of alternatives for the SRMP ranking model. This method outputs an SRMP model that maximizes the number of fulfilled pairwise comparisons. The number of reference profiles and their lexicographic order is fixed.

Usage

SRMPInferenceFixedLexicographicOrder(performanceTable, criteriaMinMax, lexicographicOrder,
                                     preferencePairs, indifferencePairs = NULL,
                                     alternativesIDs = NULL, criteriaIDs = NULL,
                                     solver="glpk", timeLimit = NULL,
                                     cplexIntegralityTolerance = NULL,
                                     cplexThreads = NULL)

Arguments

performanceTable

Matrix or data frame containing the performance table. Each row corresponds to an alternative, and each column to a criterion. Rows (resp. columns) must be named according to the IDs of the alternatives (resp. criteria).

criteriaMinMax

Vector containing the preference direction on each of the criteria. "min" (resp. "max") indicates that the criterion has to be minimized (maximized). The elements are named according to the IDs of the criteria.

lexicographicOrder

A vector containing the indexes of the reference profiles in a given order. The number of reference profiles to be used is derrived implicitly from the size of this vector. The elements of this vector need to be a permutation of the indices from 1 to its size.

preferencePairs

A two column matrix containing on each row a pair of alternative names where the first alternative is considered to be strictly preferred to the second.

indifferencePairs

A two column matrix containing on each row a pair of alternative names the two alternatives are considered to indifferent with respect to each other.

alternativesIDs

Vector containing IDs of alternatives, according to which the datashould be filtered.

criteriaIDs

Vector containing IDs of criteria, according to which the data should be filtered.

solver

String specifying if the glpk solver (glpk) should be used, or the cplex (cplex) solver. By default glpk. The cplex solver requires to install the cplex binary and the cplex C API, as well as the cplexAPI R package.

timeLimit

Allows to fix a time limit of the execution, in seconds. By default NULL (which corresponds to no time limit).

cplexIntegralityTolerance

If the cplex solver is used, allows to fix a tolerance for integrality. By default NULL (which corresponds to the default value of cplex).

cplexThreads

If the cplex solver is used, allows to set the number of threads for the calculation. By default NULL (which corresponds to the default value of cplex - 1).

Value

The function returns a list containing:

criteriaWeights

The inferred criteria weights.

referenceProfiles

The inferred reference profiles.

fitness

The percentage (0 to 1) of fulfilled pair-wise relations.

solverStatus

The solver status as given by glpk or cplex.

humanReadableStatus

A description of the solver status.

References

A-L. OLTEANU, V. MOUSSEAU, W. OUERDANE, A. ROLLAND, Y. ZHENG, Preference Elicitation for a Ranking Method based on Multiple Reference Profiles, forthcoming 2018.

Examples

Run this code
# NOT RUN {
# the performance table

performanceTable <- rbind(c(10,10,9),c(10,9,10),c(9,10,10),c(9,9,10),c(9,10,9),c(10,9,9),
                          c(10,10,7),c(10,7,10),c(7,10,10),c(9,9,17),c(9,17,9),c(17,9,9),
                          c(7,10,17),c(10,17,7),c(17,7,10),c(7,17,10),c(17,10,7),c(10,7,17),
                          c(7,9,17),c(9,17,7),c(17,7,9),c(7,17,9),c(17,9,7),c(9,7,17))

lexicographicOrder <- c(2,1,3)

criteriaMinMax <- c("max","max","max")

rownames(performanceTable) <- c("a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","a11","a12",
                                "a13","a14","a15","a16","a17","a18","a19","a20","a21","a22",
                                "a23","a24")

colnames(performanceTable) <- c("c1","c2","c3")

names(criteriaMinMax) <- colnames(performanceTable)

preferencePairs <- matrix(c("a16","a13","a3","a14","a17","a1","a18","a15","a2","a11","a5",
                            "a10","a4","a12","a13","a3","a14","a17","a1","a18","a15","a2",
                            "a11","a5","a10","a4","a12","a6"),14,2)
indifferencePairs <- matrix(c("a3","a1","a2","a11","a11","a20","a10","a10","a19","a12","a12",
                              "a21","a9","a7","a8","a20","a22","a22","a19","a24","a24","a21",
                              "a23","a23"),12,2)

result<-SRMPInferenceFixedLexicographicOrder(performanceTable, criteriaMinMax,
                                             lexicographicOrder, preferencePairs,
                                             indifferencePairs, alternativesIDs = 
                                             c("a1","a3","a7","a9","a13","a14","a16","a17"))
# }

Run the code above in your browser using DataLab