2016-04-01 2 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

Пробовал ли вы любой другой глобальный алгоритм оптимизации? GN_DIRECT_L отлично работает для меня на C, тем не менее, если я правильно помню, у меня была аналогичная ошибка при выборе его немасштабированного варианта. – Tony

+0

Простая глобальная оптимизация. Позвольте мне проверить, может быть, проблема с установкой связанных ограничений. – DevShark

+0

Спасибо @Tony. Это связано с тем, что мои ограничения не были определены для всех параметров. – DevShark

ответ

1

Проблема возникла из-за того, что не все мои переменные определяли связанные ограничения. Для глобальной оптимизации NLopt требует, чтобы все параметры имели верхнюю границу и нижнюю границу.

Смежные вопросы