2016-04-01 12 views
1

Ich benutze die Bibliothek NLopt, mit Python-Bindungen.NLopt ungültiges Argument

opt = nlopt.opt(nlopt_algorithm, N) 
opt.set_max_objective(func_to_maximize) 
opt.set_lower_bounds(lower_bounds) 
opt.set_upper_bounds(upper_bounds) 
opt.set_maxeval(100) 
xopt = opt.optimize(x0) 

Wenn ich nlopt_algorithm = nlopt.LN_SBPLX verwende, funktioniert es gut. Allerdings, wenn ich nlopt_algorithm = nlopt.GN_DIRECT_L verwenden, schlägt es mit dem Fehler:

ValueError: nlopt invalid argument

Weiß jemand, warum das so ist? Fehle ich einige Argumente?

+0

Haben Sie einen anderen globalen Optimierungsalgorithmus ausprobiert? GN_DIRECT_L funktioniert gut für mich in C, aber wenn ich mich richtig erinnere, hatte ich einen ähnlichen Fehler bei der Auswahl seiner unskalierten Variante. – Tony

+0

Andere globale Optimierung fehlgeschlagen. Lassen Sie mich überprüfen, es könnte ein Problem mit der Festlegung der gebundenen Einschränkungen sein. – DevShark

+0

Danke @Tony. Das liegt daran, dass meine Einschränkungen nicht für alle Parameter definiert wurden. – DevShark

Antwort

1

Das Problem kam von der Tatsache, dass nicht alle meine Variablen Beschränkungen definiert hatten. Für die globale Optimierung benötigt NLopt für alle Parameter eine obere und eine untere Grenze.