R/load_end_result_stats.R

Defines functions aitoa.load.end.result.stats .check.end.result.stats

Documented in aitoa.load.end.result.stats

.end.result.stats.base.col.types <- c("character",
                     "character",
                     "integer",
                     "numeric",
                     "character",
                     "numeric",
                     "character",
                     "numeric",
                     "character",
                     "numeric",
                     "character",
                     "numeric",
                     "character",
                     "numeric",
                     "character",
                     "numeric",
                     "character",
                     "numeric",
                     "character",
                     "numeric",
                     "character",
                     "numeric",
                     "character",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "numeric",
                     "integer",
                     "numeric",
                     "numeric",
                     "numeric",
                     "character",
                     "numeric",
                     "numeric",
                     "character",
                     "numeric",
                     "numeric",
                     "numeric",
                     "character",
                     "numeric",
                     "numeric",
                     "character",
                     "numeric",
                     "numeric");

.end.result.stats.base.col.names <- c("algorithm",
                     "instance",
                     "n.runs",
                     "best.f.min",
                     "best.f.min.setup",
                     "best.f.q050",
                     "best.f.q050.setup",
                     "best.f.q159",
                     "best.f.q159.setup",
                     "best.f.q250",
                     "best.f.q250.setup",
                     "best.f.median",
                     "best.f.median.setup",
                     "best.f.q750",
                     "best.f.q750.setup",
                     "best.f.q841",
                     "best.f.q841.setup",
                     "best.f.q950",
                     "best.f.q950.setup",
                     "best.f.max",
                     "best.f.max.setup",
                     "best.f.mean",
                     "best.f.mean.setup",
                     "best.f.sd",
                     "total.time.min",
                     "total.time.q050",
                     "total.time.q159",
                     "total.time.q250",
                     "total.time.median",
                     "total.time.q750",
                     "total.time.q841",
                     "total.time.q950",
                     "total.time.max",
                     "total.time.mean",
                     "total.time.sd",
                     "total.fes.min",
                     "total.fes.q050",
                     "total.fes.q159",
                     "total.fes.q250",
                     "total.fes.median",
                     "total.fes.q750",
                     "total.fes.q841",
                     "total.fes.q950",
                     "total.fes.max",
                     "total.fes.mean",
                     "total.fes.sd",
                     "last.improvement.time.min",
                     "last.improvement.time.q050",
                     "last.improvement.time.q159",
                     "last.improvement.time.q250",
                     "last.improvement.time.median",
                     "last.improvement.time.q750",
                     "last.improvement.time.q841",
                     "last.improvement.time.q950",
                     "last.improvement.time.max",
                     "last.improvement.time.mean",
                     "last.improvement.time.sd",
                     "last.improvement.fes.min",
                     "last.improvement.fes.q050",
                     "last.improvement.fes.q159",
                     "last.improvement.fes.q250",
                     "last.improvement.fes.median",
                     "last.improvement.fes.q750",
                     "last.improvement.fes.q841",
                     "last.improvement.fes.q950",
                     "last.improvement.fes.max",
                     "last.improvement.fes.mean",
                     "last.improvement.fes.sd",
                     "n.improvements.min",
                     "n.improvements.q050",
                     "n.improvements.q159",
                     "n.improvements.q250",
                     "n.improvements.median",
                     "n.improvements.q750",
                     "n.improvements.q841",
                     "n.improvements.q950",
                     "n.improvements.max",
                     "n.improvements.mean",
                     "n.improvements.sd",
                     "budget.time.min",
                     "budget.time.median",
                     "budget.time.max",
                     "budget.time.mean",
                     "budget.time.sd",
                     "budget.FEs.min",
                     "budget.FEs.median",
                     "budget.FEs.max",
                     "budget.FEs.mean",
                     "budget.FEs.sd",
                     "n.successes",
                     "ert.time",
                     "ert.fes",
                     "success.time.min",
                     "success.time.min.setup",
                     "success.time.median",
                     "success.time.max",
                     "success.time.max.setup",
                     "success.time.mean",
                     "success.time.sd",
                     "success.fes.min",
                     "success.fes.min.setup",
                     "success.fes.median",
                     "success.fes.max",
                     "success.fes.max.setup",
                     "success.fes.mean",
                     "success.fes.sd");

