Worhp: локальная точка невозможности - PullRequest
0 голосов
/ 16 июня 2019

У меня проблема, которая успешно решается с помощью ipopt и fmincon.worhp заканчивается локальной невозможностью.Мой x0 (init) возможен.

Это может произойти с алгоритмом внутренней точки, но я ожидаю, что sqp всегда будет оставаться в допустимой зоне?

Ответы [ 2 ]

2 голосов
/ 18 июня 2019

Возможно, также проверьте производные с WORHP, включив CheckValuesDF, CheckValuesDG, CheckValuesHM, CheckStructureDF, CheckStructureDG и CheckStructureHM, если вы их предоставите. Я обращаю внимание на то, что WORHP требует особого формата хранения координат (в частности, для гессиана). Ошибки здесь приводят к ложным поисковым указаниям.

1 голос
/ 18 июня 2019

Из-за ошибки аппроксимации подзадачи QP это совсем не то, чего вы можете ожидать.Рассмотрим задачу

formula counter example NLP

, которая будет иметь подзадачи QP

formula counter example QP

для текущего x и множителя Лагранжа lambda, что можно увидеть при определении необходимых производных.С начальными значениями x_0 = 0 и lambda_0 = 1 у нас есть возможное начальное предположение.Первый QP, который должен быть решен, - это

formula counter example first QP

, который имеет уникальное решение d = 2.Теперь, в зависимости от реализованного поиска строки, может быть сделан полный шаг, то есть следующая итерация будет x_1 = x_0 + d.Это означает x_1 = 2, который больше не является осуществимым.Фактически, алгоритм SQP WORHP будет повторяться следующим образом, если вы отключите par.InitialLMest и в конечном итоге найдете глобальный оптимум на x = 1.

Помимо этого фундаментального свойства могут быть и другие эффекты, приводящие к итерациям, оставляющимвыполнимый набор, который будет очень специфичным для фактической реализации решателя.Например, численные неточности, трудности при решении QP или определенные стратегии восстановления.Что касается того, почему ваша проблема не решается успешно с помощью алгоритма SQP WORHP, я не могу сказать много, не зная ничего о самой проблеме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...