The function expects a data frame with Pareto-front approximation sets given in the columns passed by obj.cols and optional meta-columns “problem” “algorithm” and “repl”. Given a set of multi-objective performance indicators, the function splits the data by the meta-columns and calculates the indicator values for each approximation set.

df_get_indicators(x, obj.cols, unary, rsets = list(), format = "long")

Arguments

x

[data.frame]
Input data frame. There must be at least the variables specified in obj.cols.

obj.cols

[character(>= 2)]
Column names of the objective function values. Default is c("y1", "y2").

unary

[list]
Named list of indicators. The names must be strings that correspond to the function name of the indicator (e.g., “gd” for gd). The value is an (possibly empty) named list of parameter values for the indicator (e.g. list(p = 2) to modify the \(p\) parameter of the generational distance indicator gd).

rsets

[list]
Named list of reference sets in form of data frames. The names need to correspond to problem names in column x$problem. For all problems where no explicit reference set is given, the set is approximated as the non-dominated set of points of the union of all approximations for each problem.

format

[character(1)]
If “long”, the data is returned as a data frame in long format. I.e., there is a column “indicator” and another column “value” for the corresponding indicator values. This format is the default and particulary helpful for visualization with ggplot2. In contrast, for format “wide”, there is one column for each indicator. This format is less redundant and memory-intensive.

Value

A data frame with columns “problem”, “algorithm”, “repl”, and columns with the respective indicator values (see argument format for details).

Parallelization

This function supports parallelization for faster execution via the package future. A parallel backend (e.g., multicore (on Unix/Linux/MacOS), multisession etc.) can be selected via plan.

See also

Other multi-objective performance indicators: cov(), eps(), gd(), hv(), os(), r1(), rse()

Examples

# load sample data set data(emoas_on_zdt) # get indicators in long format inds = df_get_indicators(emoas_on_zdt, obj.cols = c("y1", "y2"), unary = list( hv = list(), # hv has no parameters rse = list(s = 0.5), ahd = list(p = 2)))