Последовательное квадратичное программирование
Последовательное квадратичное программирование (англ. Sequential quadratic programming (SQP)) — один из наиболее распространённых и эффективных оптимизационных алгоритмов общего назначения[1], основной идеей которого является последовательное решение задач квадратичного программирования, аппроксимирующих данную задачу оптимизации. Для оптимизационных задач без ограничений алгоритм SQP преобразуется в метод Ньютона поиска точки, в которой градиент целевой функции обращается в ноль. Для решения исходной задачи с ограничениями-равенствами метод SQP преобразуется в специальную реализацию ньютоновских методов решения системы Лагранжа.
Основные сведения
Рассмотрим задачу нелинейного программирования следующего вида:
- [math]\displaystyle{ \min\limits_x f(x), }[/math]
при ограничениях
- [math]\displaystyle{ b(x)\geqslant 0,\;c(x)=0. }[/math]
Лагранжиан задачи примет следующий вид:
- [math]\displaystyle{ L(x,\;\lambda,\;\sigma)=f(x)-\lambda^Tb(x)-\sigma^Tc(x), }[/math]
где [math]\displaystyle{ \lambda }[/math] и [math]\displaystyle{ \sigma }[/math] — множители Лагранжа.
На итерации [math]\displaystyle{ x_k }[/math] основного алгоритма определяются соответствующие направления поиска [math]\displaystyle{ d_k }[/math] как решение следующей подзадачи квадратичного программирования:
- [math]\displaystyle{ \min\limits_d L(x_k,\;\lambda_k,\;\sigma_k)+\nabla L(x_k,\;\lambda_k,\;\sigma_k)^Td+\frac{1}{2}d^T\nabla_{xx}^2 L(x_k,\;\lambda_k,\;\sigma_k)d, }[/math]
при ограничениях
- [math]\displaystyle{ b(x_k)+\nabla b(x_k)^Td\geqslant 0,\;c(x_k)+\nabla c(x_k)^Td=0. }[/math]
См. также
Примечания
- ↑ Трифонов А. Г. Optimization Toolbox 2.2 Руководство пользователя Архивная копия от 11 августа 2016 на Wayback Machine // Softline Co.
Литература
Для улучшения этой статьи по математике желательно: |