2016-04-01 10 views
1

私はPythonバインディングでNLoptライブラリを使用しています。無効な引数NLopt

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) 

nlopt_algorithm = nlopt.LN_SBPLXを使用するとうまくいきます。私はnlopt_algorithm = nlopt.GN_DIRECT_Lを使用している場合しかし、それはエラーで失敗します。つまり、なぜ

ValueError: nlopt invalid argument

誰でも知っていますか?いくつかの議論が欠けていますか?

+0

他のグローバル最適化アルゴリズムを試しましたか? GN_DIRECT_LはC言語でうまく動作しますが、正しく覚えていれば、スケーリングされていないバリアントを選択するときに同様のエラーが発生しました。 – Tony

+0

その他のグローバル最適化は失敗します。チェックしてみると、束縛の制約を設定することが問題になるかもしれません。 – DevShark

+0

ありがとう@トニー。これは、私の制約がすべてのパラメータに対して定義されていないためです。 – DevShark

答えて

1

問題は、すべての変数にバインド制約が定義されているわけではないという事実から来ています。グローバルな最適化のために、NLoptはすべてのパラメータに上限と下限を持たせる必要があります。