Title: PROMETHEE and GLNF for Ranking and Sorting Problems
Version: 0.1.0
Description: PROMETHEE (Preference Ranking Organisation METHod for Enrichment of Evaluations) based method assesses alternatives to obtain partial and complete rankings. The package also provides the GLNF (Global Local Net Flow) sorting algorithm to classify alternatives into ordered categories, as well as an index function to measure the classification quality. Barrera, F., Segura, M., & Maroto, C. (2023) <doi:10.1111/itor.13288>. Brans, J.P.; De Smet, Y., (2016) <doi:10.1007/978-1-4939-3094-4_6>.
License: GPL (≥ 3)
Encoding: UTF-8
RoxygenNote: 7.2.3
Imports: ggplot2
URL: https://github.com/ifelipebj/PrometheeTools
BugReports: https://github.com/ifelipebj/PrometheeTools/issues
NeedsCompilation: no
Packaged: 2023-08-31 21:56:18 UTC; ifeli
Author: Felipe Barrera ORCID iD [aut, cre, cph], Marina Segura ORCID iD [aut], Concepcion Maroto ORCID iD [aut]
Maintainer: Felipe Barrera <ifelipebj@hotmail.com>
Repository: CRAN
Date/Publication: 2023-09-01 11:30:11 UTC

Global and Local Searches for Net Flows to Sort

Description

This function applies the GLNF Sorting (Global Local Net Flow Sorting) algorithm to classify the alternatives into ordered groups according to the decision-maker's preferences in multiple criteria context. GLNF sorting is based on PROMETHEE net flows and a set of limiting profiles. This algorithm starts from a global classification (global search) that is enhanced by two local searches, intra-categorical and inter-categorical.

Usage

GLNF(matrix_evaluation, data_criteria)

Arguments

matrix_evaluation

The matrix includes the values for all alternatives. The alternatives and limiting profiles are row and columns correspond to the evaluation criteria.

data_criteria

Matrix with the parameter information (rows) for each criterion (columns). The rows of parameters are in the following order: Function Type, Indifference Threshold, Preference Threshold, Objective and Weight.

Details

Value

-Global Matrix with the results of the global search where positive, negative and net flow, and its preclassification are defined for each alternative.

-Local1 Matrices with the results of the first local search. PROMETHEE is applied to each group obtained in the global search. The alternatives are divided according to their positive or negative sign from the net flows obtained from PROMETHEE.

-Local2 Matrices with the results of the second local search, where the alternatives are divided according to their sign from net flows are obtained after applying PROMETHEE between each pair of neighbour categories.

-Class Final classification of the alternatives results.

References

Barrera, F., Segura, M., & Maroto, C. (2023) Online. Multicriteria sorting method based on global and local search for supplier segmentation. International Transactions in Operational Research. DOI:10.1111/itor.13288

See Also

PROMETHEEII

Examples

matrix_evaluation <- data.frame (

Alternative = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
                11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
                21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
                "r1", "r2", "r3", "r4", "r5"),
Monetary = c(21.52, 68.09, 184.94, 237.62, 14.29, 12.78, 91.53, 11.39, 264.79, 12.74,
            274.41, 3.75, 47.92, 34.5, 45.89, 39.92, 31.18, 273.23, 16.39, 3.91,
            20.09, 6.52, 26.62, 28.47, 7.57, 69.2, 420.95, 12.01, 85.88, 8.78,
            6816.80, 120, 40, 20, 0),
Recency = c(0, 0, 0, 0, 3, 5, 0, 6, 0, 3,
           1, 0, 1, 0, 0, 0, 0, 0, 2, 1,
           0, 0, 0, 0, 5, 1, 0, 0, 1, 4,
           0, 1, 7, 8, 12),
Frequency = c(7, 5, 12, 12, 1, 3, 9, 2, 12, 4,
             11, 3, 10, 10, 11, 11, 12, 12, 7, 1,
             5, 2, 9, 11, 4, 10, 12, 3, 10, 2,
             12, 10, 8, 4, 1),
