← Back to all sparks
B

bbotk

ANALYTICS
Velocity2.5

Black-box optimization toolkit providing the tuning backend for mlr3

bbotk is generalizing from an optimizer toolkit into an evaluation framework.

black-box optimizationmlr3async executionapi deprecationhyperparameter tuning
Current state
bbotk is the black-box optimization backend behind mlr3 tuning: search spaces, terminators, archives, and an async layer built on rush. Recent releases pair steady async-API buildout with removal of the deprecated arguments that preceded it. The 1.9.0 release introduced EvalInstance as a base class for OptimInstance, separating evaluating an objective from optimizing one.
Where it's heading
Two threads run through the visible history. The first is async optimization maturing: ArchiveAsync gained a full push/finish/fail vocabulary over rush tasks in 1.11.0, and 1.12.0 deleted the deprecated extra arguments it replaced. The second is dependency consolidation, with custom C hypervolume code handed to moocore and rush pinned to 1.0.0, trimming maintenance surface as the async path becomes the default.
Prediction
The deprecation removals in 1.12.0 suggest the async archive API is now treated as settled; the next releases most likely build on EvalInstance rather than continuing to churn ArchiveAsync.

Recent moves

  1. 24d ago

    Deprecated extra argument removed from ArchiveAsync methods

    Removes the deprecated extra argument from six ArchiveAsync methods in favour of the typed xss_extra/xs_extra/yss_extra/ys_extra arguments. A breaking cleanup that marks the async archive API as settled.

    View source ↗
  2. 1mo ago

    ArchiveAsync gains full push/finish/fail task API over rush

    ArchiveAsync gains a complete task vocabulary over the rush API, with push, finish and fail for both single points and batches, and stops calling the deprecated rush$fail_tasks() during termination cleanup. This is the release that made the async archive usable directly rather than only through push_result().

    View source ↗
  3. 2mo ago

    Dominance and hypervolume computation moved to moocore

    Swaps a custom C dominance implementation and emoa's hypervolume for moocore equivalents. Fewer bespoke numerics to maintain, with no change users would see.

    View source ↗
  4. 4mo ago

    mlr_test_functions adds standard optimization benchmarks

    Adds mlr_test_functions, a dictionary of standard 2-D optimization benchmarks such as Branin, Rosenbrock, Himmelblau and Rastrigin, with otfun()/otfuns() sugar, alongside a rush 1.0.0 floor and a CRAN warning fix. Shipping benchmarks in-package lowers the setup cost of comparing optimizers.

    View source ↗
  5. 5mo ago

    EvalInstance base class separates evaluation from optimization

    ⚡ SPARK

    Introduces EvalInstance as a base class for OptimInstance and a direction=0 'learn' tag in Codomain, both letting the framework describe evaluating an objective without optimizing it. This is the structural move the later async and archive work sits on top of.

    View source ↗
  6. 8mo ago

    Fix: conditions now work with OptimizerLocalSearch

    A single fix so arbitrary conditions work with OptimizerLocalSearch. Patch-level, with no change to the API surface.

    View source ↗