Skip to content

Implementation code for the paper "A Bi-Objective Acquisition Function for Bayesian Global Optimization"

License

Notifications You must be signed in to change notification settings

FranciC19/biobj_acquistion_function_for_BO

Repository files navigation

Python 3.11 license

A Bi-Objective Acquisition Function for Batch Bayesian Global Optimization

Implementation of the Bi-Objective Acquisition Function Methodology proposed in

Carciaghi, F., Magistri, S., Mansueto, P. & Schoen F., A Bi-Objective Optimization Based Acquisition Strategy for Batch Bayesian Global Optimization. arXiv Pre-Print (2024).

If you have used our code for research purposes, please cite the publication mentioned above. For the sake of simplicity, we provide the Bibtex format:

@misc{carciaghi2024biobjective,
      title={A Bi-Objective Optimization Based Acquisition Strategy for Batch Bayesian Global Optimization}, 
      author={Francesco Carciaghi and Simone Magistri and Pierluigi Mansueto and Fabio Schoen},
      year={2024},
      eprint={2402.00726},
      archivePrefix={arXiv},
      primaryClass={math.OC}
}

Installation

In order to execute the code, you need an Anaconda environment. We provide a YAML file in order to facilitate the installation of the latter. Open an Anaconda terminal in the project root folder and execute the following command. Note that the code was experimented in a computer with Ubuntu 22.04.

conda env create -f env_install.yml

Main Packages

  • python v3.10.4
  • botorch v0.8.1
  • nsma v1.0.12
  • tensorflow v2.11.0
  • gurobipy v9.5.2

Gurobi Optimizer

In order to run some parts of the code, the Gurobi Optimizer needs to be installed and, in addition, a valid Gurobi licence is required.

Usage

In utils/args_manager.py you can find all the possible arguments. Given an Anaconda terminal opened in the root folder, an example of code execution could be the following:

python -u main.py -acq_m nsma --n_batch 20 --batch_size 3 --selection_type X --exp_name exp_name --function_name Rastrigin

The execution results are saved in the experiments folder. If the latter does not exist, it is created at the beginning of the code execution.

Plot results

In order to get plots of the results obtained by one code execution, you can run plot_function_eval.py: all figures will be created and saved in plots folder. An example of terminal command could be the following:

python plot_function_eval.py --exp_paths experiments/exp_name

In case you want to plot the results of more than one experiment together, you can provide a list of experiment paths as follows:

python plot_function_eval.py --exp_paths experiments/exp_name_1 experiments/exp_name_2 experiments/exp_name_3

in case you have run three different experiments.

About

Implementation code for the paper "A Bi-Objective Acquisition Function for Bayesian Global Optimization"

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages