Какие рекомендуемые способы выполнения нелинейных наименьших квадратов, мин , с коробкой ограничений л O J < = р J < = ч я J ? Мне кажется (вбегают дураки), что можно сделать квадратные ограничения квадратичными и минимизировать ∑ i e r r i ( p ) 2 + C ∗ ∑ j t u b ( p j , l o
где - это «функция ванны» в форме \ ___ /,
,
Это работает в теории, работает на практике?
(Кажется, есть много теоретических работ по NLS +, но мой интерес практичен -
реальные или реалистичные контрольные примеры помогли бы мне выбрать один из методов.)
(Эксперты, пожалуйста, добавьте теги: "наименьших квадратов"?)
optimization
constraints
Денис
источник
источник
Ответы:
Добавление квадратов штрафных терминов для избавления от ограничений - простой подход, обеспечивающий точность только порядка 1 / штрафного коэффициента. Следовательно, это не рекомендуется для высокой точности, если вы не позволите штрафу уйти в бесконечность во время вычисления. Но высокий штрафной коэффициент делает гессиана очень плохо обусловленным, что ограничивает общую точность, достижимую без явного учета ограничений.
Обратите внимание, что связанные ограничения гораздо легче обрабатывать, чем общие ограничения, поэтому они практически никогда не преобразуются в штрафы.
Решатель L-BFGS-B (используется с 5-мерной историей) обычно решает связанные ограниченные задачи очень надежно и быстро как при низких, так и высоких измерениях. Исключением является неправильное схождение по проблемам, которые могут стать очень плоскими далеко от решений, где легко застрять с помощью метода спуска.
Мы провели множество экспериментов с очень разнообразными функциями в разных измерениях, с множеством различных решателей, поскольку нам требовался очень надежный решатель с ограниченными связями в составе нашего глобального программного обеспечения для оптимизации. L-BFGS-B явно выделяется как метод общего назначения, хотя, конечно, при проблемах со смолой другие решатели работают значительно лучше. Поэтому я бы порекомендовал L-BFGS-B в качестве первого выбора и попробовал бы альтернативные методы на тот случай, если L-BFGS-B плохо справится с вашим конкретным классом проблем.
источник
Я бы просто использовал универсальный НЛП решатель IPOPT . Это самый надежный решатель из тех, что я пробовал.
Если у вас нет особых требований, нет никаких причин, по которым вам следует настаивать на решении проблем, которое работает только для NLS с ограничениями на блоки.
Изменение требований (например, добавление нелинейных ограничений) может вызвать сильную головную боль при решении конкретных проблем. У вас не будет таких проблем, если вы используете универсальный IPOPT.
ОБНОВЛЕНИЕ: Вы можете попробовать L-BFGS с IPOPT , см. В разделе Квази-Ньютон в документации.
Процедура решения может стать быстрее за счет порчи замечательной надежности IPOPT. На мой взгляд , используйте точные производные, если они доступны. Я бы начал возиться с аппроксимациями (такими как L-BFGS), только если бы у меня были проблемы с производительностью.
источник
Пакет R minpack.lm CRAN обеспечивает реализацию Levenberg-Marquardt с рамочными ограничениями.
В целом, Левенберг-Марквардт гораздо лучше подходит для задач наименьших квадратов, чем L-BFGS-B. Это будет сходиться (намного) лучше при решении сложных проблем. Он также будет намного быстрее, чем IPOPT общего назначения, поскольку он приспособлен к нелинейным задачам наименьших квадратов.
Пакет R выбирает очень простой проекционный подход для обеспечения соблюдения ограничений (см. Исходный код ). В зависимости от используемой вами реализации LM, ее можно легко включить.
Теперь, предложение в комментариях использовать преобразование (например, синусоидальное преобразование, как в scipy) также является хорошей, простой альтернативой для преобразования вашего неограниченного алгоритма LM в ограниченный. Вам также нужно будет включить преобразование в якобиан, если якобиан аналитичен.
источник
(Годы спустя) два решателя, которые обрабатывают ограничения блока:
У Scipy less_squares есть 3 метода, с обширным документом:
источник