Financial_score = c(66, 58, 83, 68, 68, 69, 77, 55, 77, 53,
                   78, 35, 84, 75, 71, 64, 56, 55, 52, 30,
                   66, 50, 65, 53, 54, 82, 68, 53, 62, 43,
                   100, 80, 75, 65, 0),
Length = c(4, 3, 3, 2, 2, 2, 2, 3, 2, 4,
          3, 3, 1, 1, 2, 5, 4, 2, 2, 5,
          4, 5, 1, 4, 2, 1, 5, 1, 1, 2,
          5, 4, 3, 2, 1))
data_criteria <- data.frame(
Parameter = c("Function Type", "Indifference Threshold",
             "Preference Threshold","Objetive", "Weight"),
Frequency = c("linear", 0, 3, "max", 0.2),
Monetary = c("linear", 30.00, 120, "max", 0.4),
Recency = c("usual", 0.00, 0.00, "min", 0.1),
Financial_score = c("linear", 0.00, 10, "max", 0.2),
Length = c("usual", 0.00, 0.00, "max", 0.1))
RS <- GLNF(matrix_evaluation, data_criteria)
RS$Class
RS$Global
RS$Local1
RS$Local2

The PROMETHEE Outranking Method

Description

PROMETHEE is a multicriteria method that quantifies preference relationships and obtains the positive, negative and net flows of the alternatives, generating rankings that reflect the decision-maker's preferences. This function applies PROMETHEE I (partial ranking) and PROMETHEE II (full ranking). This function can handle a large number of alternatives.

Usage

PROMETHEEII(matrix_evaluation, data_criteria)

Arguments

matrix_evaluation

The matrix includes the values for all alternatives. The alternatives profiles are rows and columns correspond to the evaluation criteria.

data_criteria

Matrix with the parameter information (rows) for each criterion (columns). The rows of parameters are in the following order: Function Type, Indifference Threshold, Preference Threshold, Objective and Weight.

Details

Value

-NF Matrix with positive and negative flows (PROMETHEE I) and net flows for complete ranking (PROMETHEE II).

-NFC Net flows matrix by criterion.

References

Brans, J.P.; De Smet, Y., (2016). PROMETHEE Methods. In: Multiple Criteria Decision Analysis. State of the Art Surveys, Figuera, J., Greco, S., Ehrgott, M.; Springer: New York, USA, pp. 187-219. DOI: 10.1007/978-1-4939-3094-4_6.

Examples

matrix_evaluation <- data.frame (

Alternative = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
                11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
                21, 22, 23, 24, 25, 26, 27, 28, 29, 30),
Monetary = c(21.52, 68.09, 184.94, 237.62, 14.29, 12.78, 91.53, 11.39, 264.79,12.74,
            274.41, 3.75, 47.92, 34.5, 45.89, 39.92, 31.18, 273.23, 16.39, 3.91,
            20.09, 6.52, 26.62, 28.47, 7.57, 69.2, 420.95, 12.01, 85.88, 8.78),
Recency = c(0, 0, 0, 0, 3, 5, 0, 6, 0, 3,
           1, 0, 1, 0, 0, 0, 0, 0, 2, 1,
           0, 0, 0, 0, 5, 1, 0, 0, 1, 4),
Frequency = c(7, 5, 12, 12, 1, 3, 9, 2, 12, 4,
             11, 3, 10, 10, 11, 11, 12, 12, 7, 1,
             5, 2, 9, 11, 4, 10, 12, 3, 10, 2),
Financial_score = c(66, 58, 83, 68, 68, 69, 77, 55, 77, 53,
                   78, 35, 84, 75, 71, 64, 56, 55, 52, 30,
                   66, 50, 65, 53, 54, 82, 68, 53, 62, 43),
Length = c(4, 3, 3, 2, 2, 2, 2, 3, 2, 4,
          3, 3, 1, 1, 2, 5, 4, 2, 2, 5,
          4, 5, 1, 4, 2, 1, 5, 1, 1, 2))
