Dualitate (optimizare)

Dualitatea , sau principiul dualității , este principiul prin care problemele de optimizare pot fi considerate din două puncte de vedere, ca o problemă directă sau o problemă duală . Rezolvarea problemei duale dă limita inferioară a problemei directe (la minimizare) [1] . Cu toate acestea, în cazul general, valorile funcțiilor obiective ale soluțiilor optime ale problemelor directe și duale nu coincid neapărat. Diferența dintre aceste valori, dacă este observată, se numește decalaj de dualitate . Pentru problemele de programare convexă , decalajul de dualitate este egal cu zero atunci când sunt îndeplinite condiţiile de regularitate a constrângerilor .

Problemă dublă

De obicei, termenul „problema duală” implică problema duală lagrangiană , dar sunt folosite și alte probleme duale, cum ar fi problema duală a lui Wolfe și problema duală a lui Fenchel . Problema Lagrange duală este obținută prin generarea unui Lagrangian , folosind multiplicatori Lagrange nenegativi pentru a adăuga constrângeri la funcția obiectiv și minimizând Lagrangianul în raport cu unele variabile ale problemei directe. O astfel de soluție dă variabilele problemei directe ca funcții ale multiplicatorilor Lagrange, care se numesc variabile duale, astfel încât noua problemă devine problema maximizării funcției obiectiv în raport cu variabilele duale sub constrângerile generate asupra variabilelor duale ( cel puțin non-negativitatea).

În general, având în vedere perechea duală [2] a unui spațiu convex local separabil și a unei funcții , putem defini problema directă ca găsirea , astfel încât, cu alte cuvinte,  este infima (limita inferioară exactă) a funcției .

Dacă există restricții, acestea pot fi încorporate în funcție dacă punem , unde  este funcția indicator . Fie acum (pentru o altă pereche duală ) o funcție de perturbare astfel încât [3] .

Decalajul de dualitate  este diferența dintre partea dreaptă și stângă a inegalității

unde  este funcția conjugată a ambelor variabile și înseamnă supremul (limită superioară exactă) [3] [4] [5] .

Duality Gap

Decalajul de dualitate este diferența dintre valorile oricăror soluții la problema primară și valorile oricăror soluții la problema duală. Dacă  este valoarea optimă a problemei duale și  este valoarea optimă a problemei directe, decalajul de dualitate este . Această valoare este întotdeauna mai mare sau egală cu 0. Intervalul de dualitate este zero dacă și numai dacă există o dualitate puternică . În caz contrar, discontinuitatea este strict pozitivă și are loc o dualitate slabă [6] .

În problemele de optimizare numerică, este adesea folosit un alt „decalaj de dualitate”, care este egal cu diferența dintre orice soluție duală și valoarea unei iterații admisibile, dar nu optimă local, pentru problema directă. Alternativa „decalaj de dualitate” exprimă discrepanța dintre valoarea soluției curente fezabile, dar nu optimă local, pentru problema primară și valoarea problemei duale. Valoarea problemei duale este egală, în condiția regularității constrângerilor, cu valoarea slăbirii convexe a problemei directe, unde slăbirea convexă apare ca urmare a înlocuirii mulțimii neconvexe de soluții fezabile cu cea închisă a acesteia. carcasă convexă și înlocuirea funcției neconvexe cu închiderea ei convexă , adică cu o funcție a cărei epigrafă este o convexă închisă prin închiderea funcției obiective inițiale a problemei directe [7] [8] [9] [10] [11 ] [12] [13] [14] [15] [16] [17] .

Caz liniar

Problemele de programare liniară  sunt probleme de optimizare în care funcția obiectiv și constrângerile sunt liniare. În problema directă, funcția obiectiv este o combinație liniară de n variabile. Există m constrângeri, fiecare dintre acestea limitând combinația liniară a n variabile de sus. Scopul este de a maximiza valoarea funcției obiectiv sub constrângeri. Soluția  este un vector (listă) de n valori care dă valoarea maximă a funcției obiectiv.

În problema duală, funcția obiectiv este o combinație liniară de m valori care sunt părțile din dreapta ale constrângerilor m ale problemei primare. Există n constrângeri duale, fiecare dintre acestea limitând o combinație liniară de m variabile duale de jos.

Relația dintre problemele primare și cele duale

În cazul liniar, în problema directă, din fiecare punct al optimului local care satisface toate constrângerile, există o direcție sau subspațiu de direcții, iar mișcarea în această direcție crește funcția obiectiv. Se spune că o mișcare în orice astfel de direcție reduce decalajul dintre o soluție fezabilă (sau un plan fezabil ) și una dintre constrângeri. O soluție posibilă nevalidă este o soluție care încalcă una sau mai multe constrângeri.

