Skip to content

COBYLA freezes (though maxeval and maxtime are given) #370

Description

@tueda

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).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions