I have a kind of hard nonlinear optimization problem. 12 variables, I know the result of the function should be zero, but how to find the combination of 12 values that give a very low residual?
So far I tried Optim.jl and NLopt.jl. BFGS(linesearch=LineSearches.BackTracking(order=3)) gives the fastest result, but it is not accurate.
NLopt with :LN_BOBYQA works better, but it is very slow, and it also does not always converge.
So my preferred optimizer would have the following properties:
- do global optimization if it is stuck at a local minima, but only then
- use gradient based search otherwise
- use multiple cores
- terminate only if the norm of the residual is below a given threshold
Is there anything else I could try?