Послідовне квадратичне програмування
Послідовне квадратичне програмування ( SQP ) - це ітеративний метод обмеженої нелінійної оптимізації. Методи SQP використовуються для математичних задач, для яких цільова функція та обмеження двічі безперервно диференціюються.
Методи SQP вирішують послідовність підпроблем оптимізації, кожна з яких оптимізує квадратичну модель об'єкта, що підлягає лінеаризації обмежень. Якщо проблема не обмежена, то метод зводиться до методу Ньютона для пошуку точки, де градієнт об'єкта зникає. Якщо проблема має лише обмеження рівності, то метод еквівалентний застосуванню методу Ньютона до умов оптимальності першого порядку або умов Каруша — Куна — Таккера.
Основи алгоритму
ред.Розглянемо нелінійну задачу програмування даної форми:
Лагранжан для цієї проблеми є [1]
де і є множниками Лагранжа. На ітерації , основний алгоритм послідовного квадратичного програмування визначає відповідний напрямок пошуку як рішення підпрограми квадратичного програмування
Зауважимо, що функція у рівнянні вище може бути залишена для проблеми мінімізації, оскільки вона є постійною.
Альтернативні підходи
ред.- Послідовне лінійне програмування
- Послідовне лінійно-квадратичне програмування
- Доповнений метод Лагрангія
Впровадження
ред.Методами SQP були реалізовані такі добре відомі числові середовища, як MATLAB і GNU Octave. Існують також численні бібліотеки програмного забезпечення, в тому числі з відкритим кодом
- SciPy (фактично стандарт для наукового Python) має розв'язувач scipy.optimize.minimize (метод = 'SLSQP').
- NLopt [Архівовано 19 грудня 2017 у Wayback Machine.] (реалізація C / C ++, з численними інтерфейсами, включаючи Python, R, MATLAB / Octave), реалізований Dieter Kraft як частина пакету для оптимального управління та модифікований SG Johnson. [2] [3]
- LabVIEW
- KNITRO [4] (C, C ++, C #, Java, Python, Fortran)
- NPSOL (Фортран)
- SNOPT (Фортран)
- NLPQL (Fortran)
- MATLAB
SuanShu [Архівовано 24 грудня 2019 у Wayback Machine.] (Java)
Див. також
ред.Примітки
ред.- ↑ Jorge Nocedal and Stephen J. Wright (2006). Numerical Optimization. Springer. ISBN 978-0-387-30303-1. Архів оригіналу за 30 травня 2008. Процитовано 24 грудня 2019.
- ↑ Kraft, Dieter (Sep 1994). Algorithm 733: TOMP–Fortran modules for optimal control calculations. Transactions on Mathematical Software. 20 (3): 262—281. CiteSeerX 10.1.1.512.2567. doi:10.1145/192115.192124. Архів оригіналу за 6 травня 2021. Процитовано 1 лютого 2019.
- ↑ Kraft, Dieter (July 1988). A software package for sequential quadratic programming. Oberpfaffenhofen: Institut für Dynamik der Flugsysteme. Архів оригіналу за 25 березня 2019. Процитовано 1 лютого 2019.
- ↑ KNITRO User Guide: Algorithms. Архів оригіналу за 3 січня 2018. Процитовано 24 грудня 2019.
Література
ред.- Bonnans, J. Frédéric; Gilbert, J. Charles; Lemaréchal, Claude; Sagastizábal, Claudia A. (2006). Numerical optimization: Theoretical and practical aspects. Universitext (вид. Second revised ed. of translation of 1997 French). Berlin: Springer-Verlag. с. xiv+490. doi:10.1007/978-3-540-35447-5. ISBN 978-3-540-35445-1. MR 2265882. Архів оригіналу за 19 липня 2013. Процитовано 24 грудня 2019.
- Jorge Nocedal and Stephen J. Wright (2006). Numerical Optimization. Springer. ISBN 978-0-387-30303-1. Архів оригіналу за 30 травня 2008. Процитовано 24 грудня 2019.
Посилання
ред.- Послідовне квадратичне програмування в путівнику NEOS [Архівовано 24 грудня 2019 у Wayback Machine.]