Нелинейные наименьшие квадраты с рамочными ограничениями

10

Какие рекомендуемые способы выполнения нелинейных наименьших квадратов, мин , с коробкой ограничений л O J < = р J < = ч я J ? Мне кажется (вбегают дураки), что можно сделать квадратные ограничения квадратичными и минимизировать i e r r i ( p ) 2 + C j t u b ( p j , l oerri(p)2loj<=pj<=hij

ierri(p)2+Cjtub(pj,loj,hij)2
гдеtub(x,lo,hi) - это «функция ванны» в форме \ ___ /, max(lox,0,xhi) ,
Это работает в теории, работает на практике?
(Кажется, есть много теоретических работ по NLS +, но мой интерес практичен -
реальные или реалистичные контрольные примеры помогли бы мне выбрать один из методов.)

(Эксперты, пожалуйста, добавьте теги: "наименьших квадратов"?)

Денис
источник
5
Замена строгих ограничений на штрафные функции является распространенным методом численной оптимизации. Кажется, то, что вы предлагаете, является особой формой этой замены. Вы можете прочитать все о подобных методах, например, здесь: stanford.edu/~boyd/cvxbook
David Ketcheson
ppi=min(max(loj,pj),hij)

Ответы:

11

Добавление квадратов штрафных терминов для избавления от ограничений - простой подход, обеспечивающий точность только порядка 1 / штрафного коэффициента. Следовательно, это не рекомендуется для высокой точности, если вы не позволите штрафу уйти в бесконечность во время вычисления. Но высокий штрафной коэффициент делает гессиана очень плохо обусловленным, что ограничивает общую точность, достижимую без явного учета ограничений.

Обратите внимание, что связанные ограничения гораздо легче обрабатывать, чем общие ограничения, поэтому они практически никогда не преобразуются в штрафы.

Решатель L-BFGS-B (используется с 5-мерной историей) обычно решает связанные ограниченные задачи очень надежно и быстро как при низких, так и высоких измерениях. Исключением является неправильное схождение по проблемам, которые могут стать очень плоскими далеко от решений, где легко застрять с помощью метода спуска.

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

Арнольд Ноймайер
источник
L-BFGS доступен в IPOPT, я пересмотрел свой ответ.
Али
5

Я бы просто использовал универсальный НЛП решатель IPOPT . Это самый надежный решатель из тех, что я пробовал.

Если у вас нет особых требований, нет никаких причин, по которым вам следует настаивать на решении проблем, которое работает только для NLS с ограничениями на блоки.

Изменение требований (например, добавление нелинейных ограничений) может вызвать сильную головную боль при решении конкретных проблем. У вас не будет таких проблем, если вы используете универсальный IPOPT.


ОБНОВЛЕНИЕ: Вы можете попробовать L-BFGS с IPOPT , см. В разделе Квази-Ньютон в документации.

Процедура решения может стать быстрее за счет порчи замечательной надежности IPOPT. На мой взгляд , используйте точные производные, если они доступны. Я бы начал возиться с аппроксимациями (такими как L-BFGS), только если бы у меня были проблемы с производительностью.

Али
источник
Я не знаю, насколько хорошо работает IPOPT, но ваше предложение напоминает мне о подобных заявлениях сторонников метода наклонного симплекса. Поскольку нелинейный метод наименьших квадратов является распространенным классом проблем, откровенное отклонение с использованием одного из существующих решателей NLS мне кажется немного подозрительным.
Томас Климпел
@ThomasKlimpel Ну, Денис должен дать нам больше деталей, тогда мы могли бы помочь ему выбрать правильный решатель. :) Или он может проверить это сам и выяснить, какой из них больше соответствует его потребностям. IPOPT кажется хорошим решением для начала.
Али
@ Али, не могли бы вы указать на некоторые "реальные или реалистичные тесты"?
Денис
@denis Я мог бы, но я не собираюсь этого делать, это сбило бы вас с пути. Единственное, что имеет значение, это то, как IPOPT решает вашу проблему . Если у вас нет каких-то особых требований, это должно решить это красиво. IPOPT имеет интерфейсы для MATLAB, C ++, C, Fortran, R, AMPL, CUTEr. Выберите один интерфейс и проверьте, что происходит с вашей проблемой :) Тестирование конкретного решателя проблем также не будет легким.
Али
@ Томас Климпел, думаю, я не был уверен: я не отвергаю, не спрашиваю о пакетах, но спрашиваю об идеях или тестовых случаях: почему этот тривиальный метод может не сработать?
Денис
1

Пакет R minpack.lm CRAN обеспечивает реализацию Levenberg-Marquardt с рамочными ограничениями.

В целом, Левенберг-Марквардт гораздо лучше подходит для задач наименьших квадратов, чем L-BFGS-B. Это будет сходиться (намного) лучше при решении сложных проблем. Он также будет намного быстрее, чем IPOPT общего назначения, поскольку он приспособлен к нелинейным задачам наименьших квадратов.

Пакет R выбирает очень простой проекционный подход для обеспечения соблюдения ограничений (см. Исходный код ). В зависимости от используемой вами реализации LM, ее можно легко включить.

Теперь, предложение в комментариях использовать преобразование (например, синусоидальное преобразование, как в scipy) также является хорошей, простой альтернативой для преобразования вашего неограниченного алгоритма LM в ограниченный. Вам также нужно будет включить преобразование в якобиан, если якобиан аналитичен.

Джереку
источник
0

(Годы спустя) два решателя, которые обрабатывают ограничения блока:

  • У Scipy less_squares есть 3 метода, с обширным документом:

    1. 'trf': отражающий регион доверия
    2. 'Dogbox'
    3. 'lm': устаревшая обертка для MINPACK, без ограничений коробки.
  • Церера
Денис
источник
1
Один из Сципи явно говорит, что алгоритм Левенберга-Марквардта не может справиться с рамочными ограничениями.
Tholy