mlr_optimizers_async_grid_search: Asynchronous Optimization via Grid Search

mlr_optimizers_async_grid_searchR Documentation

Description

OptimizerAsyncGridSearch class that implements a grid search. The grid is constructed as a Cartesian product over discretized values per parameter, see paradox::generate_design_grid(). The points of the grid are evaluated in a random order.

Dictionary

This Optimizer can be instantiated via the dictionary mlr_optimizers or with the associated sugar function opt():

mlr_optimizers$get("async_grid_search")
opt("async_grid_search")

Parameters

batch_size

integer(1)
Maximum number of points to try in a batch.

Super classes

bbotk::Optimizer -> bbotk::OptimizerAsync -> OptimizerAsyncGridSearch

Methods

Public methods

Inherited methods

Method new()

Creates a new instance of this R6 class.

Usage
OptimizerAsyncGridSearch$new()

Method optimize()

Starts the asynchronous optimization.

Usage
OptimizerAsyncGridSearch$optimize(inst)
Arguments
inst

(OptimInstance).

Returns

data.table::data.table.


Method clone()

The objects of this class are cloneable with this method.

Usage
OptimizerAsyncGridSearch$clone(deep = FALSE)
Arguments
deep

Whether to make a deep clone.

Source

Bergstra J, Bengio Y (2012). “Random Search for Hyper-Parameter Optimization.” Journal of Machine Learning Research, 13(10), 281–305. https://jmlr.csail.mit.edu/papers/v13/bergstra12a.html.

Examples

# example only runs if a Redis server is available
if (mlr3misc::require_namespaces(c("rush", "redux", "mirai"), quietly = TRUE) &&
  redux::redis_available()) {
# define the objective function
fun = function(xs) {
  list(y = - (xs[[1]] - 2)^2 - (xs[[2]] + 3)^2 + 10)
}

# set domain
domain = ps(
  x1 = p_dbl(-10, 10),
  x2 = p_dbl(-5, 5)
)

# set codomain
codomain = ps(
  y = p_dbl(tags = "maximize")
)

# create objective
objective = ObjectiveRFun$new(
  fun = fun,
  domain = domain,
  codomain = codomain,
  properties = "deterministic"
)

# start workers
rush::rush_plan(worker_type = "remote")
mirai::daemons(1)

# initialize instance
instance = oi_async(
  objective = objective,
  terminator = trm("evals", n_evals = 20)
)

# load optimizer
optimizer = opt("async_grid_search", resolution = 10)

# trigger optimization
optimizer$optimize(instance)

# all evaluated configurations
instance$archive

# best performing configuration
instance$archive$best()

# covert to data.table
as.data.table(instance$archive)
}

bbotk documentation built on Nov. 5, 2025, 6:23 p.m.