Constrained multi-objective optimization with qNEHVI and qParEGO
Constrained, Parallel, Multi-Objective BO in BoTorch with qNEHVI, and qParEGO
In this tutorial, we illustrate how to implement a constrained multi-objective (MO) Bayesian Optimization (BO) closed loop in BoTorch.
In general, we recommend using Ax for a simple BO setup like this one,
since this will simplify your setup (including the amount of code you need to write)
considerably. See here
for an Ax tutorial on MOBO. If desired, you can use a custom BoTorch model in Ax,
following the Using BoTorch with Ax
tutorial. Given a MultiObjective
, Ax will default to the NEHVI acquisiton function.
If desired, this can also be customized by adding
"botorch_acqf_class": <desired_botorch_acquisition_function_class>,
to the
model_kwargs
.
We use the parallel ParEGO (ParEGO) [1] and parallel Noisy Expected Hypervolume Improvement (NEHVI) [2] acquisition functions to optimize a synthetic C2-DTLZ2 test function with objectives, constraint, and parameters. The two objectives are
where and represents the last elements of . Additionally, the C2-DTLZ2 problem uses the following constraint: