Programarea semidefinită (sau SDP din engleză. Programarea semidefinită ) este o subsecțiune a programării convexe , care se ocupă cu optimizarea unei funcții obiectiv liniare (funcția obiectiv este o funcție specificată de utilizator a cărei valoare utilizatorul dorește să o minimizeze sau să o maximizeze) la intersectia conurilor de matrice pozitiv semidefinite cu spatiu afin .
Programarea semidefinită este o zonă de optimizare relativ nouă, care crește în interes din mai multe motive. Multe probleme practice din domeniile cercetării operaționale și optimizării combinatorii pot fi modelate sau aproximate ca probleme de programare semidefinite. În teoria controlului automat, problemele SDP sunt utilizate în contextul inegalităților matriceale liniare . Problemele SDP sunt, de fapt, un caz special de programare conică și pot fi rezolvate eficient prin metoda punctului interior . Toate problemele de programare liniară pot fi exprimate ca probleme SDP și folosind ierarhiile de probleme SDP, soluțiile la problemele de optimizare polinomială pot fi aproximate. Programarea semidefinită este utilizată în optimizarea sistemelor complexe . În ultimii ani, unele probleme de complexitate a interogărilor cuantice au fost formulate în termeni de programare semidefinită.
O problemă de programare liniară este o problemă în care trebuie să maximizați sau să minimizați o funcție obiectiv liniară a variabilelor reale pe un poliedru . În programarea semidefinită, folosim în schimb vectori reali și avem voie să folosim produsul scalar al vectorilor. Condiția de non-negativitate a variabilelor reale ale problemei LP este înlocuită de constrângeri de semidefiniție pe matricea de variabile ale problemei SDP. În special, o problemă generală de programare semidefinită poate fi definită ca orice problemă de programare matematică de formă
in conditiiSe spune că o matrice este semidefinită pozitivă dacă este matricea Gram a unor vectori (adică, dacă există vectori astfel încât pentru toți ). Dacă acest lucru este adevărat, îl vom nota ca . Rețineți că există și alte definiții echivalente ale semidefinitității pozitive, de exemplu, matricele semidefinite pozitive au doar valori proprii nenegative și au o rădăcină pătrată semidefinită pozitivă.
Se notează prin spațiul tuturor matricelor simetrice reale. În acest spațiu există un produs interior (unde înseamnă urmă )
Putem rescrie problema de programare matematică din secțiunea anterioară în forma echivalentă
in conditiiunde elementul de matrice este egal cu din secțiunea anterioară și este o matrice care are valoarea din secțiunea anterioară ca element de matrice.
Rețineți că dacă adăugăm variabile suplimentare mod corespunzător, această sarcină SDP poate fi convertită în
in conditiiPentru comoditate, problema SDP poate fi definită într-o formă ușor diferită, dar echivalentă. De exemplu, expresii liniare care utilizează variabile scalare nenegative pot fi adăugate la specificația sarcinii. Sarcina rămâne SDP, deoarece fiecare variabilă poate fi inclusă în matrice ca element diagonal ( pentru unii ). Pentru a vă asigura , puteți adăuga restricții pentru toți . Ca un alt exemplu, rețineți că pentru orice matrice semidefinită pozitivă , există un set de vectori astfel încât elementul matricei să fie egal cu produsul scalar al vectorilor și . Astfel, problemele SDP sunt adesea formulate în termeni de expresii liniare ale produselor scalare ale vectorilor. Având în vedere o soluție la problema SDP în formă standard, vectorii pot fi reconstruiți în timp (de exemplu, folosind o descompunere incompletă a matricei Cholesky X).
Similar cu programarea liniară, dacă problema generală SDP este dată sub formă
in conditii(problema directă, sau P-SDP), definim problema duală semidefinită (D-SDP) ca
in conditiiUnde pentru oricare două matrice și , înseamnă .
Teorema dualității slabe afirmă că SDP-ul primar are o valoare nu mai mică decât valoarea SDP-ului dual. Astfel, orice soluție admisibilă a problemei SDP duale limitează valoarea SDP-ului direct de jos și invers, orice valoare admisibilă a problemei SDP-ului direct limitează valoarea SDP-ului dual de sus. Acest lucru se întâmplă pentru că
unde ultima inegalitate reflectă faptul că ambele matrice sunt semidefinite pozitive. Valoarea acestei funcții este uneori numită dual gap.
Într-o condiție cunoscută sub numele de condiția Slater , valorile problemelor SDP primale și duale sunt egale. Aceasta se numește dualitate puternică . Spre deosebire de problemele de programare liniară , nu orice problemă SDP are o dualitate strictă. În cazul general, valoarea problemei duale SDP poate fi strict mai mică decât valoarea problemei directe.
(i) Să presupunem că problema directă (P-SDP) este mărginită de jos și strict admisibilă (adică există , astfel încât , ). Apoi există o soluție optimă pentru problema duală (D-SDP) și
(ii) Să presupunem că problema duală (D-SDP) este mărginită de sus și strict admisibilă (adică pentru unii ). Atunci există o soluție optimă pentru problema directă (P-SDP) și egalitatea din (i) este valabilă.
Luați în considerare trei variabile aleatoare și . Prin definiție, coeficienții lor de corelație sunt validi dacă și numai dacă
Să presupunem că din unele surse (de exemplu, din date empirice sau experimentale) știm că și . Problema determinării celor mai mici și mai mari valori poate fi scrisă astfel:
minimiza/maximiza in conditiiAici acceptăm . Problema poate fi formulată ca o problemă SDP. Completam inegalitățile extinzând matricea de variabile și introducând variabile suplimentare , de exemplu
După rezolvarea acestei probleme SDP, obținem valorile minime și maxime ( și respectiv).
Luați în considerare problema
minimiza in conditiileunde se presupune că la .
Prin introducerea unei variabile suplimentare , rescriem problema sub forma:
minimiza in conditiiÎn această formulare, funcția obiectiv este o funcție liniară a două variabile ( ).
Prima constrângere poate fi rescrisă ca
,unde matricea este o matrice pătrată cu valori pe diagonală egale cu elementele vectorului .
A doua constrângere poate fi scrisă ca
Definim matricea după cum urmează
Putem folosi teoria complementului lui Schur pentru a demonstra asta
[unu]Problema de programare semidefinită pentru această problemă va fi de forma
minimiza in conditiiProgramarea semidefinită este un instrument important pentru crearea algoritmilor de aproximare pentru problemele de maximizare NP-hard. Primul algoritm de aproximare bazat pe SDP a fost propus de Michel Goemans și David Williamson [2] . Ei au studiat problema MAX CUT : Având în vedere un grafic G = ( V , E ), este necesar să se împartă vârfurile lui V în două părți, astfel încât să se maximizeze numărul de muchii care conectează aceste două părți. Problema poate fi gândită ca o problemă de programare pătratică cu numere întregi :
Maximizați sub rezerva oricărei .Cu excepția cazului în care P = NP , nu putem rezolva această problemă în mod eficient. Cu toate acestea, Goemans și Williamson au subliniat o procedură în trei pași pentru a ataca acest tip de problemă:
Pentru problema MAX CUT , cea mai naturală relaxare este
pentru , unde maximizarea se realizează mai degrabă pe vectori decât pe variabile întregi scalare.Problema este o problemă SDP deoarece atât funcția obiectiv, cât și constrângerile sunt funcții liniare ale produselor scalare ale vectorilor. Soluția problemei SDP oferă un set de vectori unitari în . Deoarece vectorii nu sunt neapărat coliniari, valoarea problemei relaxate poate fi doar mai mare decât valoarea problemei de programare pătratică cu numere întregi originale. Este necesară o procedură finală de rotunjire pentru a obține împărțirea. Goemans și Williamson aleg un hiperplan aleatoriu (folosind o distribuție uniformă) prin origine și împart vârfurile în funcție de locația lor în raport cu acel plan. Analiza directă arată că această procedură oferă factorul de aproximare așteptat de 0,87856 - ε. (Valoarea așteptată a unei tăieturi este egală cu suma peste toate muchiile probabilităților ca muchia să intre în tăietură, iar această așteptare este proporțională cu unghiul dintre vectorii de la vârfurile de capăt ale muchiei. Dacă comparăm această probabilitate cu , așteptarea raportului va fi întotdeauna de cel puțin 0,87856.) Presupunând ipoteza de corectitudine a jocului unic se poate demonstra că coeficientul de aproximare al acestei aproximări este în principal optim.
De la apariția lucrării de către Goemans și Williamson, problemele SDP au fost aplicate la dezvoltarea unui număr mare de algoritmi de aproximare. Recent, Prasad Raghavendra a dezvoltat o schemă generală pentru problemele de satisfacție a constrângerilor bazată pe ipoteza jocului unic [3] .
Există mai multe tipuri de algoritmi pentru rezolvarea problemelor SDP. Rezultatul acestor algoritmi este valoarea problemei SDP până la , care se obține într-un timp care depinde polinom de mărimea problemei și .
Majoritatea sistemelor de soluții se bazează pe metoda punctului interior (CSDP, SeDuMi, SDPT3, DSDP, SDPA), care este robustă și eficientă pentru probleme generale SDP liniare. Abordarea este limitată în utilizare de faptul că algoritmii sunt metode de ordinul doi și necesită matrici mari (și adesea dense) pentru a fi memorate și descompuse.
Metodele de ordinul întâi pentru optimizarea conică evită stocarea și descompunerea matricelor mari Hessian și sunt aplicabile la probleme mult mai mari decât metodele punctuale interioare, cu prețul unei pierderi de precizie. Metoda este implementată în sistemul „SCS solver”.
Problema SDP este formulată ca o problemă de optimizare neuniformă și este rezolvată prin metoda fasciculului spectral. Această abordare este foarte eficientă pentru anumite clase de probleme liniare SDP.
Algoritmii bazați pe metoda Lagrangiană generalizată (PENSDP) au un comportament similar cu metodele punctului interior și pot fi adaptați pentru unele probleme foarte mari. Alți algoritmi folosesc informații de nivel scăzut și reformulează problema SDP ca o problemă de programare neliniară (SPDLR).
Programarea semidefinită a fost folosită pentru a găsi soluții aproximative la problemele de optimizare combinatorie, cum ar fi rezolvarea problemei de tăiere maximă cu un factor de aproximare de 0,87856. Problemele SDP sunt, de asemenea, folosite în geometrie pentru a defini grafice de tensegritate și apar în teoria controlului ca inegalități matrice liniare .
de optimizare | Metode|
---|---|
Unidimensional |
|
Comanda zero | |
Prima comanda | |
a doua comanda | |
Stochastic | |
Metode de programare liniară | |
Metode de programare neliniară |