-
Hi all, I am trying to determine if my use case is supported in Botorch. I have two parameters from a design space which also contains other categorical/range parameters: I would like to restrict the values of x2 which can be selected, depending on which value of x1 is chosen. For example, if x1 = A, then x2 is restricted to 0-80. If x1 = B, then x2 can take the full 0 -100, C can go 20-60, etc. I looked at https://github.com/pytorch/botorch/blob/main/botorch/optim/optimize.py#L451-L456 and it's not clear whether this type of "mixed" parameter constraint is supported. Thanks for any help you can provide :) |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 4 replies
-
This is a "hierarchically constrained" parameter space. This is generally not super easy to handle, and we don't have great support for this in BoTorch today. The naïve approach would be to use Pseudocode:
where One question I have regarding this is whether in your setting cc @saitcakmak who has done some work on hierarchical search spaces in the past. |
Beta Was this translation helpful? Give feedback.
This is a "hierarchically constrained" parameter space. This is generally not super easy to handle, and we don't have great support for this in BoTorch today. The naïve approach would be to use
fixed_features
and enumerate the discrete chocies: https://github.com/pytorch/botorch/blob/main/botorch/optim/optimize.py#L429Pseudocode:
where
get_bounds(x1)
returns the respective bounds onx2
(andx1
, but those doesn't mat…