2016-04-01 117 views
1

我使用NLopt庫和python綁定。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

您是否嘗試過其他全局優化算法?在C中,GN_DIRECT_L對我來說工作得很好,但如果我沒有記錯的話,在選擇未縮放的變體時我有類似的錯誤。 – Tony

+0

其他全局優化失敗。讓我檢查一下,這可能是設置綁定約束的問題。 – DevShark

+0

謝謝@託尼。這是因爲我的約束沒有爲所有參數定義。 – DevShark

回答

1

問題來自事實,並非所有的變量都綁定了約束條件。對於全局優化,NLopt要求所有參數都有一個上界和一個下界。