data_criteria <- data.frame(
Parameter = c("Function Type", "Indifference Threshold",
             "Preference Threshold","Objetive", "Weight"),
Frequency = c("linear", 0, 3, "max", 0.2),
Monetary = c("linear", 30.00, 120, "max", 0.4),
Recency = c("usual", 0.00, 0.00, "min", 0.1),
Financial_score = c("linear", 0.00, 10, "max", 0.2),
Length = c("usual", 0.00, 0.00, "max", 0.1))
RS <- PROMETHEEII(matrix_evaluation, data_criteria)
RS$NF
RS$NFC

Quality Index of Silhouette for Sorting

Description

This function computes the quality index for SILS (Silhouette for Sorting), which relies on PROMETHEE II net flows to assess the classifications generated by PROMETHEE-based ordered sorting methods.

Usage

SILS(matrix_evaluation, data_criteria, k, SILS_plot = FALSE)

Arguments

matrix_evaluation

The matrix includes the values for all alternatives and limiting profiles are rows and columns correspond to the evaluation criteria. The last column indicates the alternative classification.

data_criteria

Matrix with the parameter information (rows) for each criterion (columns). The rows of parameters are in the following order: Function Type, Indifference Threshold, Preference Threshold, Objective and Weight.

k

The number of categories to be evaluated.

SILS_plot

Boolean value indicating whether to generate a stacked bar chart representing the SILS values.

Details

Value

References

Barrera, F., Segura, M., & Maroto, C. (2023) Online. Multicriteria sorting method based on global and local search for supplier segmentation. International Transactions in Operational Research. DOI:10.1111/itor.13288

See Also

PROMETHEEII

Examples

k <- 4
matrix_evaluation <- data.frame (

Alternative = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
                 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
                 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
                "r1", "r2", "r3", "r4", "r5"),
Monetary = c(21.52, 68.09, 184.94, 237.62, 14.29, 12.78, 91.53, 11.39, 264.79, 12.74,
            274.41, 3.75, 47.92, 34.5, 45.89, 39.92, 31.18, 273.23, 16.39, 3.91,
            20.09, 6.52, 26.62, 28.47, 7.57, 69.2, 420.95, 12.01, 85.88, 8.78,
            6816.80, 120, 40, 20, 0),
Recency = c(0, 0, 0, 0, 3, 5, 0, 6, 0, 3,
           1, 0, 1, 0, 0, 0, 0, 0, 2, 1,
           0, 0, 0, 0, 5, 1, 0, 0, 1, 4,
           0, 1, 7, 8, 12),
Frequency = c(7, 5, 12, 12, 1, 3, 9, 2, 12, 4,
             11, 3, 10, 10, 11, 11, 12, 12, 7, 1,
             5, 2, 9, 11, 4, 10, 12, 3, 10, 2,
             12, 10, 8, 4, 1),
Financial_score = c(66, 58, 83, 68, 68, 69, 77, 55, 77, 53,
                   78, 35, 84, 75, 71, 64, 56, 55, 52, 30,
                   66, 50, 65, 53, 54, 82, 68, 53, 62, 43,
                   100, 80, 75, 65, 0),
Length = c(4, 3, 3, 2, 2, 2, 2, 3, 2, 4,
          3, 3, 1, 1, 2, 5, 4, 2, 2, 5,
          4, 5, 1, 4, 2, 1, 5, 1, 1, 2,
          5, 4, 3, 2, 1),
Category = c(3, 3, 1, 1, 4, 3, 2, 4, 1, 3,
              1, 4, 2, 2, 2, 2, 2, 1, 3, 4,
              3, 3, 3, 2, 4, 2, 1, 4, 3, 4,
              NA, NA, NA, NA, NA))
data_criteria <- data.frame(
 Parameter = c("Function Type", "Indifference Threshold",
               "Preference Threshold","Objetive", "Weight"),
 Frequency = c("linear", 0, 3, "max", 0.2),
 Monetary = c("linear", 30.00, 120, "max", 0.4),
 Recency = c("usual", 0.00, 0.00, "min", 0.1),
 Financial_score = c("linear", 0.00, 10, "max", 0.2),
 Length = c("usual", 0.00, 0.00, "max", 0.1))
RS <- SILS(matrix_evaluation, data_criteria, k, SILS_plot = TRUE)
print(RS)