Skip to content

Commit

Permalink
Readme example (#419)
Browse files Browse the repository at this point in the history
* sample correctly and make readme example mo

* review requests
  • Loading branch information
bertiqwerty authored Jul 15, 2024
1 parent dbec8bb commit bc75560
Showing 1 changed file with 24 additions and 19 deletions.
43 changes: 24 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,30 +75,35 @@ domain = Domain(
```

You can also use one of the many benchmarks available in BoFire.
Here, we use the Himmelblau benchmark to demonstrate the ask/tell interface for
proposing new experiments.
Here, we use the Detergent benchmark to demonstrate the ask/tell interface for
proposing new experiments with multi-objective Bayesian optimization.

```python
from bofire.benchmarks.single import Himmelblau

benchmark = Himmelblau()
samples = benchmark.domain.inputs.sample(10)
experiments = benchmark.f(samples, return_complete=True)

from bofire.data_models.strategies.api import SoboStrategy
from bofire.data_models.acquisition_functions.api import qNEI
import bofire.strategies.api as strategies
sobo_strategy_data_model = SoboStrategy(domain=benchmark.domain, acquisition_function=qNEI())

sobo_strategy = strategies.map(sobo_strategy_data_model)

sobo_strategy.tell(experiments=experiments)
sobo_strategy.ask(candidate_count=1)
from bofire.benchmarks.detergent import Detergent
from bofire.data_models.strategies.api import QnehviStrategy, RandomStrategy

# create benchmark
detergent = Detergent()
domain = detergent.domain

# create initial data with the random strategy while satisfying constraints
sampler = strategies.map(RandomStrategy(domain=domain))
initial_samples = sampler.ask(2)
experiments = detergent.f(initial_samples, return_complete=True)

# Bayesian optimization
mobo_strategy = strategies.map(QnehviStrategy(domain=domain))
n_experiments = 4
for _ in range(n_experiments):
mobo_strategy.tell(experiments=experiments)
candidates = mobo_strategy.ask(candidate_count=1)
experiments = detergent.f(candidates, return_complete=True)

# Print all told experiments
print(mobo_strategy.experiments)
```

This gives one step in the optimization loop. We can repeat this many times to
perform Bayesian optimization, exploring the space using intelligent strategies.

## Documentation

Documentation including a section on how to get started can be found under https://experimental-design.github.io/bofire/.
Expand Down

0 comments on commit bc75560

Please sign in to comment.