You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a problem? Please describe.
In https://github.com/CLIMADA-project/climada_python, we use Bayesian optimization for a calibration task. In our use case, we found it feasible to run the optimizer multiple times, switching between random samples and probing of the parameter space with a kappa decay. Since probing the space is relatively expensive in our case, we want to stop probing early if the optimization seems to only probe a local maximum with very little improvement.
We have been using the event subscription mechanism for that, which (in this library) was only used for logging and has been removed in v3. Now, there is no way of controlling the maximize algorithm while it runs, except manually creating random samples and probing. However, the maximize function does more and relies on private attributes for its functionality:
Describe the solution you'd like
Could the event subscription mechanism be re-introduced for users to control the maximize algorithm while it runs? If not, is there a recommended way of achieving it otherwise? Maybe deriving a new class from BayesianOptimization in our project?
Hey! Climada is very cool, I didn't know you used BO in there! :)
If I understand correctly, your goal is to have more fine-grained control over the maximization process. If that's the case, then I think you might be better served by manually using the BayesianOptimization.probe() and BayesianOptimization.suggest() functions (.maximize is essentially just a loop over these + some random initialization beforehand).
Activity
t-muser commentedon May 28, 2026
Hey! Climada is very cool, I didn't know you used BO in there! :)
If I understand correctly, your goal is to have more fine-grained control over the maximization process. If that's the case, then I think you might be better served by manually using the
BayesianOptimization.probe()andBayesianOptimization.suggest()functions (.maximizeis essentially just a loop over these + some random initialization beforehand).Do you think this would work for you?
LG aus Kreis 3 ;)
Till