Dualitet , eller principen om dualitet , är principen genom vilken optimeringsproblem kan betraktas ur två synvinklar, som ett direkt problem eller ett dubbelt problem . Lösningen av det dubbla problemet ger den nedre gränsen för det direkta problemet (vid minimering) [1] . Men i det allmänna fallet sammanfaller inte nödvändigtvis värdena för de objektiva funktionerna för de optimala lösningarna för de direkta och dubbla problemen. Skillnaden i dessa värden, om den observeras, kallas ett dualitetsgap . För problem med konvex programmering är dualitetsgapet lika med noll när villkoren för regelbundenhet hos begränsningarna är uppfyllda .
Vanligtvis antyder termen "dubbelproblem" det lagrangska dubbla problemet , men andra dubbla problem används också, som Wolfes dubbla problem och Fenchels dubbla problem . Det dubbla Lagrange-problemet erhålls genom att generera en Lagrange , använda icke-negativa Lagrange-multiplikatorer för att lägga till begränsningar till den objektiva funktionen, och minimera Lagrangian med avseende på några variabler i det direkta problemet. En sådan lösning ger variablerna för det direkta problemet som funktioner av Lagrange-multiplikatorer, som kallas dubbla variabler, så att det nya problemet blir problemet med att maximera objektivfunktionen med avseende på de dubbla variablerna under de genererade begränsningarna på de dubbla variablerna ( åtminstone icke-negativitet).
I allmänhet, givet det dubbla paret [2] av ett separerbart lokalt konvext utrymme och en funktion , kan vi definiera det direkta problemet som att hitta , så att det med andra ord är infimum (exakt nedre gräns) för funktionen .
Om det finns restriktioner kan de byggas in i funktionen om vi sätter , var är indikatorfunktionen . Låt nu (för ett annat dubbelpar ) vara en störningsfunktion så att [3] .
Dualitetsgapet är skillnaden mellan höger och vänster sida av ojämlikheten
där är den konjugerade funktionen för båda variablerna, och betyder supremum (exakt övre gräns) [3] [4] [5] .
Dualitetsgapet är skillnaden mellan värdena för alla lösningar på det primära problemet och värdena för alla lösningar på det dubbla problemet. Om är det optimala värdet av det dubbla problemet, och är det optimala värdet av det direkta problemet, är dualitetsgapet . Detta värde är alltid större än eller lika med 0. Dualitetsgapet är noll om och endast om det finns stark dualitet . Annars är diskontinuiteten strikt positiv och svag dualitet äger rum [6] .
I numeriska optimeringsproblem används ofta ett annat "dualitetsgap", som är lika med skillnaden mellan valfri dubbellösning och värdet av en tillåten, men inte lokalt optimal, iteration för det direkta problemet. Alternativet "dualitetsgap" uttrycker diskrepansen mellan värdet av den nuvarande genomförbara, men inte lokalt optimala, lösningen för det primära problemet och värdet av det dubbla problemet. Värdet av det dubbla problemet är lika, under villkoret av regelbundenhet av begränsningar, med värdet av den konvexa försvagningen av det direkta problemet, där den konvexa försvagningen uppstår som ett resultat av att den icke-konvexa uppsättningen av genomförbara lösningar ersätts med dess slutna konvext skrov och ersätter den icke-konvexa funktionen med dess konvexa stängning , det vill säga med en funktion vars epigraf är en stängd konvex genom att stänga den ursprungliga objektiva funktionen av det direkta problemet [7] [8] [9] [10] [11 ] [12] [13] [14] [15] [16] [17] .
Linjära programmeringsproblem är optimeringsproblem där objektivfunktionen och begränsningarna [ en ] är . I det direkta problemet är objektivfunktionen en linjär kombination av n variabler. Det finns m begränsningar, som var och en begränsar den linjära kombinationen av n variabler ovanifrån. Målet är att maximera värdet av målfunktionen under begränsningar. Lösningen är en vektor (lista) med n värden som ger maximivärdet för objektivfunktionen.
I det dubbla problemet är den objektiva funktionen en linjär kombination av m värden som är den högra sidan av primala problemets m begränsningar. Det finns n dubbla begränsningar, som var och en begränsar en linjär kombination av m dubbla variabler underifrån.
I det linjära fallet, i det direkta problemet, från varje punkt av det lokala optimum som uppfyller alla begränsningar, finns det en riktning eller delrum av riktningar, och rörelse i denna riktning ökar den objektiva funktionen. Ett steg i någon sådan riktning sägs minska gapet mellan en genomförbar lösning (eller genomförbar plan ) och en av begränsningarna. En ogiltig möjlig lösning är en lösning som bryter mot en eller flera begränsningar.
I det dubbla problemet multipliceras elementen i den dubbla vektorn med kolumner som motsvarar begränsningarna i det primära problemet. Störningen av den dubbla vektorn i det dubbla problemet är ekvivalent med att revidera den övre gränsen för det primära problemet. Vid lösning av det dubbla problemet eftersträvas den minsta övre gränsen, det vill säga den dubbla vektorn ändras på ett sådant sätt att gapet mellan den genomförbara lösningen och det faktiska optimum minskar.
För mer information om sambandet mellan de primära och dubbla problemen, se artikeln " Dual Problems of Linear Programming ".
Om vi förstår vårt primära linjära programmeringsproblem som ett klassiskt "resursallokeringsproblem", kan dess dubbla problem tolkas som ett problem med " resursuppskattning " .
I icke-linjär programmering är begränsningar inte nödvändigtvis linjära. Men många av principerna för det linjära fallet gäller.
För att säkerställa att det globala maximumet för ett icke-linjärt problem lätt kan definieras kräver problemformuleringen ofta att funktioner är konvexa och har kompakta uppsättningar av lägre nivåer (det vill säga uppsättningar där funktionen har ett värde som är mindre än någon nivå) .
Detta är Karush-Kuhn-Tuckers tillstånd . De visade de nödvändiga förutsättningarna för att bestämma det lokala optimum för icke-linjära problem. Det finns ytterligare villkor (constraints regularity condition) som är nödvändiga för att bestämma riktningen till den optimala lösningen. Här är den optimala lösningen en av de lokala optima, som kanske inte är globala.
Om ett icke-linjärt programmeringsproblem anges i standardformuläret
minimera | |
under förhållanden | |
med en domän som inte är tom, definieras Lagrange -funktionen som
Vektorerna och kallas dubbla variabler eller vektorer av Lagrange-multiplikatorer associerade med problemet. Den dubbla Lagrange-funktionen definieras som
Den dubbla funktionen g är konkav även om det initiala problemet inte är konvext, eftersom det är punktvis infimum av affina funktioner. Den dubbla funktionen ger lägre gränser för det optimala värdet av det ursprungliga problemet. För vem som helst och alla vi har .
Om villkoren för begränsningsregelbundenhet , såsom Slater-villkoret , är uppfyllda och det ursprungliga problemet är konvext, så har vi strikt dualitet , det vill säga .
För ett konvext minimeringsproblem med begränsningar — ojämlikheter,
minimera | |
under förhållanden |
Det lagrangska dubbla problemet är
maximera | |
under förhållanden |
där objektivfunktionen är den dubbla Lagrangefunktionen. Om funktionerna och är kända för att vara kontinuerligt differentierbara, är infimum vid de punkter där gradienten är noll. En uppgift
maximera | |
under förhållanden | |
kallas det dubbla Wolfe-problemet. Denna uppgift kan vara beräkningsmässigt svår, eftersom objektivfunktionen inte är konvex i koordinaterna . Dessutom är begränsningen i allmänhet icke-linjär, så det dubbla Wolfe-problemet är vanligtvis ett icke-konvext optimeringsproblem. Det finns i alla fall en svag dualitet [18] .
Enligt George Danzig lades dualitetssatsen för linjär optimering fram som en gissning av John von Neumann omedelbart efter att Danzig introducerade det linjära programmeringsproblemet. Von Neumann märkte att han använde information från sin spelteori och föreslog att ett tvåpersoners nollsummematrisspel motsvarar ett linjärt programmeringsproblem. Ett rigoröst bevis på detta faktum publicerades först 1948 av Albert Tucker och hans grupp [19] .