R: Optimization via Design Points

mlr_optimizers_design_points {bbotk} | R Documentation

## Optimization via Design Points

### Description

`OptimizerDesignPoints` 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()`:

    mlr_optimizers$get("design_points")
    opt("design_points")

### 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 class

`bbotk::Optimizer` -> `OptimizerDesignPoints`

### Methods

#### Public methods

- `OptimizerDesignPoints$new()`

- `OptimizerDesignPoints$clone()`

Inherited methods

- `bbotk::Optimizer$format()`

- `bbotk::Optimizer$help()`

- `bbotk::Optimizer$optimize()`

- `bbotk::Optimizer$print()`

#### Method `new()`

Creates a new instance of this R6 class.

##### Usage

    OptimizerDesignPoints$new()

#### Method `clone()`

The objects of this class are cloneable with this method.

##### Usage

    OptimizerDesignPoints$clone(deep = FALSE)

##### Arguments

`deep`

  Whether to make a deep clone.

### 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 = OptimInstanceSingleCrit$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)

    # Returns best scoring evaluation
    instance$result

    # Allows access of data.table of full path of all evaluations
    as.data.table(instance$archive)

[Package bbotk version 0.5.3 Index]