2016-04-01 115 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要求所有参数都有一个上界和一个下界。