AbstractBayesOpt.jl is a general framework for Bayesian Optimisation in Julia. It relies on abstract classes for surrogate models, acquisition functions and domain definitions. The codebase is entirely written in Julia.
The library is designed to solve minimisation problems of the form:
where
The library uses Bayesian Optimisation (BO) to iteratively propose evaluation points
- Modelling the objective function with a surrogate model (e.g., Gaussian Process).
- Using an acquisition function to select the next query point that balances exploration and exploitation.
- Updating the surrogate with new observations and repeating until a stopping criterion is met.
You can install AbstractBayesOpt.jl directly from this repository via the Julia General Registry
using Pkg
Pkg.add("AbstractBayesOpt")
We currently have three main abstract interfaces that work with our BO loop:
AbstractAcquisition
: Interface to implement for an acquisition function to be used in AbstractBayesOpt.AbstractSurrogate
: Interface to implement for a surrogate to be used in AbstractBayesOpt.AbstractDomain
: Interface to implement for the optimisation domain to be used in AbstractBayesOpt.
AbstractBayesOpt.jl defines the core abstractions for building Bayesian optimisation algorithms. To add a new surrogate model, acquisition function, or domain, implement the following interfaces.
We refer to the documentation for an extensive description of the features of the library, including the different subtypes we have implemented, as well as some tutorials and the public API.
We follow the practices from ColPrac, and we warmly welcome any contribution to fix bugs, or implement new features. Please submit an issue to start working on AbstractBayesOpt.jl !