Programare pătratică secvențială - Sequential quadratic programming

Programarea pătratică secvențială ( SQP ) este o metodă iterativă pentru optimizarea neliniară constrânsă . Metodele SQP sunt utilizate pe probleme matematice pentru care funcția obiectivă și constrângerile sunt de două ori diferențiate continuu .

Metodele SQP rezolvă o succesiune de subprobleme de optimizare, fiecare optimizând un model pătratic al obiectivului supus unei liniarizări a constrângerilor. Dacă problema este nelimitată, atunci metoda se reduce la metoda lui Newton pentru găsirea unui punct în care gradientul obiectivului dispare. Dacă problema are doar constrângeri de egalitate, atunci metoda este echivalentă cu aplicarea metodei lui Newton în condițiile de optimitate de prim ordin sau în condițiile Karush – Kuhn – Tucker ale problemei.

Bazele algoritmului

Luați în considerare o problemă de programare neliniară a formei:

Lagrangianului pentru această problemă este

unde și sunt multiplicatorii Lagrange . La o iterație , un algoritm de programare pătratică secvențială de bază definește o direcție de căutare adecvată ca soluție la subproblema de programare pătratică

Rețineți că termenul din expresia de mai sus poate fi lăsat în afara problemei de minimizare, deoarece este constant sub operator.

Abordări alternative

Implementări

Metodele SQP au fost implementate în medii numerice bine cunoscute, cum ar fi MATLAB și GNU Octave . Există, de asemenea, numeroase biblioteci de software, inclusiv open source:

  • SciPy (standard de facto pentru Python științific) are scipy.optimize.minimize (method = 'SLSQP') solver.
  • NLopt ( implementare C / C ++, cu numeroase interfețe, inclusiv Julia, Python, R, MATLAB / Octave), implementat de Dieter Kraft ca parte a unui pachet pentru un control optim și modificat de SG Johnson.
  • LabVIEW
  • KNITRO (C, C ++, C #, Java, Python, Fortran)
  • NPSOL (Fortran)
  • SNOPT (Fortran)
  • NLPQL (Fortran)
  • MATLAB
  • SuanShu (Java)

Vezi si

Note

Referințe

linkuri externe