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.
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
Method new()
Creates a new instance of this R6 class.
For more information on default values for surrogate, acq_function, acq_optimizer, and result_assigner, see ?mbo_defaults.
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.
Method 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 = "remote")
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.")
}
}
#> Redis server is not available.
#> Please set up Redis prior to running the example.
# }