iosoi
is an R package that implements and
extends the multi-criteria decision making (MCDM) approach proposed in:
- Torres, M., Pelta, D. A., Lamata, M. T., & Yager, R. R. (2021). An approach to identify solutions of interest from multi and many-objective optimization problems. Neural Computing & Applications, 33(7), 2471–2481. doi:10.1007/s00521-020-05140-x
In addition to the interval-based approach proposed by Torres et al
(2021), it also includes volume-based methods for assessing the
solutions. Formally, iosoi
automatizes the solution of the following
MCDM problem:
Given a set of
You can install the development version of iosoi from GitHub with:
# install.packages("devtools")
devtools::install_github("pnovoa/iosoi")
Consider a decision problem in which the objective is to identify a set
of solutions of interest based on their overall performance over a given
set of criteria. As input data we have a set of
The following example is based on a problem of
The preference order provided by the decision-maker is (as we mentioned
before) in decreasing order regarding the order followed by the criteria
in matrix
Using the iosoi
package, one can perform the steps of the Torres et
al. (2021) approach to obtain global assessments for the solutions and
be able to select those of greatest interest to the decision maker, that
is, what we refer as solution of interest (SOIs) . In what follows
we will perform this task using the interval-based approach by Torres et
al. (2021). Specifically, we rely on the neutral attitude for
computing the superiority degree of each solutions against the reference
one. For both approaches we set a threshold of
library(iosoi)
# Evaluation matrix
E <- matrix(data = c(5, 2, 3, 4, 4, 3, 1, 1, 5, 4, 2, 3, 4, 3, 2),
byrow = TRUE,
nrow = 5)
print(E)
#> [,1] [,2] [,3]
#> [1,] 5 2 3
#> [2,] 4 4 3
#> [3,] 1 1 5
#> [4,] 4 2 3
#> [5,] 4 3 2
# Identifying SOIs from the possibility approach of Torres et al (2021).
E %>% poss_identify_sois(by = "neutral", threshold = 0.0)
#> C1 C2 C3 VE_C1 VE_C2 VE_C3 LB UB REF neutral
#> S1 5 2 3 5 3.5 3.333333 3.333333 5 0 0.6666667
#> S2 4 4 3 4 4.0 3.666667 3.666667 4 1 0.5000000
#> S4 4 2 3 4 3.0 3.000000 3.000000 4 0 0.2500000
#> S5 4 3 2 4 3.5 3.000000 3.000000 4 0 0.2500000
# Identifying SOIs from the geometric approach based on the volume
E %>% geom_identify_sois(by = "poss_volume", threshold = 0.0)
#> C1 C2 C3 VE_C1 VE_C2 VE_C3 LB UB REF poss_volume
#> S1 5 2 3 5 3.5 3.333333 3.333333 5.000000 0 0.5035461
#> S2 4 4 3 4 4.0 3.666667 3.666667 4.000000 1 0.5000000
#> S3 1 1 5 1 1.0 2.333333 1.000000 2.333333 0 0.2708333
#> S4 4 2 3 4 3.0 3.000000 3.000000 4.000000 0 0.4615385
#> S5 4 3 2 4 3.5 3.000000 3.000000 4.000000 0 0.4736842
As noted, the output contains not only the original evaluation matrix,
but also other columns related to intermediate steps of the method of
Torres et al (2021). For instance, those columns with prefix VE_
corresponds to the linear scoring of each solution at the extreme points
of the feasible region induced by the preference order of the criteria.
Columns LB
and UB
contain the lower and upper bounds of the values
obtained in the VE_
columns. The Boolean column REF
identifies
(with 1) the reference solution, that is, the one used to assess the
rest of solutions. Finally, the last column neutral
contains the
overall assessment for each solution. Note that only those with values
greater than
To understand why solution S3 is left out in the approach of Torres et
al. (2021) iosoi
allows to plot the intervals (ranges of possible
scores) of each solution. That is, in order to visually check the degree
of overlapping of the solutions in relation to the reference one. The
code then performs the analysis again but relaxes the threshold to
E %>%
poss_identify_sois(
by = "neutral",
threshold = -1.0) %>%
plot_intervals()
As expected, S3
is excluded because its interval is clearly far to the
left relative to S2
(the reference solution highlighted with interval
in red). The rest, and especially S1
have certain levels of overlap
with S2
.
The interval-based approach from Torres et al (2021) provides an
intuitive way of assessing the solutions. However, it underestimates how
the scoring function distributes over the region of feasible weights.
Geometrically, it just considers the line joining the two extreme points
of the polyhedron (ie. LB
and UB
) and hence, it does not take into
account how frequent an interval score value is in the region of
feasible weights. So the comparison against to the reference solution,
is made on the basis that all scores within the interval are equally
possible, which is a very
library(iosoi)
# Evaluation matrix
E <- matrix(data = c(5, 2, 3, 4, 4, 3, 1, 1, 5, 4, 2, 3, 4, 3, 2),
byrow = TRUE,
nrow = 5)
print(E)
#> [,1] [,2] [,3]
#> [1,] 5 2 3
#> [2,] 4 4 3
#> [3,] 1 1 5
#> [4,] 4 2 3
#> [5,] 4 3 2
# Identifying SOIs from the possibility approach of Torres et al (2021).
E %>% poss_identify_sois(by = "neutral", threshold = 0.0)
#> C1 C2 C3 VE_C1 VE_C2 VE_C3 LB UB REF neutral
#> S1 5 2 3 5 3.5 3.333333 3.333333 5 0 0.6666667
#> S2 4 4 3 4 4.0 3.666667 3.666667 4 1 0.5000000
#> S4 4 2 3 4 3.0 3.000000 3.000000 4 0 0.2500000
#> S5 4 3 2 4 3.5 3.000000 3.000000 4 0 0.2500000
# Identifying SOIs from the geometric approach based on the volume
E %>% geom_identify_sois(by = "poss_volume", threshold = 0.0)
#> C1 C2 C3 VE_C1 VE_C2 VE_C3 LB UB REF poss_volume
#> S1 5 2 3 5 3.5 3.333333 3.333333 5.000000 0 0.5035461
#> S2 4 4 3 4 4.0 3.666667 3.666667 4.000000 1 0.5000000
#> S3 1 1 5 1 1.0 2.333333 1.000000 2.333333 0 0.2708333
#> S4 4 2 3 4 3.0 3.000000 3.000000 4.000000 0 0.4615385
#> S5 4 3 2 4 3.5 3.000000 3.000000 4.000000 0 0.4736842
We can also plot any computed assessment indicator through a bar plot.
For example, if we consider poss_volume
, the following code show how
to plot this indicator.
E %>%
geom_identify_sois(by = "poss_volume",
threshold = 0.0) %>%
plot_assessment(by = "poss_volume",
plot_title = "Normalized volume",
ylabel = "Normalized volume"
)