În problema duală, elementele vectorului dual sunt înmulțite cu coloane care corespund constrângerilor din problema primară. Perturbarea vectorului dual în problema duală este echivalentă cu revizuirea limitei superioare a problemei primare. La rezolvarea problemei duale se caută cea mai mică limită superioară, adică vectorul dual se modifică în așa fel încât să reducă decalajul dintre soluția fezabilă și optimul real.

Pentru mai multe informații despre legătura dintre problemele primare și cele duale, consultați articolul „ Probleme duale ale programării liniare ”.

Interpretare economică

Dacă înțelegem problema noastră primară de programare liniară ca o problemă clasică de „alocare a resurselor”, problema sa duală poate fi interpretată ca o de „ estimare a resurselor .

Caz neliniar

În programarea neliniară, constrângerile nu sunt neapărat liniare. Cu toate acestea, se aplică multe dintre principiile cazului liniar.

Pentru a se asigura că maximul global al unei probleme neliniare poate fi definit cu ușurință, enunțul problemei necesită adesea ca funcțiile să fie convexe și să aibă seturi compacte de niveluri inferioare (adică seturi pe care funcția ia o valoare mai mică decât un anumit nivel) .

Aceasta este condiția Karush-Kuhn-Tucker . Au demonstrat condițiile necesare pentru determinarea optimului local al problemelor neliniare. Există condiții suplimentare (condiția de regularitate a constrângerilor) care sunt necesare pentru a determina direcția către soluția optimă . Aici, soluția optimă este una dintre optima locală, care poate să nu fie globală.

Principiul lagrangian strict: dualitatea Lagrange

Dacă o problemă de programare neliniară este dată în forma standard

minimiza
in conditii

cu domeniul având un interior nevid, funcția Lagrange este definită ca

Vectorii și sunt numiți variabile duale sau vectori ai multiplicatorilor Lagrange asociați cu problema. Funcția duală Lagrange este definită ca

Funcția duală g este concavă chiar dacă problema inițială nu este convexă, deoarece este infimul punctual al funcțiilor afine. Funcția duală oferă limite inferioare pentru valoarea optimă a problemei inițiale. Pentru oricine și oricine avem .

Dacă condițiile de regularitate a constrângerii , cum ar fi condiția Slater , sunt îndeplinite , iar problema inițială este convexă, atunci avem dualitate strictă , adică .

Probleme convexe

Pentru o problemă de minimizare convexă cu constrângeri — inegalități,

minimiza
in conditii

Problema duală lagrangiană este

maximiza
in conditii

unde funcția obiectiv este funcția Lagrange duală. Dacă se știe că funcțiile și sunt diferențiabile continuu, atunci infimul este în punctele în care gradientul este zero. O sarcină

maximiza
in conditii

se numește problema Wolfe duală. Această sarcină poate fi dificilă din punct de vedere computațional, deoarece funcția obiectiv nu este convexă în coordonate . De asemenea, constrângerea este în general neliniară, astfel încât problema Wolfe duală este de obicei o problemă de optimizare neconvexă. În orice caz, există o dualitate slabă [18] .

Istorie

Potrivit lui George Danzig , teorema dualității pentru optimizarea liniară a fost prezentată ca o presupunere de către John von Neumann imediat după ce Danzig a introdus problema de programare liniară. Von Neumann a observat că a folosit informații din teoria sa de joc și a sugerat că un joc cu matrice cu sumă zero de două persoane este echivalent cu o problemă de programare liniară. O dovadă riguroasă a acestui fapt a fost publicată pentru prima dată în 1948 de Albert Tucker și grupul său [19] .

Vezi și

Note

  1. Boyd, Vandenberghe, 2004 .
  2. Perechea duală este un triplu , unde  este un spațiu vectorial peste un câmp ,  este mulțimea tuturor mapărilor liniare , iar al treilea element este o formă biliniară .
  3. 1 2 Boţ, Wanka, Grad, 2009 .
  4. Csetnek, 2010 .
  5. Zălinescu, 2002 , p. 106–113.
  6. Borwein, Zhu, 2005 .
  7. Ahuja, Magnanti, Orlin, 1993 .
  8. Bertsekas, Nedic, Ozdaglar, 2003 .
  9. Bertsekas, 1999 .
  10. Bertsekas, 2009 .
  11. Bonnans, Gilbert, Lemaréchal, Sagastizábal, 2006 , p. xiv+490.
  12. Hiriart-Urruty, Lemaréchal, 1993 , p. xviii+417.
  13. Hiriart-Urruty, Lemaréchal, 1993 , p. xviii+346.
  14. Lasdon, 2002 , p. xiii+523.
  15. Lemarechal, 2001 , p. 112–156.
  16. Minoux, 1986 , p. xxviii+489.
  17. Shapiro, 1979 , p. xvi+388.
  18. Geoffrion, 1971 , p. 1–37.
  19. Nering și Tucker 1993 , p. prefaţă de Danzig.

Literatură

Cărți

Articole

Lectură suplimentară