evaluate_results: Apply BBE

View source: R/evaluate_results.R

evaluate_resultsR Documentation

Apply BBE

Description

Evaluate the performance of an algorithm in a basin-based manner. Internally the basins are determined with the efficient points and the gradients calculated by 'moPlot' for the rasterized decision space. See the paper for more details. In the following the number of dimensions in the decision space will be denoted as dec.nDim and the number of dimensions in the objective space will be denoted as obj.nDim.

Usage

evaluate_results(
  results,
  fn,
  ...,
  eval_fn = ecr::computeHV,
  grid_size = 300L,
  basins = 1:3,
  join_fronts = FALSE,
  keep_points = FALSE,
  efficient_sets = NULL,
  dec_space_labels = NULL,
  design = NULL
)

Arguments

results

[tibble]
A tibble with the results of an algorithm run. It should be organized as follows: The first column should contain the ascending number of function calls needed to retrieve the solutions captured in the remaining columns. The second column until the 1 + dec.nDim column should contain the coordinates of the solutions in the decision space (named $x_1$ to $x_1 + dec.nDim). Finally, the remaining columns should contain the coordinates in the objective space. Note that the point will be grouped by the function calls needed to retrieve them. Thus, make sure that points that should be evaluated together have the same value in the first column.

fn

[function]
The multi-objective function under consideration. It should be a 'smoof'-function. The number of objectives, the upper and lower bounds are inferred from the function.

...

[any]
Further arguments that should be passed to 'eval_fn'. In the default case ref.point should be passed here for the calculation of the hypervolume.

eval_fn

[function]
The function that is used to evaluate the solutions in a basin. It should accept the points in a column wise dataframe. The default is 'ecr::computeHV'.

grid_size

[integer(1)]
The granuality of the raster per dimension. The default is 300.

basins

[integer]
A vector of integers identifying the basins that should be considered during the evaluation. The default is to consider the first three basins.

join_fronts

[logical(1)]
This should be TRUE if the efficient sets should be joined when they are part of the same domination front. Default is FALSE.

keep_points

[logical(1)]
Should all prior found points be considered as well when considering the current set of points for a specific number of function calls? Default is FALSE.

efficient_sets

[list | NULL]
If the efficient points returned by 'moPLOT' are not accurate, or enought and more precice locations are available, or a custom merging of sets is wanted this can be supplyed here. Expected is a list of vectors containing the indices of the gridcells that should be regarded an efficient point. An element of the List is treated as one efficient set. If NULL the efficient points returned by 'moPLOT' are merged to efficient sets and those are then ordered by the number of points in a domination layer. Default is NULL.

dec_space_labels

[integer | NULL]
If a custom labeling of the grid in the decision space is wanted the labels can be supplied here. The vector should contain the wanted label at the position of the index of a cell in the grid. If NULL the labels are computed from the points in the efficient sets.

design

[list | NULL]
If a design with efficient_sets and dec_space_labels was already created by either this function or 'get_decision_space_labels' it can be reused with this parameter.

Value

[list]
A design list from 'moPLOT'. Additionally attached are the efficient sets (efficientSets), the labels for the decision space (decSpaceLabels) and a tibble (basin_separated_eval) with the basin separated results.

Examples

# NOT RUN {
fn <- smoof::makeDTLZ1Function(2,2)
# tibble with an examplary NSGAII run on DTLZ1
tb <- nsga2_dtlz1_run[, c('fun_calls', 'x1', 'x2', 'y1', 'y2')]
evaluate_results(tb, fn, ref.point = smoof::getRefPoint(fn))
# }

jonathan-h1/BBE documentation built on April 20, 2022, 12:46 a.m.