secondmind-labs / trieste

A Bayesian optimization toolbox built on TensorFlow
Apache License 2.0
212 stars 41 forks source link

Allow hypervolume reference point to be less than anti-ideal #201

Open joelberkeley opened 3 years ago

joelberkeley commented 3 years ago

As a user, I want to be able to calculate the hypervolume with a reference point that's less than the anti-ideal point. This is so that I can emphasise certain regions of the Pareto front, or constrain certain objectives (did I word this last bit right?).

Describe alternatives you've considered The dominated region excluded by such a reference point could either not contribute to the overall hypervolume, or it could count as negative. @vpicheny and @joelberkeley prefer the latter, which implies that all reference points beyond the Pareto front would result in zero total hypervolume, rather than negative.

TsingQAQ commented 3 years ago

Tried to think a little how could have this functionality with existing structure of Pareto and come up with one approach that might help discuss.

It seems the main functionality that will be affected is hypervolume_indicator and hypercell_bounds. The hypervolume indicator can be trivially extended by just truncating those negative hv contributions to zero (e.g., an implementation refer here).

As for the hypercell_bounds, it seems a bit more complicated by modify gathering from current stored index containing all original front. A lazy way could be to instantiate another Pareto which its front is only those the reference point dominated one (see this line). this partially works but not support on the situation when the reference point has dominated all of the front (this is sometimes needed especially in constraint scenario, for instance when no point has satisfied the constraint), as an empty input of observations is not allowed for Pareto.

Here is a draft branch for this functionality.