NUBO: A Transparent Python Package for Bayesian Optimisation
Mike Diessner Kevin Wilson Richard D. Whalley
NUBO, short for Newcastle University Bayesian Optimisation, is a Bayesian
optimisation framework for the optimisation of expensive-to-evaluate black-box
functions, such as physical experiments and computer simulators. Bayesian
optimisation is a cost-efficient optimisation strategy that uses surrogate
modelling via Gaussian processes to represent an objective function and
acquisition functions to guide the selection of candidate points to approximate
the global optimum of the objective function. NUBO itself focuses on
transparency and user experience to make Bayesian optimisation easily
accessible to researchers from all disciplines. Clean and understandable code,
precise references, and thorough documentation ensure transparency, while user
experience is ensured by a modular and flexible design, easy-to-write syntax,
and careful selection of Bayesian optimisation algorithms. NUBO allows users to
tailor Bayesian optimisation to their specific problem by writing the
optimisation loop themselves using the provided building blocks. It supports
sequential single-point, parallel multi-point, and asynchronous optimisation of
bounded, constrained, and/or mixed (discrete and continuous) parameter input
spaces. Only algorithms and methods that are extensively tested and validated
to perform well are included in NUBO. This ensures that the package remains
compact and does not overwhelm the user with an unnecessarily large number of
options. The package is written in Python but does not require expert knowledge
of Python to optimise your simulators and experiments. NUBO is distributed as
open-source software under the BSD 3-Clause licence.