Changelog
Source:NEWS.md
bbotk 1.13.1
CRAN release: 2026-09-17
- fix:
ArchiveAsync$best()withn_select > 1no longer reorders the task cache of rush in place, which changed the order of$finished_dataand$datafor all later calls (#387). - fix:
ArchiveBatch$add_evals()now checks thatxss_trafoedhas one element per row ofxdt, which silently corrupted thex_domaincolumn before (#366). - fix:
as.data.table(mlr_optimizers, objects = TRUE)now returns the optimizer in theobjectcolumn instead ofbase::t()for all optimizers but"chain"(#368). - fix:
assert_terminable()now decides whether an instance is single or multi-criteria from the codomain of the objective instead of the class of the instance, so terminators are checked correctly forOptimInstanceAsyncMultiCrit(#375). - fix:
$assign_result()and$result_yof the multi-criteria instances now only expect and return the target values of the codomain. A codomain with additional non-target parameters made$optimize()fail (#372). - fix:
assign_result_default()now raises a readable error when the terminator is already terminated before the first evaluation instead of failing withcolumn not found(#377). - fix:
bb_optimize()now creates a single-criteria instance for a codomain with one target and additional non-target parameters instead of a multi-criteria instance (#373). - fix:
branin()now adds thenoiseargument to the function value, which was ignored (#369). - fix:
context$xdtcan now be replaced by assignment in theon_optimizer_before_evalstage of aCallbackBatch, and the replaced points are both evaluated and written to the archive (#374). - fix: The C code of
local_search()now raises R errors instead of usingassert(), which aborted the R session and vanished entirely in a build with-DNDEBUG(#382). - fix:
local_search()now recognizes the termination condition raised by a terminator. The condition was re-raised and the RNG state was never written back, so all random numbers drawn in the C code were lost (#378). - fix:
local_search()now writes the RNG state back before it calls the objective, so an objective that draws random numbers no longer receives the numbers the C code consumed for mutation (#379). - fix:
local_search()now compares parameter names, column names, list element names, and factor levels exactly instead of by prefix. A parameter or level whose name was a prefix of another one aborted the R session or made mutation a silent no-op (#380). - fix:
nds_selection()now only accepts aminimizeargument of length 1 or of the number of objectives, and rejects points with missing values (#365). - fix:
Objective$eval_many()no longer multiplies the number of rows when the objective returns an extra that is an atomic vector of length greater than one (#367). - fix:
optimize_async_default()now checks the instance and the properties of the optimizer before the workers are started, so unsupported parameter classes, dependencies, single or multi-criteria mismatches, and missing packages are reported in the main process instead of crashing the workers (#386). - fix:
optimize_async_default()now stops the workers on every exit path, including errors and interrupts. A failing optimization left the workers running before (#384). - fix:
OptimizerBatchChainnow runs the optimizers on the instance itself instead of on a clone. The terminator of the instance sees all evaluated points, so the overall budget is no longer exceeded, and points that were already evaluated before the chain started are no longer duplicated in the archive (#364). - fix:
OptimizerBatchIracenow passes thedigitsparameter to irace instead of always using 15 digits (#362). - fix:
OptimizerBatchIracenow writes the actual step of a race into thestepcolumn of the archive, which was always1(#363). - fix:
OptimizerBatchNLoptrno longer overwrites themaxeval,maxtime, andstopvalparameters. The internal termination criteria set by the user are now passed on tonloptr::nloptr()(#361). - fix:
OptimizerBatchRandomSearchrejects abatch_sizesmaller than 1, and$eval_batch()errors on an emptyxdtunless the search space is empty.opt("random_search", batch_size = 0)looped forever before (#370). - fix:
options(bbotk.debug = TRUE)no longer hangs when the optimizer returns before the terminator is satisfied, e.g. when the design ofOptimizerAsyncDesignPointsis exhausted (#385). - fix:
$result_yof the single-criteria instances now only returns the target values of the codomain. It errored for a codomain with additional non-target parameters (#371). - fix:
shrink_ps()now expects the point to shrink around on the scale of the search space instead of the transformed scale, and theuniroot()based inversion of the trafo is removed.OptimizerBatchFocusSearchshrunk the search space around the wrong point whenever the search space had a trafo (#360). - fix:
TerminatorRunTimenow reports an integer number of steps, so a fractionalsecsvalue no longer breaks$optimize()when progressr is loaded (#376).
bbotk 1.13.0
CRAN release: 2026-09-02
- feat: Asynchronous optimizers support the
miraicompute profiles set with theprofilesargument ofrush::rush_plan(), e.g.profiles = c(cpu = 2, gpu = 2)runs 2 workers on the daemons of the"cpu"profile and 2 workers on the daemons of the"gpu"profile. The profile a worker runs on is available asinstance$rush$profile. - feat:
ArchiveAsync$push_points()andArchiveAsync$push_point()gain theprofileargument to queue points for amiraicompute profile. Points queued for a profile are only evaluated by the workers running on that profile, whereas points pushed without a profile are queued in the shared queue and are evaluated by any worker. - refactor:
nds_selection()now usesmoocore::pareto_rank()andmoocore::hv_contributions()instead of theemoapackage, which is no longer suggested. Boundary points now always survive tie breaking in three or more dimensions, matching the previous behavior in two dimensions. - refactor:
OptimizerBatchCmaesnow callslibcmaesr::cmaes()instead ofadagio::pureCMAES(), which is no longer suggested. The optimizer gains thealgo,lambda,max_restarts,elitism,tpa,tpa_dsigma,seed,f_tolerance,x_tolerance,x0_lower, andx0_upperparameters, and evaluates a whole generation oflambdapoints per batch. Thesigmaparameter no longer defaults to0.5but is handled bylibcmaes.
bbotk 1.12.0
CRAN release: 2026-07-17
- refactor: Remove the deprecated
extraargument fromArchiveAsync’s$push_points(),$push_point(),$push_running_points(),$push_running_point(),$finish_points(), and$finish_point(). Use the correspondingxss_extra,xs_extra, oryss_extra,ys_extraargument instead.
bbotk 1.11.0
CRAN release: 2026-06-26
- fix: Asynchronous optimization no longer calls the deprecated
rush$fail_tasks()method when cleaning up after termination. Queued tasks are now removed withrush$empty_queue()and running tasks are left to the workers that own them. - feat:
ArchiveAsyncgains additional methods wrapping therushtask API:$push_point(),$push_running_points(),$push_finished_point(),$push_finished_points(),$push_failed_points(),$finish_point(),$finish_points(),$fail_point(), and$fail_points(). - feat:
ArchiveAsync$push_failed_point()now creates a new failed point in the archive instead of moving a running point to the failed points; use$fail_point()to move a running point to the failed points. - refactor:
ArchiveAsync$push_result()is deprecated, use$finish_point()instead.
bbotk 1.10.1
CRAN release: 2026-06-13
- refactor:
is_dominated()now usesmoocore::is_nondominated()internally instead of a custom C implementation (#301). - refactor: Replace
emoa::dominated_hypervolumewithmoocore::hypervolumefor computing the hypervolume indicator.
bbotk 1.10.0
CRAN release: 2026-04-08
- chore: Minimum required version of
rushis now 1.0.0. Removed all compatibility workarounds for older versions. - fix: Remove non-API C entry points that caused CRAN warnings (#332).
- feat: Add
mlr_test_functionsdictionary with well-known 2-D optimization test functions (Branin, Rosenbrock, Himmelblau, Rastrigin, etc.) and sugar functionsotfun()/otfuns().
bbotk 1.9.0
CRAN release: 2026-02-28
- feat: Allow
"learn"tag (direction=0) alongside minimize/maximize inCodomain. - feat: Add new base class
EvalInstancefrom whichOptimInstancenow inherits.EvalInstancekeeps information about a process that evaluates anObjectivewhile not necessarily optimizing it. - feat: Exporting formerly internal
choose_search_space()function. - feat: Use
mlr3miscerror classes for errors and warnings. - compatibility: Compatible with
rush1.0.0. - fix: Terminator print method works correctly now.
bbotk 1.8.0
CRAN release: 2025-11-06
- feat: Add
on_optimizer_queue_before_evalandon_optimizer_queue_after_evalstages toCallbackAsyncandCallbackBatch. - fix: Start phase of
rushworker.
bbotk 1.7.1
CRAN release: 2025-10-24
fix: Imbalanced protection and casting in C code. fix: Load required packages in worker loop.
bbotk 1.7.0
CRAN release: 2025-10-10
- BREAKING CHANGE: Replace
OptimizerBatchLocalSearchwith a faster C implementation. - feat: Add
parparameter toOptimizerGenSA. - BREAKING CHANGE: Replace
startparameter fromOptimizerNloptrwithx0parameter. - feat: Expose internal termination criteria of
Optimizers. - feat: Store required packages in
Objective$packages. - feat: Fail queued and running points when optimization is terminated.
- fix: Pass
n_workerstorush. - feat: Kill
rushworker after optimization. - feat: Add tiny logging mode.
bbotk 1.6.0
CRAN release: 2025-06-03
- BREAKING CHANGE: The mlr3 ecosystem has a base logger now which is named
mlr3. Themlr3/bbotklogger is a child of themlr3logger and is used for logging messages from thebbotkandmlr3tuningpackage. - feat: Classes are now printed with the
clipackage. - fix: Prevent switching of
xssandconstants. - fix: Add safeguard on
OptimizerNloptrbounds. - feat: Allow numerical gradient approximation in
OptimizerNloptr.
bbotk 1.5.0
CRAN release: 2024-12-17
- compatibility: irace 4.1.0
- compatibility: rush 0.2.0
- refactor: Replace
Codomain$maximization_to_minimizationwith$directionfield. - feat: Save
ArchiveAsyncto adata.tablewithArchiveAsyncFrozen.
bbotk 1.4.0
CRAN release: 2024-11-26
- feat: Add
OptimizerBatchChainthat runs multiple optimizers sequentially. - refactor: Only pass
extrato$assign_result().
bbotk 1.3.0
CRAN release: 2024-11-07
- feat: Add new stage
on_result_begintoCallbackAsyncTuningandCallbackBatchTuning. - refactor: Rename stage
on_resulttoon_result_endinCallbackAsyncTuningandCallbackBatchTuning. - docs: Extend the
CallbackAsyncTuningandCallbackBatchTuningdocumentation.
bbotk 1.2.0
CRAN release: 2024-10-25
- feat:
ContextBatchandContextAsynchave aresult_extrafield now to access additional results passed to the instance. - refactor: Additional information are passed with
extratoOptimInstance$assign_result().
bbotk 1.1.1
CRAN release: 2024-10-15
- feat: The optimizers passes additional information to
OptimInstance$assign_result()method.
bbotk 1.1.0
CRAN release: 2024-09-09
- docs: Move vignette to mlr3book.
- feat: Add hypervolume stagnation terminator
trm("stagnation_hypervolume"). - feat Add local search optimizer
opt("local_search"). - refactor: Remove unused fields from callbacks.
- fix: Add
"on_optimization_end_batch"stage toCallbackBatch.
bbotk 1.0.0
CRAN release: 2024-06-28
- feat: Introduce asynchronous optimization with the
OptimizerAsyncandOptimInstanceAsyncclasses. - BREAKING CHANGE: The
Optimizerclass isOptimizerBatchnow. - BREAKING CHANGE: The
OptimInstanceclass and subclasses areOptimInstanceBatch*now. - BREAKING CHANGE: The
CallbackOptimizationclass isCallbackBatchnow. - BREAKING CHANGE: The
ContextOptimizationclass isContextBatchnow. - BREAKING CHANGE: Remove
ArchiveBestclass andkeep_evalsparameter fromOptimInstance.
bbotk 0.8.0
CRAN release: 2024-02-29
- fix:
OptimizerIracefailed with logical parameters and dependencies. - refactor: Optimize the runtime of
archive$best()method and add ties method. - compatibility: Work with new paradox version 1.0.0
bbotk 0.7.3
CRAN release: 2023-11-13
- fix:
OptimInstance$print()errored when the search space was empty.
bbotk 0.7.2
CRAN release: 2022-12-08
- fix: Standalone
TunerandFSelectorwere rejected byContextBatch.
bbotk 0.7.1
CRAN release: 2022-11-30
- feat: Data unrelated to a specific point evaluation can be written to
Archive$data_extra.
bbotk 0.7.0
CRAN release: 2022-11-05
- fix:
Terminator$format(with_params = TRUE)printed an empty list when no parameter was set. - refactor:
OptimizerIraceautomatically added theinstancesparameter toObjective$constants. From now on, theinstancesparameter can be also set manually. - BREAKING CHANGE:
branin(xs)is nowbranin(x1, x2, noise)andbranin_wu(x1, x2, fidelity). - feat: Add
ObjectiveRFunManythat can evaluate a list of configurations with a user supplied function. - fix: If all configurations were missing a parameter,
ObjectiveRFunDt$eval_many()did not create a column withNAfor the missing parameter. - refactor: The default of
digitsinOptimizerIraceis 15 now to avoid rounding errors. - refactor: The bounds of double parameters were processed with only 4 decimal places in
OptimizerIrace. By default, the bounds of double parameters are represented with 15 decimal places now. Thedigitsparameter ofOptimizerIracealso changes number of decimal places of the bounds now.
bbotk 0.6.0
CRAN release: 2022-10-25
- fix:
OptimizerIracedid not work with parameters with multiple dependencies. - feat: Add new callback that backups the archive to disk to
mlr_callbacks. - feat: Create custom callbacks with the
callback_batch()function.
bbotk 0.5.4
CRAN release: 2022-08-25
- feat: Add
OptimizerFocusSearchthat performs a focusing random search.
bbotk 0.5.2
CRAN release: 2022-04-04
- refactor: The
$print()method ofOptimInstanceomits unnecessary columns now. - fix: The
$clear()method ofOptimInstanceraised an error. - fix: The
$clear()method ofArchivemissed to reset the$start_timefield. - feat:
OptimizerandTerminatorobjects have the optional field$labelnow. - feat:
as.data.table()functions for objects of classDictionaryhave been extended with additional columns. - feat: Add a
as.data.table.DictionaryTerminator()function.
bbotk 0.5.1
CRAN release: 2022-02-25
- fix: The return of the
$.status()method ofTerminatorRunTimeandTerminatorClockTimewas not in a consistent unit. The return is in seconds from now on. - fix: The number of evaluations was recorded as 0 in the log messages when the search space was empty.
- feat: Add a
as.data.table.DictionaryOptimizer()function. - feat: New
$help()method which opens the manual page of anOptimizer.
bbotk 0.5.0
CRAN release: 2022-01-19
- feat: Add
$nds_selection()method toArchive. - feat: New
Codomainclass that allows extra parameters. - refactor: Objective values were automatically named. From now on, only unnamed returns of
ObjectiveRFunare named. - fix:
OptimInstance,ArchiveandObjectiveobjects were not cloned properly. - refactor: The fields
$param_classes,$propertiesand$packagesofOptimizerobjects are read-only now. - feat: The
branin()function is exported now.
bbotk 0.4.0
CRAN release: 2021-09-13
- feat: The search space and domain can now be empty.
- feat: The budget of
TerminatorEvalscan now be changed depending on the dimension of the search space with the parameterk. - feat: Add
bb_optimize()function. - feat: Add
OptimizerIracewhich callsirace::iracefrom theiracepackage.
bbotk 0.3.1
CRAN release: 2021-03-12
- feat: Add
$clear()method toOptimInstanceto reset the instance. - refactor: Prettier
$print()methods. - feat: Assertions on overlapping and reserved names in domain and codomain.
bbotk 0.3.0
CRAN release: 2021-01-23
- feat: The check of points and results can now be disables with the
check_valuesflag inOptimInstance,OptimInstanceSingleCrit,OptimInstanceMultiCrit,ObjectiveRFunandObjectiveRFunDt. - refactor: The
data.tablewithin theArchivecan now be accessed with$data. - refactor: The
mparameter ofArchive$best()is renamed tobatch. - feat: New
ArchiveBestclass which only stores best scoring evaluation instead of all evaluations - refactor: The runtime is reduced when
ObjectiveRFunDtis used with a domain without trafo. - fix: Add support for
ParamUtyinOptimizerDesignPoints. - feat: The start points for
OptimizerCmaesandOptimizerNloptrcan now be randomly created or from center of the search space. - feat: The
$optimize()method supports progress bars via the packageprogressr.
bbotk 0.2.2
CRAN release: 2020-10-08
- refactor: Remove dependency on orphaned package
bibtex. - feat: Add
OptimizerCmaeswhich callsadagio::pureCMAESfrom theadagiopackage.