Trust Region Bayesian Optimization (Turbo)

Trust Region Bayesian Optimization (Turbo)#

Type of optimizer algorithm: continuous inputs Base (python 3.9 in conda)

About#

This is an implementation of Trust Region Bayesian Optimization (Turbo) as described in [Eriksson et al., 2019]. This implementation is based on the Turbo tutorial of botorch.

How to run#

import numpy as np

from poli.objective_repository import ToyContinuousBlackBox

from poli_baselines.solvers.bayesian_optimization.turbo import (
    Turbo,
)


f_ackley = ToyContinuousBlackBox(function_name="ackley_function_01", n_dimensions=10)

x0 = np.random.randn(10).reshape(1, -1).clip(-2.0, 2.0)
y0 = f_ackley(x0)

bo_solver = Turbo(
    black_box=f_ackley,
    x0=x0,
    y0=y0,
)

bo_solver.solve(max_iter=10)

See more#

References#

If you use this solver, we expect that you cite the following resources:

[1] Eriksson, D., Pearce, M., Gardner, J., Turner, R. D., & Poloczek, M. (2019). Scalable Global Optimization via Local Bayesian Optimization. Advances in Neural Information Processing Systems, 32. https://proceedings.neurips.cc/paper/2019/hash/6c990b7aca7bc7058f5e98ea909e924b-Abstract.html

[2] González-Duque, M., Bartels, S., & Michael, R. (2024). poli: a libary of discrete sequence objectives [Computer software]. MachineLearningLifeScience/poli


@inproceedings{Eriksson:Turbo:2019,
    title={Scalable Global Optimization via Local Bayesian Optimization},
    volume={32},
    url={https://proceedings.neurips.cc/paper/2019/hash/6c990b7aca7bc7058f5e98ea909e924b-Abstract.html},
    booktitle={Advances in Neural Information Processing Systems},
    publisher={Curran Associates, Inc.},
    author={Eriksson, David and Pearce, Michael and Gardner, Jacob and Turner, Ryan D and Poloczek, Matthias},
    year={2019}
}

@software{Gonzalez-Duque:poli:2024,
author = {González-Duque, Miguel and Bartels, Simon and Michael, Richard},
month = jan,
title = {{poli: a libary of discrete sequence objectives}},
url = {https://github.com/MachineLearningLifeScience/poli},
version = {0.0.1},
year = {2024}
}