Последовательное квадратичное программирование - Sequential quadratic programming

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

Методы SQP решают последовательность подзадач оптимизации, каждая из которых оптимизирует квадратичную модель цели с учетом линеаризации ограничений. Если проблема не ограничена, то метод сводится к методу Ньютона для поиска точки, где градиент цели равен нулю. Если в задаче есть только ограничения типа равенства, то этот метод эквивалентен применению метода Ньютона к условиям оптимальности первого порядка или условиям Каруша – Куна – Таккера задачи.

Основы алгоритма

Рассмотрим задачу нелинейного программирования вида:

Лагранжиан для этой задачи

где и - множители Лагранжа . На итерации базовый алгоритм последовательного квадратичного программирования определяет соответствующее направление поиска как решение подзадачи квадратичного программирования.

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

Альтернативные подходы

Реализации

Методы SQP были реализованы в хорошо известных числовых средах, таких как MATLAB и GNU Octave . Также существует множество программных библиотек, в том числе с открытым исходным кодом:

  • SciPy (де-факто стандарт для научного Python) имеет решатель scipy.optimize.minimize (method = 'SLSQP').
  • NLopt (реализация C / C ++ с многочисленными интерфейсами, включая Julia, Python, R, MATLAB / Octave), реализованная Дитером Крафт как часть пакета для оптимального управления и модифицированная SG Johnson.
  • LabVIEW
  • KNITRO (C, C ++, C #, Java, Python, Фортран)
  • NPSOL (Фортран)
  • СНОПТ (Фортран)
  • NLPQL (Фортран)
  • MATLAB
  • СуанШу (Ява)

Смотрите также

Примечания

Рекомендации

внешняя ссылка