---
title: Himmelblau Benchmark
jupyter: python3
---
## Imports
```{python}
#| papermill: {duration: 2.909057, end_time: '2024-10-10T20:34:41.096329', exception: false, start_time: '2024-10-10T20:34:38.187272', status: completed}
#| tags: []
import os
import pandas as pd
import bofire.strategies.api as strategies
from bofire.benchmarks.single import Himmelblau
from bofire.data_models.acquisition_functions.api import qLogEI
from bofire.data_models.api import Domain
from bofire.data_models.strategies.api import RandomStrategy, SoboStrategy
from bofire.runners.api import run
SMOKE_TEST = os.environ.get("SMOKE_TEST")
```
## Random Optimization
```{python}
#| papermill: {duration: 0.274635, end_time: '2024-10-10T20:34:41.373576', exception: false, start_time: '2024-10-10T20:34:41.098941', status: completed}
#| tags: []
def sample(domain):
datamodel = RandomStrategy(domain=domain)
sampler = strategies.map(data_model=datamodel)
sampled = sampler.ask(10)
return sampled
def best(domain: Domain, experiments: pd.DataFrame) -> float:
return experiments.y.min()
random_results = run(
Himmelblau(),
strategy_factory=lambda domain: strategies.map(RandomStrategy(domain=domain)),
n_iterations=50 if not SMOKE_TEST else 1,
metric=best,
initial_sampler=sample,
n_runs=1,
n_procs=1,
)
```
## SOBO (GPEI) Optimization
```{python}
#| papermill: {duration: 0.314577, end_time: '2024-10-10T20:34:41.695714', exception: true, start_time: '2024-10-10T20:34:41.381137', status: failed}
#| tags: []
def strategy_factory(domain: Domain):
data_model = SoboStrategy(domain=domain, acquisition_function=qLogEI())
return strategies.map(data_model)
bo_results = run(
Himmelblau(),
strategy_factory=strategy_factory,
n_iterations=50 if not SMOKE_TEST else 1,
metric=best,
initial_sampler=sample,
n_runs=1,
n_procs=1,
)
```