Open
Description
I guess setting maxeval
or maxtime
must guarantee that optimization algorithms finish anyway (or possibly raise an exception). With the following settings, opt.optimize()
never returns (though I can make a workaround, for example, by changing the algorithm or putting other stopping criteria).
import nlopt
import numpy as np
def f(x, _grad):
return (2 - np.cos(x[0]) + x[1] ** 2) ** 2
opt = nlopt.opt(nlopt.LN_COBYLA, 2)
opt.set_min_objective(f)
opt.set_maxeval(668) # doesn't seems to work
opt.set_maxtime(1.0) # doesn't seems to work
opt.optimize([0, 0]) # never returns
If I use opt.set_maxeval(667)
in the above code, then somehow it returns with the correct answer [0, 0]
.
Just in case, I am testing with the following versions (on Google Colab):
Python: 3.6.9
nlopt: 2.6.1
(I'm not sure why pip
doesn't pick up 2.6.2).
Metadata
Assignees
Labels
No labels