Последовательное квадратичное программирование
![]() | Эта статья предоставляет недостаточный контекст для тех, кто не знаком с предметом . ( Октябрь 2009 г. ) |
Последовательное квадратичное программирование ( SQP ) — это итерационный метод , нелинейной оптимизации с ограничениями который можно рассматривать как квазиньютоновский метод . Методы SQP используются для решения математических задач, для которых целевая функция и ограничения дважды непрерывно дифференцируемы , но не обязательно выпуклы.
Методы SQP решают последовательность подзадач оптимизации, каждая из которых оптимизирует квадратичную модель цели с учетом линеаризации ограничений. Если задача не имеет ограничений, то метод сводится к методу Ньютона для поиска точки, в которой градиент цели исчезает. Если задача имеет только ограничения-равенства, то метод эквивалентен применению метода Ньютона к условиям оптимальности первого порядка или условиям Каруша – Куна – Такера задачи.
Основы алгоритма [ править ]

Рассмотрим задачу нелинейного программирования вида:
Лагранжиан есть для этой задачи [1]
где и являются множителями Лагранжа .
Стандартный метод Ньютона ищет решение. повторяя следующее уравнение, где обозначает матрицу Гессе :
.
Однако поскольку матрица вообще сингулярна (и, следовательно, необратима ) , шаг Ньютона невозможно вычислить напрямую. Вместо этого базовый алгоритм последовательного квадратичного программирования определяет подходящее направление поиска. на итерации , как решение квадратичного программирования подзадачи
где квадратичная форма образована гессианом лагранжиана.Обратите внимание, что термин в приведенном выше выражении можно не учитывать в задаче минимизации, поскольку оно постоянно при оператор.
Вместе алгоритм SQP начинается с выбора начальной итерации. , затем вычисляем и . Затем строится и решается подзадача QP для нахождения направления шага Ньютона. который используется для обновления итерации родительской проблемы с использованием . Этот процесс повторяется для до тех пор, пока родительская задача не будет удовлетворять тесту на сходимость.
Практические реализации [ править ]
Практическая реализация алгоритма SQP значительно сложнее, чем его базовая версия, описанная выше. Чтобы адаптировать SQP для реальных приложений, необходимо решить следующие проблемы:
- Возможность неразрешимой подзадачи QP.
- Подзадача QP, дающая плохой шаг: тот, который либо не может уменьшить цель, либо увеличивает нарушение ограничений.
- Срыв итераций из-за значительного отклонения цели/ограничений от их квадратичных/линейных моделей.
Для решения этих проблем обычно используются различные стратегии:
- Использование функций оценки, которые оценивают прогресс в направлении ограниченного решения, или методов фильтрации.
- Доверительные методы поиска области или линии для управления отклонениями между квадратичной моделью и фактической целью.
- Специальные этапы восстановления выполнимости для решения невыполнимых подзадач или использование подзадач с штрафом L1 для постепенного уменьшения невыполнимости.
Эти стратегии можно комбинировать различными способами, в результате чего получается широкий спектр методов SQP.
подходы Альтернативные
- Последовательное линейное программирование
- Последовательное линейно-квадратичное программирование
- Расширенный метод Лагранжа
Реализации [ править ]
Методы SQP были реализованы в хорошо известных численных средах, таких как MATLAB и GNU Octave . Также существует множество библиотек программного обеспечения, в том числе с открытым исходным кодом:
- SciPy (фактический стандарт для научного Python) имеет решатель scipy.optimize.minimize(method='SLSQP').
- NLopt (реализация C/C++ с многочисленными интерфейсами, включая Julia, Python, R, MATLAB/Octave), реализованная Дитером Крафтом как часть пакета для оптимального управления и модифицированная С.Г. Джонсоном. [2] [3]
- Решатель ALGLIB SQP (C++, C#, Java, Python API)
и коммерческий
- ЛабВЬЮ
- КНИТРО [4] (C, C++, C#, Java, Python, Julia, Fortran)
- НПСОЛ (Фортран)
- СНОПТ (Фортран)
- НЛПQL (Фортран)
- МАТЛАБ
- СуанШу (Ява)
См. также [ править ]
Примечания [ править ]
- ^ Хорхе Носедал и Стивен Дж. Райт (2006). Численная оптимизация . Спрингер. ISBN 978-0-387-30303-1 .
- ^ Крафт, Дитер (сентябрь 1994 г.). «Алгоритм 733: модули TOMP – Fortran для расчетов оптимального управления» . Транзакции ACM в математическом программном обеспечении . 20 (3): 262–281. CiteSeerX 10.1.1.512.2567 . дои : 10.1145/192115.192124 . S2CID 16077051 . Проверено 1 февраля 2019 г.
- ^ «Алгоритмы NLopt: SLSQP» . Прочтите Документы . Июль 1988 года . Проверено 1 февраля 2019 г.
- ^ Руководство пользователя KNITRO: Алгоритмы
Ссылки [ править ]
- Боннан, Ж. Фредерик; Гилберт, Дж. Чарльз; Лемарешаль, Клод ; Сагастисабал, Клаудия А. (2006). Численная оптимизация: Теоретические и практические аспекты . Universitext (Второе исправленное издание перевода французского издания 1997 г.). Берлин: Springer-Verlag. стр. xiv+490. дои : 10.1007/978-3-540-35447-5 . ISBN 978-3-540-35445-1 . МР 2265882 .
- Хорхе Носедал и Стивен Дж. Райт (2006). Численная оптимизация . Спрингер. ISBN 978-0-387-30303-1 .