Learn R Programming

MCDA (version 0.1.0)

UTADIS: UTADIS method to elicit value functions in view of sorting alternatives in ordered categories

Description

Elicits value functions from assignment examples, according to the UTADIS method.

Usage

UTADIS(
  performanceTable,
  criteriaMinMax,
  criteriaNumberOfBreakPoints,
  alternativesAssignments,
  categoriesRanks,
  epsilon,
  criteriaLBs = NULL,
  criteriaUBs = NULL,
  alternativesIDs = NULL,
  criteriaIDs = NULL,
  categoriesIDs = NULL
)

Value

The function returns a list structured as follows :

optimum

The value of the objective function.

valueFunctions

A list containing the value functions which have been determined. Each value function is defined by a matrix of breakpoints, where the first row corresponds to the abscissa (row labelled "x") and where the second row corresponds to the ordinate (row labelled "y").

overallValues

A vector of the overall values of the input alternatives.

categoriesLBs

A vector containing the lower bounds of the considered categories.

errors

A list containing the errors (sigmaPlus and sigmaMinus) which have to be substracted and added to the overall values of the alternatives in order to respect the input ranking.

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.

criteriaNumberOfBreakPoints

Vector containing the number of breakpoints of the piecewise linear value functions to be determined. Minimum 2. The elements are named according to the IDs of the criteria.

alternativesAssignments

Vector containing the assignments of the alternatives to categories. Minimum 2 categories. The elements of the vector are named according to the IDs of the alternatives.

categoriesRanks

Vector containing the ranks of the categories. Minimum 2 categories. The elements of the vector are named according to the IDs of the categories.

epsilon

Numeric value containing the minimal difference in value between the upper bound of a category and an alternative of that category.

criteriaLBs

Vector containing the lower bounds of the criteria to be considered for the elicitation of the value functions. If not specified, the lower bounds present in the performance table are taken.

criteriaUBs

Vector containing the upper bounds of the criteria to be considered for the elicitation of the value functions. If not specified, the upper bounds present in the performance table are taken.

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.

categoriesIDs

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

References

J.M. Devaud, G. Groussaud, and E. Jacquet-Lagrèze, UTADIS : Une méthode de construction de fonctions d'utilité additives rendant compte de jugements globaux, European Working Group on Multicriteria Decision Aid, Bochum, 1980.

Examples

Run this code

# the separation threshold

epsilon <-0.05

# the performance table

performanceTable <- rbind(
  c(3,10,1),
  c(4,20,2),
  c(2,20,0),
  c(6,40,0),
  c(30,30,3))

rownames(performanceTable) <- c("RER","METRO1","METRO2","BUS","TAXI")

colnames(performanceTable) <- c("Price","Time","Comfort")

# ranks of the alternatives

alternativesAssignments <- c("good","medium","medium","bad","bad")

names(alternativesAssignments) <- row.names(performanceTable)

# criteria to minimize or maximize

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

names(criteriaMinMax) <- colnames(performanceTable)

# number of break points for each criterion

criteriaNumberOfBreakPoints <- c(3,4,4)

names(criteriaNumberOfBreakPoints) <- colnames(performanceTable)

# ranks of the categories

categoriesRanks <- c(1,2,3)

names(categoriesRanks) <- c("good","medium","bad")

x<-UTADIS(performanceTable, criteriaMinMax, criteriaNumberOfBreakPoints, 
           alternativesAssignments, categoriesRanks,0.1)

# filtering out category "good" and assigment examples "RER" and "TAXI" 

y<-UTADIS(performanceTable, criteriaMinMax, criteriaNumberOfBreakPoints, 
           alternativesAssignments, categoriesRanks,0.1, 
           categoriesIDs=c("medium","bad"), 
           alternativesIDs=c("METRO1","METRO2","BUS"))

# working furthermore on only 2 criteria : "Comfort" and "Time"

z<-UTADIS(performanceTable, criteriaMinMax, criteriaNumberOfBreakPoints, 
            alternativesAssignments, categoriesRanks,0.1, 
            criteriaIDs=c("Comfort","Time"))

Run the code above in your browser using DataLab