Bayesian optimization

I try to understand Bayesian optimization, which I want to use for the estimation of the power coefficient of a wind turbine which is a function of (at least) the wind speed and declines over the years.

Can it be used as alternative to neural networks and machine learning, or just as extension?

There are also very different packages for Bayesian optimization, and I am not so sure about the differences, e.g.

  1. RxInfer.jl
  2. BayesianOptimization.jl
  3. Hyperopt.jl

Any comments from more experienced people?

I want to use for the estimation of the power coefficient of a wind turbine

Is your loss function any of: smooth, convex, differentiable?

Other alternatives to consider are:

Well, I know that it is very costly and noisy. The level of noise depends on the wind turbulence. Probably it is convex. If it is differentiable? Perhaps in theory, but in practice I need to do an experiment to obtain a new value, and each experiment probably takes one or 10 minutes of time and creates real costs (a few EUR). I only get the value and not the differential. I used BlackBoxOptim and NLopt in the past, but I do not think they are a very good choice for my problem. I know the physics, so I do not have a black box. Only a number of parameters are unknown, and the number is not very large, perhaps 10 … (might be more). And at a given point in time (one set of experiments) I mainly look for one of these parameters (or a linear combination of two of them).

“‘black-box” optimization refers to not knowing the derivatives, convexity, etcetera. That sounds like you.

In any optimization problem, you normally at least know how to compute the function. In your case it is even worse if you need to conduct an actual experiment to get function values?

Expensive function evaluations, lack of derivatives, and noise are an unfortunate combination for optimization, especially if you have 10+ parameters. Realistically speaking, how many function evaluations can you afford?

You may find this thread useful Optimizing a physics experiment.


Yes. The experiment can be automated, though. I need to identify at least one parameter for each wind speed. How many points are needed to approximate the wind speed dependency I do not know yet, perhaps 10 are sufficient.

On the other hand, most of the time these parameters do not change fast, it might be sufficient if I update them once per month. And perhaps 30 initial experiments and 10 extra per month and parameter are sufficient to track the changes. But I need an estimate for the accuracy of the identified values, even better if I have the probability distribution. An accuracy of ± 5e-3 is probably good enough.

Thanks, very useful indeed!

1 Like

For a very brief introduction to the package you can have a look at section 4.4 of this article.

1 Like

Still need to figure out how to use BayesianOptimization under the assumption the function of which I try to find the minimum is convex, in other words global optimization is not required…