LP-dualitet
Transcription
LP-dualitet
LP-dualitet: Exempel Primal: Maximera max z = 4x1 då 2x1 x1 6x1 x1 , LP-dualitet: Generellt vinsten, utan att använda för mycket råvaror. + 3x2 (y1 ) + 3x2 ≤ 30 (1) (y2 ) ≤ 6 (2) (y3 ) + 4x2 ≤ 50 (3) x2 ≥ 0 Primal: max z = då cj xj aij xj ≤ bi xj ≥ 0 LP-dual: Minimera kostnaden för råvarorna. Balansera kostnad mot intäkt. min v = 30y1 + 6y2 + 50y3 då 2y1 + y2 + 6y3 ≥ 4 (1) (x1 ) 3y1 + 4y3 ≥ 3 (2) (x2 ) y1 , y2 , y3 ≥ 0 Komplementaritetsvillkoren: Priset är noll om råvaran inte används fullt ut. Produkten görs ej om kostnaden blir högre än intäkten. TAOP88 Optimering j=1 n X i = 1, . . . , m j=1 Dualvariabel: yi pris på råvara i. Kaj Holmberg (LiU) n X max z = c T x då Ax ≤ b x ≥0 j = 1, . . . , n Dual: min v = då m X i=1 m X bi yi aij yi ≥ cj j = 1, . . . , n min v = bT y då AT y ≥ c y ≥0 i=1 yi ≥ 0 27 augusti 2015 1 / 31 i = 1, . . . , m Kaj Holmberg (LiU) TAOP88 Optimering 27 augusti 2015 LP-dualitet: Relationer LP-dualitet: Komplementaritet Exakt vilka relationer har primal och dual? En dualvariabel, yi , anger hur mycket primala bivillkor i “tar emot”. Ett bivillkor som inte är aktivt tar inte emot alls. Svaga dualsatsen Komplementaritet (i ord): Om primala bivillkor i inte är aktivt, måste yi = 0. Om duala bivillkor j inte är aktivt, måste xj = 0. Om x är tillåten i primalen och y är tillåten i dualen så c T x ≤ bT y . (bevis) (rita) Följdsats Komplementaritetsvillkoren Om x̄ är tillåten i primalen, ȳ är tillåten i dualen och optimal i primalen och ȳ optimal i dualen. c T x̄ = bT ȳ så är x̄ (se figur) Följdsats Primallösningen x och duallösningen y uppfyller komplementaritetsvillkoren om n X yi aij xj − bi = 0 i = 1, . . . , m j=1 Om primalen (dualen) är obegränsad, så saknar dualen (primalen) tillåten lösning. xj m X ! aij yi − cj = 0 j = 1, . . . , n i=1 Båda kan dock sakna lösning. Kaj Holmberg (LiU) 2 / 31 TAOP88 Optimering 27 augusti 2015 3 / 31 Kaj Holmberg (LiU) TAOP88 Optimering 27 augusti 2015 4 / 31 LP-dualitet: Komplementaritet LP-dualitet: Slutsatser Komplementaritetsvillkoren kan skrivas som Fullständiga dualsatsen T y (Ax − b) = 0 • Om primalen har en tillåten, begränsad optimallösning, x ∗ , så har även dualen en tillåten, begränsad optimallösning, y ∗ , och c T x ∗ = bT y ∗ . • Om primalen är obegränsad, så saknar dualen tillåten lösning. • Om primalen saknar tillåten lösning, så saknar dualen lösning eller har obegränsad lösning. x T (AT y − c) = 0 Sats Om x och y uppfyller komplementaritetsvillkoren, så är c T x = bT y . (Symmetriskt i primal - dual.) (peka på bevis) Följdsats Om x är tillåten i primalen, y är tillåten i dualen och x och y uppfyller komplementaritetsvillkoren, så är x optimal i primalen och y optimal i dualen. Åt andra hållet: Starka dualsatsen Om x och y är optimallösningar så gäller c T x = bT y . Kaj Holmberg (LiU) TAOP88 Optimering 27 augusti 2015 5 / 31 LP-dualitet: Formulering Standard: Primal: max z = c T x då Ax ≤ b x ≥0 Optimalitetsvillkor (KKT) Primal tillåtenhet + Dual tillåtenhet + Komplementaritet = Optimalitet Kaj Holmberg (LiU) TAOP88 Optimering 27 augusti 2015 6 / 31 27 augusti 2015 8 / 31 LP-dualitet: Formulering, symmetriskt Dual: min v = bT y AT y ≥ c då y ≥0 Standard: Primal/dual: max z = c T x då Ax ≤ b x ≥0 Dual/primal: min v = bT y AT y ≥ c då y ≥0 Variationer: Variationer: Primal max Ax ≤ b Ax ≥ b Ax = b x ≥0 x ≤0 x fri Kaj Holmberg (LiU) ⇒ ⇒ ⇒ ⇒ ⇒ ⇒ * max Ax ≤ b Ax ≥ b Ax = b x ≥0 x ≤0 x fri Dual min y ≥0 y ≤0 y fri T A y ≥c AT y ≤ c AT y = c TAOP88 Optimering 27 augusti 2015 7 / 31 Kaj Holmberg (LiU) ⇔ ⇔ ⇔ ⇔ ⇔ ⇔ * min y ≥0 y ≤0 y fri T A y ≥c AT y ≤ c AT y = c TAOP88 Optimering LP-dualitet: Formulering: Exempel Primal: max z = 2x1 + 3x2 − 5x3 då 2x1 + 3x2 + 2x3 ≤ 7x1 + x2 − x3 ≥ 3x1 + 4x2 + 4x3 = x1 ≥ 0, x2 fri, x3 ≤ 0 LP-dual: min v = 10y1 + 16y2 + 43y3 då 2y1 + 7y2 + 3y3 3y1 + y2 + 4y3 2y1 − y2 + 4y3 y1 ≥ 0, y2 ≤ 0, y3 Komplementaritetsvillkoren: y1 (2x1 + 3x2 + 2x3 − 10) = y2 (7x1 + x2 − x3 − 16) = x1 (2y1 + 7y2 + 3y3 − 2) = x3 (2y1 − y2 + 4y3 + 5) = Kaj Holmberg (LiU) TAOP88 Optimering Dualitet och baslösningar 10 16 43 (1) (2) (3) Primal: max z = c T x då Ax = b x ≥0 (y1 ) (y2 ) (y3 ) Baslösning: Primal: max z = cBT xB + cNT xN då BxB + NxN = b xB , xN ≥ 0 ≥ 2 (1) (x1 ) = 3 (2) (x2 ) ≤ −5 (3) (x3 ) fri Kompl xBT (B T y − cB ) = 0 xNT (N T y − cN ) = 0 T 0 0 0 0 Dual tillåtenhet: Sätt in y i N T y ≥ cN . Uppfyllt om ĉN ≤ 0 där ĉN = cN − (cBT B −1 N)T . T Primal och dual lösning: xB = B −1 b, xN = 0, y = B −1 cB . 27 augusti 2015 9 / 31 Kaj Holmberg (LiU) TAOP88 Optimering 27 augusti 2015 10 / 31 27 augusti 2015 12 / 31 LP-dualitet: Exempel max z = 4x1 + 3x2 då 2x1 + 3x2 x1 6x1 + 4x2 x1 , x2 Slutsats Dual tillåtenhet ⇔ primal optimalitet. Vi har bevisat starka dualsatsen. Om primalen har en tillåten, begränsad optimallösning, x ∗ = B −1 b, så har även dualen en tillåten, begränsad optimallösning, som ges av T y ∗ = B −1 cB . Komplementaritetsvillkoren: y1 (2x1 + 3x2 − 30) y2 ( x1 − 6) y3 (6x1 + 4x2 − 50) x1 (2y1 + y2 + 6y3 x2 (3y1 + 4y3 Både primalen och dualen har det optimala målfunktionsvärdet z ∗ = cBT B −1 b. 27 augusti 2015 ≤ 30 ≤ 6 ≤ 50 ≥ 0 (1) (2) (3) (y1 ) (y2 ) (y3 ) LP-dual: min v = 30y1 + 6y2 + 50y3 då 2y1 + y2 + 6y3 ≥ 4 (1) (x1 ) 3y1 + 4y3 ≥ 3 (2) (x2 ) y1 , y2 , y3 ≥ 0 Starka dualsatsen, version 2 TAOP88 Optimering Dual: min v = bT y då B T y ≥ cB N T y ≥ cN y fri xB > 0 ⇒ B T y = cB ⇒ y = B −1 cB = (cBT B −1 )T . Dualitet och baslösningar, forts Kaj Holmberg (LiU) Dual: Kompl.: min v = bT y då AT y ≥ c x T (AT y − c) = 0 y fri 11 / 31 Kaj Holmberg (LiU) = 0 = 0 = 0 − 4) = 0 − 3) = 0 TAOP88 Optimering LP-dualitet: Exempel LP-dualitet och simplextablån Primal optimallösning: x1 = 3, x2 = 8, z = 36. Duallösningen återfinnes under slackvariablerna i optimaltablån. Villkor 1 aktivt. Villkor 2 ej aktivt ⇒ y2 = 0. Villkor 3 aktivt. Bas z x4 x1 x2 x1 > 0 ⇒ 2y1 + y2 + 6y3 = 4. x2 > 0 ⇒ 3y1 + 4y3 = 3. TAOP88 Optimering x1 0 0 1 0 x2 0 0 0 1 x3 1/5 2/5 -2/5 3/5 x4 0 1 0 0 x5 3/5 -3/10 3/10 -1/5 b̂ 36 3 3 8 Dual optimallösning: y1 = 1/5, y2 = 0, y3 = 3/5. Dual optimallösning: y1 = 1/5, y2 = 0, y3 = 3/5. Kaj Holmberg (LiU) z 1 0 0 0 27 augusti 2015 13 / 31 Kaj Holmberg (LiU) TAOP88 Optimering 27 augusti 2015 14 / 31 LP-dualitet: Kappsäcksproblem: Exempel Skuggpriser max z = 2x1 + 3x2 + 5x3 + 7x4 då 2x1 + 2x2 + 2x3 + 4x4 ≤ 10 (y ) x1 , x2 , x3 , x4 ≥ 0 LP-dual: min v = 10y då 2y ≥ 2 (1) (x1 ) 2y ≥ 3 (2) (x2 ) 2y ≥ 5 (3) (x3 ) 4y ≥ 7 (4) (x4 ) y ≥ 0 Skriv som: min v = 10y då y ≥ 1, y ≥ 3/2, y ≥ 5/2, y ≥ 7/4, y ≥ 0 Hur mycket förändras det optimala målfunktionsvärdet av en liten ändring av ett högerled? Optimallösning: y = 5/2, v = 25. I en viss baslösning har vi xB = B −1 b och y = B −1 cB . Detta mått kallas skuggpris (eller marginalpris). Starka dualsatsen: z = c T x = bT y eller z = X bi yi i Derivatan av z med avseende på bi är yi . Slutsats Skuggpriserna ges av den optimala duallösningen. T Skuggpriserna är oförändrade så länge som samma baslösning är optimal. Om ändringen i b ger B −1 b 6≥ 0, ändras optimal baslösning/skuggpriser. y > 0 ⇒ 2x3 = 10 ⇒ x3 = 5. Problemet löst. B −1 b ≥ 0 ger gränser på b för oförändrad optimallösning. Det blev en metod! maxj (cj /aj ) ger bästa xj . Ta med den. TAOP88 Optimering cj xj = j Komplementaritetsvillkoren: Endast duala bivillkor 3 aktivt. ⇒ x1 = 0, x2 = 0, x4 = 0. Kaj Holmberg (LiU) X 27 augusti 2015 15 / 31 Kaj Holmberg (LiU) TAOP88 Optimering 27 augusti 2015 16 / 31 Känslighetsanalys Känslighetsanalys Har optimallösning. Vi beaktar ändringar av: Indata ändras. • Högerled, b. (Påverkar tillåtenhet.) Vad händer? • Målfunktionskoefficient, c. (Påverkar optimalitet.) För ickebasvariabel, cN . Är optimallösningen helt oförändrad? För basvariabel, cB . Är optimala baslösningen oförändrad? • Addition av nytt bivillkor, aiT x ≤ bi . (Påverkar tillåtenhet.) För hur stora ändringar ändras inte (bas)lösningen? Om optimal baslösning inte ändras blir alla förändringar lätta att räkna ut, för då ändras inte B −1 . T Stoppa in nya b och/eller c i xB = B −1 b, y = B −1 cB och z = cBT xB . Kaj Holmberg (LiU) TAOP88 Optimering 27 augusti 2015 (Dvs. addition av ett dualt bivillkor, akT y ≥ ck .) (Påverkar optimalitet, dvs. dual tillåtenhet.) 17 / 31 Känslighetsanalys mer exakt Kaj Holmberg (LiU) TAOP88 Optimering 27 augusti 2015 18 / 31 Vårt musexempel max z = 4x1 + 3x2 då 2x1 + 3x2 x1 6x1 + 4x2 x1 , x2 Har optimallösning: Primal, x ∗ , och dual, y ∗ . Primal/dual tillåtenhet: xB∗ = B −1 b ≥ 0, xN∗ = 0, N T y ∗ ≥ cN . • Ändring av högerled, b: Kolla primal tillåtenhet: xB = B −1 b ≥ 0. * Ändring i cN : Kolla cN ≤ N T y ∗ . (Ändringen i ĉ blir lika stor som ändringen i c.) T * Ändring i cB : Beräkna y = B −1 cB och kolla N T y ≥ cN . (Hela ĉ kan ändras.) • Addition av nytt bivillkor, aiT x ≤ bi : Kolla primal tillåtenhet: aiT x ∗ ≤ bi . • Addition av ny variabel, xk , med kolumn ak och målfunktionskoefficient ck : Kolla dual tillåtenhet: akT y ∗ ≥ ck . Alternativ: Kolla primal optimalitet: ĉk = ck − akT y ∗ ≤ 0. TAOP88 Optimering 27 augusti 2015 ≤ 30 ≤ 6 ≤ 50 ≥ 0 (1) (2) (3) (y1 ) (knappar) (y2 ) (optik) (y3 ) (monteringstid) LP-dual: min v = 30y1 + 6y2 + 50y3 då 2y1 + y2 + 6y3 ≥ 4 (1) (x1 ) 3y1 + 4y3 ≥ 3 (2) (x2 ) y1 , y2 , y3 ≥ 0 • Ändring av målfunktionskoefficient, c: Kolla dual tillåtenhet (dvs. primal optimalitet). Kaj Holmberg (LiU) • Addition av ny variabel, xk , med kolumn ak och målfunktionskoefficient ck . 19 / 31 Optimaltablå: Bas z x1 z 1 0 x4 0 0 x1 0 1 x2 0 0 x2 0 0 0 1 Kaj Holmberg (LiU) x3 1/5 2/5 -2/5 3/5 x4 0 1 0 0 x5 3/5 -3/10 3/10 -1/5 (Optimus) (Rullmus) b̂ 36 3 3 8 TAOP88 Optimering 27 augusti 2015 20 / 31 Känslighetsanalys i simplextablån Känslighetsananlys i simplextablån Optimaltablå för vårt exempel: x3 x4 x5 Bas z x1 x2 z 1 0 0 1/5 0 3/5 x4 0 0 0 2/5 1 -3/10 x1 0 1 0 -2/5 0 3/10 -1/5 x2 0 0 1 3/5 0 Kan läsa av B −1 under slackvariablerna i optimaltablån. b̂ 36 3 3 8 Bas z x4 x1 x2 Optimallösning: x1 = 3, x2 = 8, z = 36. Skuggpriser: y1 = 1/5, y2 = 0, y3 = 3/5. z 1 0 0 0 x1 0 0 1 0 x2 0 0 0 1 x3 1/5 2/5 -2/5 3/5 x4 0 1 0 0 x5 3/5 -3/10 3/10 -1/5 b̂ 36 3 3 8 2/5 1 −3/10 b1 2b1 /5 − 9 3/10 6 = −2b1 /5 + 15 ≥ 0 B −1 b = −2/5 0 3/5 0 −1/5 3b1 /5 − 10 50 vilket ger 22.5 ≤ b1 ≤ 37.5. Vad skulle vi tjäna på en ökning av tillgången av knappar? Det är en ökning av b1 , så vi tjänar y1 = 1/5 per enhets ökning. Så vi tjänar 1/5 kr per ytterligare knapp, för b1 upp till 37.5. För hur stor ökning gäller detta? Kolla B −1 b ≥ 0. Kaj Holmberg (LiU) TAOP88 Optimering 27 augusti 2015 21 / 31 Exempel: Ny variabel TAOP88 Optimering 27 augusti 2015 22 / 31 Exempel: Ny variabel Ska MPigg AB göra en ny sorts mus, SuperGamer, som består av en knapp och två optiska enheter, kräver 5 min för montering och ger intäkten 3 kr/enhet? 1 2 målfunktionskoefficient: c6 = 3. Ny variabel, x6 : kolumn: a6 = 5 Dual optimallösning (skuggpriser) : y1 = 1/5, y2 = 0, y3 = 3/5. ĉ6 = c6 − a6T y = 7/2 − (1/5 + 3) = 3/10. Inför nya kolumnen i optimaltablån: â6 = B −1 a6 . 2/5 1 −3/10 1 9/10 3/10 2 = 11/10 â6 = −2/5 0 3/5 0 −1/5 5 −2/5 Bas z x4 x1 x2 Slutsats: Låt x6 förbli noll. Gör inga SuperGamer. MPigg vill justera priset så att SuperGamer blir lönsam. Bestäm c6 så att ĉ6 > 0: ĉ6 = c6 − a6T y = c6 − (1/5 + 3) = c6 − 3.2 > 0 om c6 > 3.2. 27 augusti 2015 z 1 0 0 0 x1 0 0 1 0 x2 0 0 0 1 x3 1/5 2/5 -2/5 3/5 x4 0 1 0 0 x5 3/5 -3/10 3/10 -1/5 x6 -3/10 9/10 11/10 -2/5 b̂ 36 3 3 8 Fortsätt med simplexmetoden. x6 inkommande. Utgående? För att få lite marginal sätter man priset så att intäkten blir 3:50 kr. TAOP88 Optimering Ny optimallösning? Inför i optimaltablån: Reducerad kostnad (dual tillåtenhet): ĉ6 = c6 − a6T y = 3 − (1/5 + 3) = −1/5 ≤ 0. Kaj Holmberg (LiU) Kaj Holmberg (LiU) 23 / 31 Kaj Holmberg (LiU) TAOP88 Optimering 27 augusti 2015 24 / 31 Känslighetsananlys från koder Känslighetsananlys från koder På skärmen (rensat): Reading model section from lp-ko1.mod... 11 lines were read Model has been successfully generated GLPK Simplex Optimizer, v4.44 4 rows, 2 columns, 7 non-zeros Preprocessing... 2 rows, 2 columns, 4 non-zeros Scaling... A: min|aij| = 2.000e+00 max|aij| = 6.000e+00 ratio = Problem data seem to be well scaled Constructing initial basis... Size of triangular part = 2 * 0: obj = 0.000000000e+00 infeas = 0.000e+00 (0) * 3: obj = 3.600000000e+01 infeas = 0.000e+00 (0) OPTIMAL SOLUTION FOUND Time used: 0.0 secs Memory used: 0.1 Mb (108000 bytes) Writing basic solution to ‘lp-ko1.sol’... Indatafil: (GMPL) var x1 >= 0; var x2 >= 0; maximize obj: 4*x1 + 3*x2; subject to con1: 2*x1 + 3*x2 <= 30; subject to con2: x1 <= 6; subject to con3: 6*x1 + 4*x2 <= 50; end; Lösning av problemet: Skriv glpsol -m lp-ko1.mod -o lp-ko1.sol Kaj Holmberg (LiU) TAOP88 Optimering 27 augusti 2015 25 / 31 Kaj Holmberg (LiU) TAOP88 Optimering Känslighetsananlys från koder Känslighetsananlys från koder I utdatafilen lp-ko1.sol (rensat): Lösning av problemet med känslighetsanalys: Skriv Problem: Rows: Columns: Non-zeros: Status: Objective: glpsol -m lp-ko1.mod --bounds lp-ko1.bnd lp 4 2 7 OPTIMAL obj = 36 (MAXimum) No. Row name --- -----------1 obj 2 con1 3 con2 4 con3 3.000e+00 27 augusti 2015 26 / 31 I utdatafilen lp-ko1.bnd (rensat): GLPK 4.44 - SENSITIVITY ANALYSIS REPORT Problem: lpluma Objective: obj = 36 (MAXimum) St Activity Lower bound Upper bound Marginal -- ----------- ----------- ------------ ----------B 36 NU 30 30 0.2 B 3 6 NU 50 50 0.6 No. Row name Slack Lower bound Marginal Upper bound ------ ------------ -- ------------- ------------- ------------1 obj BS 36.00000 -36.00000 -Inf . +Inf No. Column name St Activity Lower bound Upper bound Marginal --- ------------ -- ----------- ----------- ------------- ---------1 x1 B 3 0 2 x2 B 8 0 St Activity Activity O range ------------- -----30.00000 36.00000 2 con1 NU 30.00000 . .20000 -Inf 30.00000 22.50000 37.50000 3 con2 BS 3.00000 3.00000 . -Inf 6.00000 . 8.33333 4 con3 NU 50.00000 . .60000 -Inf 50.00000 40.00000 60.00000 Karush-Kuhn-Tucker optimality conditions: Kaj Holmberg (LiU) TAOP88 Optimering 27 augusti 2015 27 / 31 Kaj Holmberg (LiU) TAOP88 Optimering 27 augusti 2015 28 / 31 - Känslighetsananlys från koder LP-dualen till ett strukturerat problem Sida 2 i utdatafilen lp-ko1.bnd (rensat): Tillordningsproblemet: Varje person i skall tilldelas en uppgift j. n X n X min cij xij GLPK 4.44 - SENSITIVITY ANALYSIS REPORT Problem: lpluma Objective: obj = 36 (MAXimum) No. Column name j=1 n X Obj coef Activity Obj coef Obj value at Limiting Marginal range range break point variable ------ ------------ -- ------------- ------------- ---------- ------------- ------------- -----------1 x1 BS 3.00000 4.00000 -Inf 2.00000 30.00000 con3 . 6.00000 4.50000 37.50000 con1 2 x2 St då BS Activity 8.00000 3.00000 . 3.50000 10.00000 2.66667 6.00000 33.33333 con1 60.00000 con3 LP-dualen: i=1 j=1 Page 2 n X xij = 1 i = 1, . . . n (αi ) xij = 1 j = 1, . . . n (βj ) i=1 xij ≥ 0 max n X i=1 End of report då αi + för alla i, j n X βj j=1 αi + βj ≤ cij för alla (i, j) (xij ) Komplementaritetsvillkoren: xij (αi + βj − cij ) = 0 för alla (i, j) Kaj Holmberg (LiU) TAOP88 Optimering 27 augusti 2015 29 / 31 TAOP88 Optimering 27 augusti 2015 31 / 31 Vileopt Kaj Holmberg (LiU) Kaj Holmberg (LiU) TAOP88 Optimering 27 augusti 2015 30 / 31