Послідовне квадратичне програмування

Матеріал з testwiki
Перейти до навігації Перейти до пошуку

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

Методи SQP вирішують послідовність підпроблем оптимізації, кожна з яких оптимізує квадратичну модель об'єкта, що підлягає лінеаризації обмежень. Якщо проблема не обмежена, то метод зводиться до методу Ньютона для пошуку точки, де градієнт об'єкта зникає. Якщо проблема має лише обмеження рівності, то метод еквівалентний застосуванню методу Ньютона до умов оптимальності першого порядку або умов Каруша — Куна — Таккера.

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

Розглянемо нелінійну задачу програмування даної форми:

min\limits xf(x)s.t.b(x)0c(x)=0.

Лагранжан для цієї проблеми є [1]

(x,λ,σ)=f(x)λT(b(x)(yi)2)σTc(x),

де λ і σ є множниками Лагранжа. На ітерації xk, основний алгоритм послідовного квадратичного програмування визначає відповідний напрямок пошуку dk як рішення підпрограми квадратичного програмування

min\limits df(xk)+f(xk)Td+12dTxx2(xk,λk,σk)ds.t.b(xk)+b(xk)Td0c(xk)+c(xk)Td=0.

Зауважимо, що функція f(xk) у рівнянні вище може бути залишена для проблеми мінімізації, оскільки вона є постійною.

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

  • Послідовне лінійне програмування
  • Послідовне лінійно-квадратичне програмування
  • Доповнений метод Лагрангія

Впровадження

Методами SQP були реалізовані такі добре відомі числові середовища, як MATLAB і GNU Octave. Існують також численні бібліотеки програмного забезпечення, в тому числі з відкритим кодом

  • SciPy (фактично стандарт для наукового Python) має розв'язувач scipy.optimize.minimize (метод = 'SLSQP').
  • NLopt Шаблон:Webarchive (реалізація 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 Шаблон:Webarchive (Java)

Див. також

Примітки

Шаблон:Reflist

Література

Посилання

Шаблон:Методи оптимізації