Learn R Programming

bbotk - Black-Box Optimization Toolkit

Package website: release | dev

bbotk is a black-box optimization framework for R. It features highly configurable search spaces via the paradox package and optimizes every user-defined objective function. The package includes several optimization algorithms e.g. Random Search, Grid Search, Iterated Racing, Bayesian Optimization (in mlr3mbo) and Hyperband (in mlr3hyperband). bbotk is the base package of mlr3tuning, mlr3fselect and miesmuschel.

Resources

There are several sections about black-box optimization in the mlr3book. Often the sections about tuning are also relevant for general black-box optimization.

Installation

Install the latest release from CRAN.

install.packages("bbotk")

Install the development version from GitHub.

pak::pkg_install("mlr-org/bbotk")

Example

# 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"
)

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

# load optimizer
optimizer = opt("gensa")

# trigger optimization
optimizer$optimize(instance)
##    x1 x2  x_domain  y
## 1:  2 -3 <list[2]> 10
# best performing configuration
instance$result
##    x1 x2  x_domain  y
## 1:  2 -3 <list[2]> 10
# all evaluated configuration
as.data.table(instance$archive)
##            x1        x2          y           timestamp batch_nr x_domain_x1 x_domain_x2
##  1: -4.689827 -1.278761 -37.716445 2026-07-14 17:06:25        1   -4.689827   -1.278761
##  2: -5.930364 -4.400474 -54.851999 2026-07-14 17:06:25        2   -5.930364   -4.400474
##  3:  7.170817 -1.519948 -18.927907 2026-07-14 17:06:25        3    7.170817   -1.519948
##  4:  2.045200 -1.519948   7.807403 2026-07-14 17:06:25        4    2.045200   -1.519948
##  5:  2.045200 -2.064742   9.123250 2026-07-14 17:06:25        5    2.045200   -2.064742
## ---                                                                                    
## 16:  2.000000 -3.000000  10.000000 2026-07-14 17:06:26       16    2.000000   -3.000000
## 17:  2.000001 -3.000000  10.000000 2026-07-14 17:06:26       17    2.000001   -3.000000
## 18:  1.999999 -3.000000  10.000000 2026-07-14 17:06:26       18    1.999999   -3.000000
## 19:  2.000000 -2.999999  10.000000 2026-07-14 17:06:26       19    2.000000   -2.999999
## 20:  2.000000 -3.000001  10.000000 2026-07-14 17:06:26       20    2.000000   -3.000001

Citation

If you use bbotk in your work, please cite it.

Becker M, Richter J, Lang M, Bischl B, Binder M (2026). bbotk: Black-Box Optimization Toolkit. doi:10.5281/zenodo.20669808, https://doi.org/10.5281/zenodo.20669808.

