/SnAKe

Repository for paper: "SnAKe: Bayesian Optimization with Pathwise Exploration".

Primary LanguagePythonBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

SnAKe

Repository that includes the code for the paper: "SnAKe: Bayesian Optimization with Pathwise Exploration". The paper was published in NeurIPS 2022. Please cite as:

  • Folch, Jose Pablo, Shiqiang Zhang, Robert M. Lee, Behrang Shafei, David Walz, Calvin Tsay, Mark van der Wilk, and Ruth Misener. "SnAKe: Bayesian Optimization with Pathwise Exploration." Advances in Neural Information Processing Systems 35 (2022): 35226-35239.

The BibTeX reference is:

@inproceedings{folch2022snake,
 author = {Folch, Jose Pablo and Zhang, Shiqiang and Lee, Robert and Shafei, Behrang and Walz, David and Tsay, Calvin and van der Wilk, Mark and Misener, Ruth},
 booktitle = {Advances in Neural Information Processing Systems},
 pages = {35226--35239},
 title = {SnAKe: Bayesian Optimization with Pathwise Exploration},
 volume = {35},
 year = {2022}
}

The code allows for reproducibility of the results and figures shown in the paper. To reproduce any experimental run, use the corresponding experiment script, these are:

  • experiment.py : synchronous, synthetic benchmark
  • experiment_async.py : asynchronous, synthetic benchmark
  • experiment_snar.py : synchronous, SnAr benchmark
  • experiment_snar_async.py : asynchronous, SnAr benchmark
  • ypacarai_lake.py : Ypacarai experiments

For the figures you can use:

  • resampling_vs_pd_figure.py : Figure 1 and 10
  • create_graph.py : Figure 2
  • experiment_pt.py : Figure 8 and 9
  • ypacarai_lake.py : Figure 4 and 7

The rest of the files correspond to:

  • snake.py : Contains the main implementation of SnAKe, and the Random + TSP baseline.
  • bayes_op.py : Contains the implementation of classical Bayesian Optimization methods.
  • cost_functions.py : Defines the function used to calculate the cost in the SnAr benchmark.
  • functions.py : Defines all benchmark functions used in the paper.
  • gp_utils.py : Defines the GP class which is used by all methods in the paper.
  • sampling.py : Implementation of sampling method.
  • temperature_env.py : Defines the environment class that is used in all optimizations.

Contributors

Jose Pablo Folch. Funded by EPSRC through the Modern Statistics and Statistical Machine Learning (StatML) CDT (grant no. EP/S023151/1) and by BASF SE, Ludwigshafen am Rhein.