I have a complex domain-specific process that accepts inputs:
- 10-500 inputs, where each input is of type:
- enum: choice between multiple string or numeric values
- int: integers
- float: floating point numbers
- boolean: can be considered a enum(0,1)
It outputs several dozen outputs that I have clubbed together with weights to form an output singular composite loss function.
- Is non-linear with an unknown polynomial degree
- Is discontinuous
- Can be evaluated quickly in parallel (<10 s per evaluation)
The third point above seems to make pure Bayesian Optimization a suboptimal choice for this problem, as per skopt:
If you do not have these constraints [f is expensive to evaluate], then there is certainly a better optimization algorithm than Bayesian optimization.
Should I be looking at constraint solvers, instead, since the inputs are well defined (if discontinuous)?
What is the difference between a constraint solver and a Bayesian optimizer in this case?
The real-world process is actually extremely time-consuming, but I have generated a decision-tree Regression model that evaluates predictions rather quickly.