Hello,
i麓m working on a model (see issue #321) with two noisy outcomes. The first one is the objective, the second one the constraint. I defined a outcome constraint similar to "Outcome2 >= 0.99". Outcome2 can be a maximum of 1.0 as it is a percentage value.
While the GP-EI Optimization runs, the constraint does not apply correctly. The shown outcomes are close to 0.99, like 0.97 (+/- 0.15 SEM), but still below.
Could this be a rounding problem or something like that?
Hi @Pzmijewski ! This is a great question.
As we collect data near the constraint, we will suggest arms that violate the constraint (it's unknowable a priori whether a candidate will violate the constraint or not). If the constraint is binding (which it often is if there are real tradeoffs) then we will need to explore quite aggressively near the bound in order to get performance, so inevitably there will be a good number of trials that don't satisfy the constraints during the optimization.
@Jakepodell is right, and just to elaborate on this a bit:
We expect that we will suggest some arms that violate the constraint. If we knew ahead of time what arms would violate, we'd be done, and there would be no need to run the optimization!
If you have truly hard constraints that must _never_ be violated during the optimization, then Bayesian optimization with black box constraints is just not going to work for you, unfortunately.
However, if you are ok with having your constraints violated during the optimization, then after its done, you can pick the best arm among the feasible observed points -- the ones that didn't violate -- as your "launch candidate".
Let us know if this helps or if you have further questions!
Hi @Jakepodell,
hi @ldworkin,
thank you! I have now understood what it was all about. :-)
greetings
Philipp
Most helpful comment
Hi @Pzmijewski ! This is a great question.
As we collect data near the constraint, we will suggest arms that violate the constraint (it's unknowable a priori whether a candidate will violate the constraint or not). If the constraint is binding (which it often is if there are real tradeoffs) then we will need to explore quite aggressively near the bound in order to get performance, so inevitably there will be a good number of trials that don't satisfy the constraints during the optimization.