.check.end.result.stats <- function(data) {
  stopifnot(is.data.frame(data),
            nrow(data) > 0L,
            all(colnames(data) == .end.result.stats.base.col.names),

            all(is.finite(data$n.runs)),
            all(data$n.runs > 0L),

            all(is.finite(data$best.f.min)),
            all(is.finite(data$best.f.q050)),
            all(is.finite(data$best.f.q159)),
            all(is.finite(data$best.f.q250)),
            all(is.finite(data$best.f.median)),
            all(is.finite(data$best.f.q750)),
            all(is.finite(data$best.f.q841)),
            all(is.finite(data$best.f.q950)),
            all(is.finite(data$best.f.max)),
            all(is.finite(data$best.f.mean)),
            all(is.finite(data$best.f.sd)),
            all(data$best.f.min <= data$best.f.q050),
            all(data$best.f.q050 <= data$best.f.q159),
            all(data$best.f.q159 <= data$best.f.q250),
            all(data$best.f.q250 <= data$best.f.median),
            all(data$best.f.median <= data$best.f.q750),
            all(data$best.f.q750 <= data$best.f.q841),
            all(data$best.f.q841 <= data$best.f.q950),
            all(data$best.f.q950 <= data$best.f.max),
            all(data$best.f.mean <= data$best.f.max),
            all(data$best.f.min <= data$best.f.mean),
            all( (data$best.f.sd == 0) ==
                   (data$best.f.max <= data$best.f.min)),

            all(is.finite(data$total.time.min)),
            all(is.finite(data$total.time.q050)),
            all(is.finite(data$total.time.q159)),
            all(is.finite(data$total.time.q250)),
            all(is.finite(data$total.time.median)),
            all(is.finite(data$total.time.q750)),
            all(is.finite(data$total.time.q841)),
            all(is.finite(data$total.time.q950)),
            all(is.finite(data$total.time.max)),
            all(is.finite(data$total.time.mean)),
            all(is.finite(data$total.time.sd)),
            all(data$total.time.min >= 0),
            all(data$total.time.min <= data$total.time.q050),
            all(data$total.time.q050 <= data$total.time.q159),
            all(data$total.time.q159 <= data$total.time.q250),
            all(data$total.time.q250 <= data$total.time.median),
            all(data$total.time.median <= data$total.time.q750),
            all(data$total.time.q750 <= data$total.time.q841),
            all(data$total.time.q841 <= data$total.time.q950),
            all(data$total.time.q950 <= data$total.time.max),
            all(data$total.time.mean <= data$total.time.max),
            all(data$total.time.min <= data$total.time.mean),
            all( (data$total.time.sd == 0) ==
                   (data$total.time.max <= data$total.time.min)),

            all(is.finite(data$total.fes.min)),
            all(is.finite(data$total.fes.q050)),
            all(is.finite(data$total.fes.q159)),
            all(is.finite(data$total.fes.q250)),
            all(is.finite(data$total.fes.median)),
            all(is.finite(data$total.fes.q750)),
            all(is.finite(data$total.fes.q841)),
            all(is.finite(data$total.fes.q950)),
            all(is.finite(data$total.fes.max)),
            all(is.finite(data$total.fes.mean)),
            all(is.finite(data$total.fes.sd)),
            all(data$total.fes.min > 0L),
            all(data$total.fes.min <= data$total.fes.q050),
            all(data$total.fes.q050 <= data$total.fes.q159),
            all(data$total.fes.q159 <= data$total.fes.q250),
            all(data$total.fes.q250 <= data$total.fes.median),
            all(data$total.fes.median <= data$total.fes.q750),
            all(data$total.fes.q750 <= data$total.fes.q841),
            all(data$total.fes.q841 <= data$total.fes.q950),
            all(data$total.fes.q950 <= data$total.fes.max),
            all(data$total.fes.mean <= data$total.fes.max),
            all(data$total.fes.min <= data$total.fes.mean),
            all( (data$total.fes.sd == 0) ==
                   (data$total.fes.max <= data$total.fes.min)),

            all(is.finite(data$last.improvement.time.min)),
            all(is.finite(data$last.improvement.time.q050)),
            all(is.finite(data$last.improvement.time.q159)),
            all(is.finite(data$last.improvement.time.q250)),
            all(is.finite(data$last.improvement.time.median)),
            all(is.finite(data$last.improvement.time.q750)),
            all(is.finite(data$last.improvement.time.q841)),
            all(is.finite(data$last.improvement.time.q950)),
            all(is.finite(data$last.improvement.time.max)),
            all(is.finite(data$last.improvement.time.mean)),
            all(is.finite(data$last.improvement.time.sd)),
            all(data$last.improvement.time.min >= 0L),
            all(data$last.improvement.time.min <= data$total.time.min),
            all(data$last.improvement.time.min <= data$last.improvement.time.q050),
            all(data$last.improvement.time.q050 <= data$last.improvement.time.q159),
            all(data$last.improvement.time.q159 <= data$last.improvement.time.q250),
            all(data$last.improvement.time.q250 <= data$last.improvement.time.median),
            all(data$last.improvement.time.median <= data$last.improvement.time.q750),
            all(data$last.improvement.time.q750 <= data$last.improvement.time.q841),
            all(data$last.improvement.time.q841 <= data$last.improvement.time.q950),
            all(data$last.improvement.time.mean <= data$last.improvement.time.max),
            all(data$last.improvement.time.q950 <= data$last.improvement.time.max),
            all(data$last.improvement.time.min <= data$last.improvement.time.mean),
            all( (data$last.improvement.time.sd == 0) ==
                   (data$last.improvement.time.max <= data$last.improvement.time.min)),
            all(data$last.improvement.time.max <= data$total.time.max),

            all(is.finite(data$last.improvement.fes.min)),
            all(is.finite(data$last.improvement.fes.q050)),
            all(is.finite(data$last.improvement.fes.q159)),
            all(is.finite(data$last.improvement.fes.q250)),
            all(is.finite(data$last.improvement.fes.median)),
            all(is.finite(data$last.improvement.fes.q750)),
            all(is.finite(data$last.improvement.fes.q841)),
            all(is.finite(data$last.improvement.fes.q950)),
            all(is.finite(data$last.improvement.fes.max)),
            all(is.finite(data$last.improvement.fes.mean)),
            all(is.finite(data$last.improvement.fes.sd)),
            all(data$last.improvement.fes.min >= 0),
            all(data$last.improvement.fes.min <= data$total.fes.min),
            all(data$last.improvement.fes.min <= data$last.improvement.fes.q050),
            all(data$last.improvement.fes.q050 <= data$last.improvement.fes.q159),
            all(data$last.improvement.fes.q159 <= data$last.improvement.fes.q250),
            all(data$last.improvement.fes.q250 <= data$last.improvement.fes.median),
            all(data$last.improvement.fes.median <= data$last.improvement.fes.q750),
            all(data$last.improvement.fes.q750 <= data$last.improvement.fes.q841),
            all(data$last.improvement.fes.q841 <= data$last.improvement.fes.q950),
            all(data$last.improvement.fes.q950 <= data$last.improvement.fes.max),
            all(data$last.improvement.fes.mean <= data$last.improvement.fes.max),
            all(data$last.improvement.fes.min <= data$last.improvement.fes.mean),
            all( (data$last.improvement.fes.sd == 0) ==
                   (data$last.improvement.fes.max <= data$last.improvement.fes.min)),
            all(data$last.improvement.fes.max <= data$total.fes.max),

            all(is.finite(data$n.improvements.min)),
            all(is.finite(data$n.improvements.q050)),
            all(is.finite(data$n.improvements.q159)),
            all(is.finite(data$n.improvements.q250)),
            all(is.finite(data$n.improvements.median)),
            all(is.finite(data$n.improvements.q750)),
            all(is.finite(data$n.improvements.q841)),
            all(is.finite(data$n.improvements.q950)),
            all(is.finite(data$n.improvements.max)),
            all(is.finite(data$n.improvements.mean)),
            all(is.finite(data$n.improvements.sd)),
            all(data$n.improvements.min > 0),
            all(data$n.improvements.min <= data$n.improvements.q050),
            all(data$n.improvements.q050 <= data$n.improvements.q159),
            all(data$n.improvements.q159 <= data$n.improvements.q250),
            all(data$n.improvements.q250 <= data$n.improvements.median),
            all(data$n.improvements.median <= data$n.improvements.q750),
            all(data$n.improvements.q750 <= data$n.improvements.q841),
            all(data$n.improvements.q841 <= data$n.improvements.q950),
            all(data$n.improvements.q950 <= data$n.improvements.max),
            all(data$n.improvements.mean <= data$n.improvements.max),
            all(data$n.improvements.min <= data$n.improvements.mean),
            all( (data$n.improvements.sd == 0) ==
                   (data$n.improvements.max <= data$n.improvements.min)),

            all(is.finite(data$budget.time.min)),
            all(is.finite(data$budget.time.median)),
            all(is.finite(data$budget.time.max)),
            all(is.finite(data$budget.time.mean)),
            all(is.finite(data$budget.time.sd)),
            all(data$budget.time.min > 0),
            all(data$budget.time.min <= data$budget.time.median),
            all(data$budget.time.median <= data$budget.time.max),
            all(data$budget.time.mean <= data$budget.time.max),
            all(data$budget.time.min <= data$budget.time.mean),
            all( (data$budget.time.sd == 0) ==
                   (data$budget.time.max <= data$budget.time.min)),

            all(is.finite(data$budget.fes.min)),
            all(is.finite(data$budget.fes.median)),
            all(is.finite(data$budget.fes.max)),
            all(is.finite(data$budget.fes.mean)),
            all(is.finite(data$budget.fes.sd)),
            all(data$budget.fes.min > 0),
            all(data$budget.fes.min <= data$budget.fes.median),
            all(data$budget.fes.median <= data$budget.fes.max),
            all(data$budget.fes.mean <= data$budget.fes.max),
            all(data$budget.fes.min <= data$budget.fes.mean),
            all( (data$budget.fes.sd == 0) ==
                   (data$budget.fes.max <= data$budget.fes.min)),

            all(is.finite(data$n.successes)),
            all(data$n.successes >= 0L),
            all(data$n.successes <= data$n.runs),

            all(data$ert.fes > 0L),
            all( (data$ert.fes < +Inf) == (data$n.successes > 0L)),

            all(data$ert.time >= 0L),
            all( (data$ert.time < +Inf) == (data$n.successes > 0L))
  );
}


#' @title Load the End Result Statistics from a File
#' @description Load the end result statistics from a file generated by the
#'   aitoa log processing.
#' @param file the file to load
#' @return the data frame with the end results
#' @export aitoa.load.end.result.stats
#' @importFrom utils read.csv
#' @include utils.R
aitoa.load.end.result.stats <- function(file) {
  file <- .file.exists(file);

  data <- read.csv(file,
                   header=TRUE,
                   sep=";",
                   stringsAsFactors = FALSE,
                   check.names = TRUE,
                   blank.lines.skip = TRUE,
                   comment.char = '#',
                   col.names = .end.result.stats.base.col.names,
                   colClasses = .end.result.stats.base.col.types);

  .check.end.result.stats(data);

  return(data);
}
thomasWeise/aitoaEvaluate documentation built on Dec. 6, 2020, 1:22 p.m.