vaithak / pygpbo

A python library for optimizing black-box functions using bayesian optimization. Contains support for optimizing high dimensional functions using linear-embedding based techniques.
MIT License
2 stars 1 forks source link
bayesian-optimization hacktoberfest hacktoberfest2021 library optimization

pygpbo

Implementation and review of techniques to scale bayesian optimization to high dimensions.

vaithak codecov

Example of running standard bayesian optimization on Branin function:

# Reference: https://www.sfu.ca/~ssurjano/branin.html

import pygpbo
import numpy as np
def F(p1,p2,noise=0):
  return -(np.power((p2-5.1/(4*np.power(3.14,2))*np.power(p1,2)+5/3.14*p1-6),2)+10*(1-1/(8*3.14))*np.cos(p1)+10) + noise*np.random.randn()

bounds = {'p1': (-5, 10), 'p2': (0, 15)}

optimizer = pygpbo.BayesOpt(F, bounds)
optimizer.add_custom_points([{'p1': -4, 'p2': 1}, {'p1': -3, 'p2': 5},{'p1': 9, 'p2': 10},{'p1': 4, 'p2': 14}])

optimizer.maximize(n_iter=30)
print("Optimum point and value: ", optimizer.max_sample)

# Output seen: note that the optimum point can differ as branin has global minima at 3 different points
"""
Optimum point and value:  ({'p1': 9.474934424992359, 'p2': 2.373669396349481}, array([-0.43209275]))
"""

images/Branin_StdBO.png

Comparison of techniques for High Dimensional BO

combined