C ++: NLopt COBYLA по сравнению с Matlab fmincon

я использую NLopt library, COBYLA algorithmв C ++ для минимизации функции затрат на основе журнала. Я уже реализовал то же самое, используя fmincom в Matlab.
Функция Matlab работает намного лучше, чем NLopt, Это требует гораздо меньшего количества оптимизаций, чем NLopt, а также сходится к минимальному значению, намного лучше, чем NLopt.

Я считаю, что дополнительные параметры, используемые для алгоритмов, различны. Я попытался скопировать те же параметры для NLopt, что и для по умолчанию в fmincon в Matlab, и он все еще не дает аналогичных результатов.

Мне нужно знать, как сходиться таким же образом, как Matlab, если это возможно, используя COBYLA в NLopt.
заранее спасибо

0

Решение

Почему КОБИЛА?
fmincon афаик больше похож
NLopt L-BFGS,
смотрите также LBFGS.
Они используют оценки градиента,
поэтому сходятся намного быстрее, чем линейные приближения COBYLA, когда func () → квадратичный.
Я бы предложил

  • распечатать / построить все значения функций для обоих оптимизаторов (распечатать внутри вашей функции)
  • сообщение все варианты для обоих; КОБИЛА очень чувствительна к робы и роунду
  • пытаться
    NLopt L-BFGS или
    NLopt BOBYQA,
    «итеративно построенный квадратный приближение «.

Добавлено:
fmincom использования

«Конечные различия, используемые для оценки градиентов, являются либо« прямыми »(по умолчанию), либо« центральными »…»

автоматически.
Вы можете запустить L-BFGS или любой оптимизатор градиента,
с оценкой градиента, как односторонние или центральные различия.
В целом, это может быть плохой оценкой для шумных функций или вблизи границ;
но это работает для вас в fmincom, поэтому должно работать и в NLopt L-BFGS.
Попробуйте сначала, прежде чем тратить время на совершенно разные методы.

Вы хотите установить эти параметры NLopt:
initial_step например 1 или .1
ftol_abs а также xtol_abs например 1е-4, не меньше, чем нужно
(для COBYLA, initial_step → rhobegin и initial_step масштабируется x xtol_abs → rhoend.)

NB распечатать коды возврата из любого оптимизатора: Зачем это остановилось?

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]