TunerAsync using Asynchronous Model Based Optimization
Source:R/TunerAsyncMbo.R
mlr_tuners_async_mbo.RdTunerAsyncMbo class that implements Asynchronous Model Based Optimization (AMBO).
This is a minimal interface internally passing on to OptimizerAsyncMbo.
For additional information and documentation see OptimizerAsyncMbo.
Currently, only single-objective optimization is supported and
TunerAsyncMbo is considered an experimental feature and API might be subject to changes.
Defaults
All components have sensible defaults.
For more information on the defaults for surrogate, acq_function, acq_optimizer, and result_assigner,
see mbo_defaults.
Parameters
initial_designdata.table::data.table()
Initial design of the optimization. IfNULL, a design of sizedesign_sizeis generated with the specifieddesign_function. Default isNULL.design_sizeinteger(1)
Size of the initial design if it is to be generated. Default is100.design_functioncharacter(1)
Sampling function to generate the initial design. Can berandomparadox::generate_design_random,lhsparadox::generate_design_lhs, orsobolparadox::generate_design_sobol. Default issobol.n_workersinteger(1)
Number of parallel workers. IfNULL, all rush workers specified viarush::rush_plan()are used. Default isNULL.
Super classes
mlr3tuning::Tuner -> mlr3tuning::TunerAsync -> mlr3tuning::TunerAsyncFromOptimizerAsync -> TunerAsyncMbo
Active bindings
surrogate(Surrogate |
NULL)
The surrogate.acq_function(AcqFunction |
NULL)
The acquisition function.acq_optimizer(AcqOptimizer |
NULL)
The acquisition function optimizer.result_assigner(ResultAssigner |
NULL)
The result assigner.param_classes(
character())
Supported parameter classes that the optimizer can optimize. Determined based on thesurrogateand theacq_optimizer. This corresponds to the values given by a paradox::ParamSet's$classfield.properties(
character())
Set of properties of the optimizer. Must be a subset ofbbotk_reflections$optimizer_properties. MBO in principle is very flexible and by default we assume that the optimizer has all properties. When fully initialized, properties are determined based on the loop, e.g., theloop_function, andsurrogate.packages(
character())
Set of required packages. A warning is signaled prior to optimization if at least one of the packages is not installed, but loaded (not attached) later on-demand viarequireNamespace(). Required packages are determined based on theacq_function,surrogateand theacq_optimizer.
Methods
TunerAsyncMbo$new()
Creates a new instance of this R6 class.
Note that all the parameters below are simply passed to the OptimizerAsyncMbo and the respective fields are simply (settable) active bindings to the fields of the OptimizerAsyncMbo.
Usage
TunerAsyncMbo$new(
surrogate = NULL,
acq_function = NULL,
acq_optimizer = NULL,
param_set = NULL
)Arguments
surrogate(Surrogate |
NULL)
The surrogate.acq_function(AcqFunction |
NULL)
The acquisition function.acq_optimizer(AcqOptimizer |
NULL)
The acquisition function optimizer.param_set(paradox::ParamSet)
Set of control parameters.
TunerAsyncMbo$reset()
Reset the tuner.
Sets the following fields to NULL:
surrogate, acq_function, acq_optimizer, result_assigner
Resets parameter values design_size and design_function to their defaults.
Examples
# \donttest{
if (requireNamespace("rush") &
requireNamespace("mlr3learners") &
requireNamespace("DiceKriging") &
requireNamespace("rgenoud")) {
if (redis_available()) {
library(mlr3)
library(mlr3tuning)
# single-objective
task = tsk("wine")
learner = lrn("classif.rpart", cp = to_tune(lower = 1e-4, upper = 1, logscale = TRUE))
resampling = rsmp("cv", folds = 3)
measure = msr("classif.acc")
instance = TuningInstanceAsyncSingleCrit$new(
task = task,
learner = learner,
resampling = resampling,
measure = measure,
terminator = trm("evals", n_evals = 10))
mirai::daemons(2)
rush::rush_plan(n_workers=2, worker_type = "mirai")
tnr("async_mbo", design_size = 4, n_workers = 2)$optimize(instance)
mirai::daemons(0)
} else {
message("Redis server is not available.\nPlease set up Redis prior to running the example.")
}
}
# }