| Title: | EC-PROMETHEE Multi-Criteria Decision Method |
|---|---|
| Description: | Implements the EC-PROMETHEE multi-criteria decision method described by Basilio, Pereira and Yigit (2023) <doi:10.3390/math11214432>. The method combines objective criteria weights from ENTROPY and CRITIC with optional subjective weights, generates random normalized weights inside criterion-specific ranges, and aggregates repeated PROMETHEE II rankings into a final score. |
| Authors: | Marcio Basilio [aut, cre], Valdecy Pereira [aut], Fatih Yigit [aut] |
| Maintainer: | Marcio Basilio <[email protected]> |
| License: | MIT + file LICENSE |
| Version: | 0.1.0 |
| Built: | 2026-06-29 14:56:54 UTC |
| Source: | https://github.com/cran/ecpromethee |
Implements ENTROPY, CRITIC, PROMETHEE II and EC-PROMETHEE aggregation.
Basilio, M. P.; Pereira, V.; Yigit, F. (2023). New Hybrid EC-Promethee Method with Multiple Iterations of Random Weight Ranges: Applied to the Choice of Policing Strategies. Mathematics, 11(21), 4432. doi:10.3390/math11214432
Computes objective criteria weights using Criteria Importance Through Intercriteria Correlation (CRITIC).
critic_weights(x, directions = "max")critic_weights(x, directions = "max")
x |
Numeric decision matrix. Rows are alternatives and columns are criteria. |
directions |
Character vector indicating whether each criterion should be maximized or minimized. Use |
A numeric vector of normalized criteria weights.
x <- matrix(c(1, 2, 3, 2, 3, 4, 4, 4, 5), nrow = 3) critic_weights(x)x <- matrix(c(1, 2, 3, 2, 3, 4, 4, 4, 5), nrow = 3) critic_weights(x)
EC-PROMETHEE combines ENTROPY and CRITIC objective weights with optional subjective weights. It creates criterion-specific weight ranges, generates random normalized weights inside those ranges, runs PROMETHEE II for each random weight set, and aggregates ordinal positions into a final ranking.
ec_promethee( x, subjective_weights = NULL, iterations = 1000, directions = "max", preference = "usual", q = 0, p = 0, s = 1, seed = NULL )ec_promethee( x, subjective_weights = NULL, iterations = 1000, directions = "max", preference = "usual", q = 0, p = 0, s = 1, seed = NULL )
x |
Numeric decision matrix. Rows are alternatives and columns are criteria. |
subjective_weights |
Optional numeric vector of decision-maker weights. |
iterations |
Number of PROMETHEE II rankings to generate. |
directions |
Character vector indicating whether each criterion should be maximized or minimized. Use |
preference |
Preference function type for each criterion. |
q |
Indifference threshold for each criterion. |
p |
Preference threshold for each criterion. |
s |
Gaussian threshold for each criterion. |
seed |
Optional random seed. |
A list with final ranking, component weights, weight ranges, random weights and the iteration rank matrix.
x <- matrix(c(7, 9, 6, 8, 7, 7, 6, 8, 9), nrow = 3, byrow = TRUE) ec_promethee(x, iterations = 20, seed = 123)$final_rankingx <- matrix(c(7, 9, 6, 8, 7, 7, 6, 8, 9), nrow = 3, byrow = TRUE) ec_promethee(x, iterations = 20, seed = 123)$final_ranking
Computes objective criteria weights using the ENTROPY method described in Basilio, Pereira and Yigit (2023).
entropy_weights(x)entropy_weights(x)
x |
Numeric decision matrix. Rows are alternatives and columns are criteria. |
A numeric vector of normalized criteria weights.
x <- matrix(c(1, 2, 3, 2, 3, 4, 4, 4, 5), nrow = 3) entropy_weights(x)x <- matrix(c(1, 2, 3, 2, 3, 4, 4, 4, 5), nrow = 3) entropy_weights(x)
A 14 by 20 decision matrix using the "Mode" scenario from Basilio, Pereira and Yigit (2023). Rows are policing strategy alternatives and columns are crime-demand criteria.
policing_modepolicing_mode
A numeric matrix with 14 alternatives and 20 criteria.
A numeric matrix with class matrix. Rows represent policing strategy
alternatives, columns represent crime-demand criteria, and the cell values are
the criterion scores used by EC-PROMETHEE.
Basilio, M. P.; Pereira, V.; Yigit, F. (2023). doi:10.3390/math11214432
dim(policing_mode) ec_promethee(policing_mode, iterations = 5, seed = 123)$final_rankingdim(policing_mode) ec_promethee(policing_mode, iterations = 5, seed = 123)$final_ranking
Applies one of the six standard PROMETHEE preference functions.
preference_function(d, type = "usual", q = 0, p = 0, s = 1)preference_function(d, type = "usual", q = 0, p = 0, s = 1)
d |
Numeric vector of deviations between two alternatives. |
type |
Preference function type. Supported values are |
q |
Indifference threshold. |
p |
Preference threshold. |
s |
Gaussian threshold. |
A numeric vector of preference degrees in [0, 1].
preference_function(c(-1, 0, 1), type = "usual") preference_function(c(0, 1, 2), type = "v_shape", p = 2)preference_function(c(-1, 0, 1), type = "usual") preference_function(c(0, 1, 2), type = "v_shape", p = 2)
Runs PROMETHEE II and returns the complete ranking of alternatives.
promethee_ii( x, weights, directions = "max", preference = "usual", q = 0, p = 0, s = 1 )promethee_ii( x, weights, directions = "max", preference = "usual", q = 0, p = 0, s = 1 )
x |
Numeric decision matrix. Rows are alternatives and columns are criteria. |
weights |
Numeric vector of criteria weights. |
directions |
Character vector indicating whether each criterion should be maximized or minimized. Use |
preference |
Preference function type for each criterion. |
q |
Indifference threshold for each criterion. |
p |
Preference threshold for each criterion. |
s |
Gaussian threshold for each criterion. |
A data frame with alternatives, positive flow, negative flow, net flow and rank.
x <- matrix(c(7, 9, 6, 8, 7, 7, 6, 8, 9), nrow = 3, byrow = TRUE) promethee_ii(x, weights = c(1 / 3, 1 / 3, 1 / 3))x <- matrix(c(7, 9, 6, 8, 7, 7, 6, 8, 9), nrow = 3, byrow = TRUE) promethee_ii(x, weights = c(1 / 3, 1 / 3, 1 / 3))
Generates random normalized weights from EC-PROMETHEE criterion ranges.
random_weights(lower, upper, iterations, seed = NULL)random_weights(lower, upper, iterations, seed = NULL)
lower |
Numeric vector with lower limits. |
upper |
Numeric vector with upper limits. |
iterations |
Number of random weight sets to generate. |
seed |
Optional random seed. |
A numeric matrix with iterations rows and one column per criterion.
random_weights(c(0.1, 0.2), c(0.4, 0.5), iterations = 3, seed = 1)random_weights(c(0.1, 0.2), c(0.4, 0.5), iterations = 3, seed = 1)
Creates criterion-specific lower and upper limits from ENTROPY, CRITIC and optional subjective decision-maker weights.
weight_ranges(entropy, critic, subjective_weights = NULL)weight_ranges(entropy, critic, subjective_weights = NULL)
entropy |
Numeric vector of ENTROPY weights. |
critic |
Numeric vector of CRITIC weights. |
subjective_weights |
Optional numeric vector of subjective weights. |
A data frame with columns criterion, lower and upper.
weight_ranges(c(0.4, 0.6), c(0.5, 0.5))weight_ranges(c(0.4, 0.6), c(0.5, 0.5))