我使用带有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无效参数
有谁知道为什么会这样?我错过了一些论点吗?
答案 0 :(得分:1)
问题来自这样一个事实,即并非所有变量都定义了约束约束。对于全局优化,NLopt要求所有参数都具有上限和下限。