Paper is here: https://doi.org/10.1038/s41524-022-00859-8
Cite the following article to refer to this work.
@article{wo-npjcm2022,
title = {{Bayesian} Optimization with Experimental Failure for High-Throughput Materials Growth},
author = {Yuki K. Wakabayashi and Takuma Otsuka and Yoshiharu Krockenberger and Hiroshi Sawada and Yoshitaka Taniyasu and Hideki Yamamoto},
journal = {npj Computational Materials},
volume = {8},
number = {180},
doi = {10.1038/s41524-022-00859-8},
year = {2022}
}
Use run_BO.py
to carry out BO and display the result.
- Example 1: method F
$ python run_BO.py --num 100 --init 5 --run 3 --obj circle
executes BO until having 100
observations with 5
initial observations for 3
times to average the results.
- Example 2: @0
$ python run_BO.py --floor 0
--floor {value}
option specifies the constant value to replace failed observations. By default, floor padding trick is employed.
- Example 3: other objective functions
$ python run_BO.py --obj hole
runs experiment with the Hole function.
- Example 4: put Gaussian observation noise
$ python run_BO.py --alpha 0.005
adds a Gaussian noise to the observation with its variance being 0.005
.
- Example 5: use binary classifier
$ python run_BO.py --binary --obj hole
runs method FB.
Add --binary
to enable the binary classifier. Can be combined with --floor
option. For example, --binary --floor 0
runs B@0.
Codes are confirmed to run with the following libraries. Likely to be compatible with newer versions.
python
:3.7.9
numpy
:1.19.2
scipy
:1.5.2
sklearn
:1.0.2
torch
:1.8.1
gpytorch
:1.5.1
matplotlib
:3.5.0
README.md
: This file.LICENSE.md
: Document of agreement for using this sample code. Read this carefully before using the code.run_BO.py
: Script to execute BO sequence.BO_core.py
: Implements BO class.obj_func.py
: Implements objective functions.visualize.py
: Contains some functions to plot optimization results.lhsmdu.py
: Latin hypercube sampling package for acquisition function. Repository: https://dx.doi.org/10.5281/zenodo.2578780 Paper:http://dx.doi.org/10.1016%2Fj.jspi.2011.09.016