Optimization via Design Points
Source:R/OptimizerBatchDesignPoints.R
mlr_optimizers_design_points.Rd
OptimizerBatchDesignPoints
class that implements optimization w.r.t. fixed
design points. We simply search over a set of points fully specified by the
user. The points in the design are evaluated in order as given.
In order to support general termination criteria and parallelization, we
evaluate points in a batch-fashion of size batch_size
. Larger batches mean
we can parallelize more, smaller batches imply a more fine-grained checking
of termination criteria.
Dictionary
This Optimizer can be instantiated via the dictionary
mlr_optimizers or with the associated sugar function opt()
:
Parameters
batch_size
integer(1)
Maximum number of configurations to try in a batch.design
data.table::data.table
Design points to try in search, one per row.
Progress Bars
$optimize()
supports progress bars via the package progressr
combined with a Terminator. Simply wrap the function in
progressr::with_progress()
to enable them. We recommend to use package
progress as backend; enable with progressr::handlers("progress")
.
Super classes
bbotk::Optimizer
-> bbotk::OptimizerBatch
-> OptimizerBatchDesignPoints
Examples
library(data.table)
search_space = domain = ps(x = p_dbl(lower = -1, upper = 1))
codomain = ps(y = p_dbl(tags = "minimize"))
objective_function = function(xs) {
list(y = as.numeric(xs)^2)
}
objective = ObjectiveRFun$new(
fun = objective_function,
domain = domain,
codomain = codomain)
instance = OptimInstanceBatchSingleCrit$new(
objective = objective,
search_space = search_space,
terminator = trm("evals", n_evals = 10))
design = data.table(x = c(0, 1))
optimizer = opt("design_points", design = design)
# Modifies the instance by reference
optimizer$optimize(instance)
#> x x_domain y
#> <num> <list> <num>
#> 1: 0 <list[1]> 0
# Returns best scoring evaluation
instance$result
#> x x_domain y
#> <num> <list> <num>
#> 1: 0 <list[1]> 0
# Allows access of data.table of full path of all evaluations
as.data.table(instance$archive)
#> x y timestamp batch_nr x_domain_x
#> <num> <num> <POSc> <int> <num>
#> 1: 0 0 2024-11-08 08:22:33 1 0
#> 2: 1 1 2024-11-08 08:22:33 2 1