| mies_aggregate_generations | R Documentation |
Get evaluated performance values from an OptimInstance aggregated for each generation.
This may either concern all individuals that were alive at the end of a given generation (survivors_only TRUE)
or at any point during a generation (survivors_only FALSE).
The result is a single data.table object with a dob column indicating the
generation, as well as one column for each aggregations entry crossed with each objective of inst.
See mies_generation_apply() on how to apply functions to entire fitness-matrices, not only individual objectives.
mies_aggregate_generations(
inst,
objectives = inst$archive$codomain$ids(),
aggregations = list(min = min, mean = mean, max = max, median = stats::median, size =
length),
as_fitnesses = TRUE,
survivors_only = TRUE,
condition_on_budget_id = NULL
)
inst |
( |
objectives |
( |
aggregations |
(named |
as_fitnesses |
( |
survivors_only |
( |
condition_on_budget_id |
( |
a data.table with the column "dob", indicating the generation, as well as further
columns named by the items in aggregations. There is more on element in objectives
(or more than one element not being minimized/maximized when as_fitnesses is TRUE), then columns are named <aggregations element name>.<objective name>.
Otherwise, they are named by <aggregations element name> only. To get a guarantee that elements are only named after elements in aggregations, set objectives
to a length 1 character.
Other aggregation methods:
mies_aggregate_single_generation(),
mies_get_generation_results()
library("bbotk")
lgr::threshold("warn")
# Define the objective to optimize
objective <- ObjectiveRFun$new(
fun = function(xs) {
z <- 10 - exp(-xs$x^2 - xs$y^2) + 2 * exp(-(2 - xs$x)^2 - (2 - xs$y)^2)
list(Obj = z)
},
domain = ps(x = p_dbl(-2, 4), y = p_dbl(-2, 4)),
codomain = ps(Obj = p_dbl(tags = "minimize"))
)
oi <- OptimInstanceSingleCrit$new(objective,
terminator = trm("evals", n_evals = 6)
)
op <- opt("mies",
lambda = 2, mu = 2,
mutator = mut("gauss", sdev = 0.1),
recombinator = rec("xounif"),
parent_selector = sel("best")
)
set.seed(1)
op$optimize(oi)
# negates objectives that are minimized:
mies_aggregate_generations(oi)
# silly aggregation: first element
mies_aggregate_generations(oi, aggregations = list(first = function(x) x[1]))
# real objective values:
mies_aggregate_generations(oi, as_fitnesses = FALSE)
# Individuals that died are included:
mies_aggregate_generations(oi, survivors_only = FALSE)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.