Programare semidefinită

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ă.

Motivație și definiție

Motivații inițiale

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 conditii

Formulări echivalente

Se 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 conditii

unde 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 conditii

Pentru 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).

Teoria dualității

Definiții

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 conditii

Unde pentru oricare două matrice și , înseamnă .

Dualitate slabă

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.

Dualitate puternică

Î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ă.

Exemple

Exemplul 1

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 conditii

Aici 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).

Exemplul 2

Luați în considerare problema

minimiza in conditiile

unde 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 conditii

Exemplul 3 (Algoritmul de aproximare Goemans-Williamson MAX CUT)

Programarea 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ă:

  1. Slăbim problema de programare pătratică întregă la problema SDP.
  2. Rezolvăm problema SDP (cu orice eroare arbitrar mică ).
  3. Rotunjim soluția problemei SDP pentru a obține o soluție aproximativă a problemei inițiale a programării pătratice întregi.

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] .

Algoritmi

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 .

Metode de punct interior

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.

Metode de primă ordine

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”.

Metoda fasciculului

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.

Altele

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).

Aplicații

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 .

Note

  1. Boyd, Vandenberghe, 1996 .
  2. Goemans, Williamson, 1995 .
  3. Raghavendra, 2008 , p. 245-254.

Literatură

Link -uri