@Manual{becker2026bbotk,
  title = {bbotk: Black-Box Optimization Toolkit},
  url = {https://doi.org/10.5281/zenodo.20669808},
  author = {Marc Becker and Jakob Richter and Michel Lang and Bernd Bischl and Martin Binder},
  year = {2026},
  doi = {10.5281/zenodo.20669808},
}

Copy Link

Version

Install

install.packages('bbotk')

Monthly Downloads

22,585

Version

1.12.0

License

LGPL-3

Issues

Pull Requests

Stars

Forks

Maintainer

Marc Becker

Last Published

July 17th, 2026

Functions in bbotk (1.12.0)

CallbackBatch

Create Batch Optimization Callback
ArchiveBatch

Data Table Storage
ContextAsync

Asynchronous Optimization Context
EvalInstance

Evaluation Instance Base Class
Archive

Data Storage
ContextBatch

Batch Optimization Context
ArchiveAsync

Rush Data Storage
CallbackAsync

Create Asynchronous Optimization Callback
ArchiveAsyncFrozen

Frozen Rush Data Storage
Codomain

Codomain of Function
OptimInstanceAsync

Optimization Instance for Asynchronous Optimization
ObjectiveTestFunction

Objective Test Function
OptimInstanceAsyncSingleCrit

Single Criterion Optimization Instance for Asynchronous Optimization
OptimInstance

Optimization Instance
ObjectiveRFun

Objective interface with custom R function
ObjectiveRFunDt

Objective interface for basic R functions.
OptimInstanceAsyncMultiCrit

Multi Criteria Optimization Instance for Asynchronous Optimization
Objective

Objective Function with Domain and Codomain
OptimInstanceBatch

Optimization Instance for Batch Optimization
ObjectiveRFunMany

Objective Interface with Custom R Function
OptimInstanceBatchMultiCrit

Multi Criteria Optimization Instance for Batch Optimization
Terminator

Abstract Terminator Class
Progressor

Progressor
Optimizer

Optimizer
as_terminator

Convert to a Terminator
OptimInstanceBatchSingleCrit

Single Criterion Optimization Instance for Batch Optimization
OptimizerBatch

Batch Optimizer
OptimInstanceMultiCrit

Multi Criteria Optimization Instance for Batch Optimization
OptimizerAsync

Asynchronous Optimizer
OptimInstanceSingleCrit

Single Criterion Optimization Instance for Batch Optimization
bbotk-package

bbotk: Black-Box Optimization Toolkit
bbotk.backup

Backup Archive Callback
bbotk_assertions

Assertion for bbotk objects
bbotk.async_freeze_archive

Freeze Archive Callback
bb_optimize

Black-Box Optimization
branin

Branin Function
bbotk_conditions

Condition Classes for bbotk
assign_result_default

Default Assign Result Function
bbotk_worker_loop

Worker loop for Rush
bbotk_reflections

Reflections for bbotk
local_search

Local Search
callback_async

Create Asynchronous Optimization Callback
choose_search_space

Choose Search Space
mlr_optimizers_async_design_points

Asynchronous Optimization via Design Points
mlr_optimizers

Dictionary of Optimizer
is_dominated

Calculate which points are dominated
local_search_control

Local Search Control
mlr_optimizers_async_grid_search

Asynchronous Optimization via Grid Search
mlr_optimizers_async_random_search

Asynchronous Optimization via Random Search
mlr_optimizers_irace

Iterated Racing
mlr_optimizers_nloptr

Non-linear Optimization
mlr_optimizers_design_points

Optimization via Design Points
mlr_optimizers_local_search

Local Search
mlr_optimizers_gensa

Generalized Simulated Annealing
mlr_optimizers_random_search

Optimization via Random Search
callback_batch

Create Batch Optimization Callback
mlr_optimizers_cmaes

Optimization via Covariance Matrix Adaptation Evolution Strategy
mlr_optimizers_focus_search

Optimization via Focus Search
mlr_optimizers_grid_search

Optimization via Grid Search
mlr_optimizers_chain

Run Optimizers Sequentially
mlr_terminators_run_time

Run Time Terminator
mlr_terminators_combo

Combine Terminators
mlr_terminators_none

None Terminator
mlr_terminators_stagnation_hypervolume

Stagnation Hypervolume Terminator
mlr_terminators_clock_time

Clock Time Terminator
mlr_terminators_stagnation

Terminator that stops when optimization does not improve
mlr_terminators_stagnation_batch

Terminator that stops when optimization does not improve
mlr_terminators_perf_reached

Performance Level Terminator
mlr_terminators

Dictionary of Terminators
optimize_async_default

Default Asynchronous Optimization
mlr_test_functions

Dictionary of Optimization Test Functions
mlr_terminators_evals

Terminator that stops after a number of evaluations
opt

Syntactic Sugar Optimizer Construction
otfun

Syntactic Sugar for Optimization Test Functions
oi_async

Syntactic Sugar for Asynchronous Optimization Instance Construction
oi

Syntactic Sugar for Optimization Instance Construction
reexports

Objects exported from other packages
optimize_batch_default

Default Batch Optimization Function
trafo_xs

Calculate the transformed x-values
trm

Syntactic Sugar Terminator Construction
nds_selection

Best points w.r.t. non dominated sorting with hypervolume contribution.
search_start

Get start values for optimizers
shrink_ps

Shrink a ParamSet towards a point.
terminated_error

Termination Error
tiny_logging

Tiny Logging
tiny_result

Tiny Result
transform_xdt_to_xss

Calculates the transformed x-values