Skip to content

Commit

Permalink
AISTATS code upload
Browse files Browse the repository at this point in the history
  • Loading branch information
Aryan authored and Aryan committed Mar 16, 2023
0 parents commit e2a6427
Show file tree
Hide file tree
Showing 10 changed files with 1,931 additions and 0 deletions.
22 changes: 22 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Bayesian Optimization over High-Dimensional Combinatorial Spaces via Dictionary-based Embeddings
- This repository contains source code for the [AISTATS 2023](https://aistats.org/aistats2023/index.html) paper [Bayesian Optimization over High-Dimensional Combinatorial Spaces via Dictionary-based Embeddings](https://arxiv.org/abs/2303.01774).

### How to run the code?
- packages/libraries required to run the code are listed in requirements.txt.
- runMaxSAT.ipynb notebook shows a way to run the code for MaxSAT synthetic function (60 binary variables)
- `bodi/run_experiment.py` is the main entry point for the code
- BODi algorithm is run by calling `run_experiment` method from `bodi/run_experiment.py`
- main parameters required for `run_experiment` are:
- `n_prototype_vectors`: no of dictionary elements/anchor points used in the surrogate model, we recommend keeping it to 64 or 128.
- `evalfn`: name of the objective-function/problem to optimize. For a candidate definition, please see LABS/Ackley53/MaxSAT60/SVM in `bodi/test_functions.py`.
- `max_evals`: maximum number of evaluations/calls to the objective function.
- `n_initial_points`: no. of input points to initialize the BO surrogate model, we recommended keeping it to 20 unless the evaluation budget is more expensive.
- `n_binary`: no of binary variables in the input for the given objective, for e.g. MaxSAT has 60 binary variables.
- `n_continuous`: no of continuous/ variables in the input for the given objective, for e.g. Ackley53 has 3 continuous variables.
- `n_replications`: number of times to rerun the code, this is mostly useful for generating multiple runs and getting mean and error bars of the BO performance.
- `batch_size`: no of batch evaluations in each BO round.


- simple way to add a new objective-function/problem is by creating a class similar to LABS or Ackley53 in `bodi/test_functions.py` and then call it in the `run_experiment` method of `run_experiment.py` (line 98-113).
- acquisition function optimization routines for both binary/mixed spaces are defined in `bodi/optimize.py`.
- dictionary kernel with both diverse random and binary wavelet dictionaries are defined in `bodi/dictionary_kernel.py`.
Empty file added bodi/__init__.py
Empty file.
Loading

0 comments on commit e2a6427

Please sign in to comment.