Tie breaking in de simplex methode Tijdens de Simplexmethode kan op een aantal momenten onduidelijk zijn wat je moet doen: 1. Variabele die de basis in gaat: Zoek de grootste coëfficiënt in de doelfunctie. Wat als er twee grootste zijn? Voorbeeld: Z = 3x 1 + 3x 2. Antwoord: Kies er maar een (Bv. de eerste) 2. Variabele die uit de basis gaat: Kijk hoe groot de variabele kan worden (quotiëntregel). Wat doe je als er coëfficiënten 0 zijn? Voorbeeld: 2a. 2x 1 + x 3 = 4, dan x 1 4/2 = 2 (want x 3 0) Normale situatie. 2b. -2x 1 + x 3 = 4, dan x 1-4/2 = -2. Dit is altijd waar, dus niets te controleren. 2c. 2x 1 + x 3 = -4, dan x 1-4/2 = -2. Niet feasible. Kan niet! Rekenfout. 2d. -2x 1 + x 3 = -4, dan x 1 4/2 = 2. Kan niet, want x 1 = 0 was feasible. Rekenfout! Conclusie: quotiëntregel alleen toepassen als pivotelement > 0 en rechterlid 0. 3. Twee quotiënten zijn gelijk. Je loopt tegen twee constraints tegelijk op. Dit kan leiden tot oneindige loop (cycling). Hiervoor zijn oplossingen bekend.
4. Er is geen uittredende variabele, omdat alle coëfficiënten in pivotkolom 0 zijn. Het probleem is dan onbegrensd (Meestal fout in de modellering) 5. Er zijn meer optimale oplossingen met dezelfde doelwaarde. De Simplexmethode vindt de eerste. Simplexalgoritme kan verder in een richting waarin de doelfunctie niet verbetert. Zo kun je ook andere optima vinden.
Twee fasen methode. De Big-M methode geeft bij implementatie numerieke problemen (cancellation, aftrekken van grote getallen is onbetrouwbaar). In de twee fasen aanpak wordt eerst het deel met de M opgelost (resulteert in feasible punt). Vervolgens wordt het beste punt gevonden. Originele probleem: Min Z = 0.4 x 1 + 0.5 x 2 z.d.d. 0.3x 1 + 0.1x 2 2.7 0.5x 1 + 0.5x 2 = 6 0.6x 1 + 0.4x 2 6 en x 1, x 2 0 Simplex vorm: Min Z = 0.4 x 1 + 0.5 x 2 + Mx 4 + Mx 6 z.d.d. 0.3x 1 + 0.1x 2 + x 3 = 2.7 0.5x 1 + 0.5x 2 + x 4 = 6 0.6x 1 + 0.4x 2 x 5 + x 6 = 6 en x 1, x 2, x 3, x 4, x 5, x 6 0 Fase 1 (alleen het Big-M deel van de doelfunctie): Min Z = x 4 + x 6 z.d.d. 0.3x 1 + 0.1x 2 + x 3 = 2.7 0.5x 1 + 0.5x 2 + x 4 = 6 0.6x 1 + 0.4x 2 x 5 + x 6 = 6 en x 1, x 2, x 3, x 4, x 5, x 6 0 Na deze fase moet x 4 = x 6 = 0, anders is er geen feasible oplossing. Je vindt hiermee een toegelaten oplossing.
Fase 2 (nu is x 4 = x 6 = 0): Min Z = 0.4 x 1 + 0.5 x 2 z.d.d. 0.3x 1 + 0.1x 2 + x 3 = 2.7 0.5x 1 + 0.5x 2 = 6 0.6x 1 + 0.4x 2 x 5 = 6 en x 1, x 2, x 3, x 5 0 Hiermee vind je de beste toegelaten oplossing. Big-M krijg je als de nuloplosssing in het originele probleem niet toelaatbaar is. De eerste fase levert een toelaatbare oplossing. De tweede fase levert een optimale toelaatbare oplossing
Het duale probleem Voorbeeld: Data voor kunstmestproductie Benodigde grondstoffen Grondstof Super-G Snel-G Normaal-G Voorraad (ton) 1 3 2.5 2 1250 2 4 2 1 1000 Verkoopprijs/ton 275 210 175 Beslisvariabelen: x 1 = aantal ton Super-G x 2 = aantal ton Snel-G x 3 = aantal ton Normaal-G LP-model: Max 275x 1 + 210x 2 + 175x 3 z.d.d. 3x 1 + 2.5x 2 + 2x 3 1250, 4x 1 + 2x 2 + x 3 1000, en x 1, x 2, x 3 0.
Invoer: MAX 275 X1 +210 X2 +175 X3 3 X1 + 2.5 X2 + 2 X3 <= 1250 4 X1 + 2 X2 + X3 <= 1000 Uitvoer: SIMOPT Version 3.0 IEOR VU Amsterdam The following model was read: Objective Function : MAX 275.0000 X1 +210.0000 X2 +175.0000 X3 Subject to : 1. 3.0000 X1 +2.5000 X2 +2.0000 X3 <= 1250.0000 2. 4.0000 X1 +2.0000 X2 +1.0000 X3 <= 1000.0000 Summary of Results Value Objective Function : 111250.0000 Variable Activity Level Reduced Cost -------- -------------- ------------ X1 : 150.0000 0.0000 X2 : 0.0000 12.5000 X3 : 400.0000 0.0000 Slack or Surplus Shadow Prices ---------------- ------------- Constraint 1 0.0000 85.0000 Constraint 2 0.0000 5.0000 Accuracy Check Passed Oplossing: x 1 = 150, x 2 = 0, x 3 = 400. Doelwaarde = 111250.
Er wordt geen Snel-G geproduceerd (x 2 = 0). Vraag: Hoeveel moet de verkoopprijs van Snel-G worden verhoogd zodat er geproduceerd wordt? Vraag: Hoe neemt de opbrengst toe als er 1 ton grondstof 1 of 2 extra beschikbaar is? Stel een handelaar wil alle grondstoffen van het bedrijf kopen. Hij geeft y 1 euro per ton grondstof 1 y 2 euro per ton grondstof 2 Min 1250y 1 + 1000y 2 z.d.d. 3y 1 + 4y 2 275 2.5y 1 + 2y 2 210 2y 1 + y 2 175 en y 1, y 2 0 Dit heet het duale probleem Optimale doelwaarde is gelijk aan de optimale doelwaarde van het originele (primale) probleem. y 1 en y 2 heten schaduwprijzen y 1 = 85, y 2 = 5 y 1 geeft aan hoeveel extra winst 1 extra ton grondstof 1 oplevert.
Vraag: Hoeveel moet de verkoopprijs van Snel-G worden verhoogd zodat er geproduceerd wordt? De kostprijs van Snel-G is 2.5y 1 + 2y 2 = 222.5 euro per ton De verkoopprijs is 210 euro. De prijs moet dus met 12.50 euro stijgen. Dit heten de gereduceerde kosten van x 2.
Primaal probleem Duaal probleem Max 275x 1 + 210x 2 + 175x 3 Min 1250y 1 + 1000y 2 z.d.d. 3x 1 + 2.5x 2 + 2x 3 1250, z.d.d. 3y 1 + 4y 2 275 4x 1 + 2x 2 + x 3 1000, 2.5y 1 + 2y 2 210 2y 1 + y 2 175 en x 1, x 2, x 3 0. en y 1, y 2 0 Primaal Duaal Max c T x Min b T y z.d.d. Ax b z.d.d. A T y c en x 0. en y 0. Optimale doelwaarden zijn gelijk! y i is de schaduwprijs van grondstof i = stijging van de winst bij 1 eenheid extra grondstof i. Economische kostprijs van product j is a y ij i Gereduceerde kosten van product j: m i= 1 * m * aij yi i=1 is het bedrag waarmee de winst van product j moet toenemen om product j te maken. c j
De simplexmethode is niet eindig (cycling) maar in de praktijk wel De simplexmethode is niet polynomiaal (Klee, Minty) maar in de praktijk wel: ca. 1.5m iteraties, maximaal 3m (m = #constraints) Rekentijd m 3. Inwendige puntmethoden zijn bewijsbaar polynomiaal. In de praktijk is het aantal iteraties constant, ca 20 80.
Ander manier om op duaal probleem te komen: Vind bovengrens m.b.v. constraints; Vermenigvuldig 3x 1 + 2,5x 2 + 2x 3 1250 Met 275/3: 275x 1 + 299,166x 2 + 183x 3 114583,333 Dus doelwaarde: 275x 1 + 210x 2 + 175x 3 275x 1 + 299,166x 2 + 183x 3 114583,333 Algemener: Vermenigvuldig de constraints met niet-negatieve y 1, y 2 : (3x 1 + 2,5x 2 + 2x 3 )y 1 + (4x 1 + 2x 2 + x 3 )y 2 1250y 1 + 1000y 2. Dit is (de beste) bovengrens voor 275x 1 + 210x 2 + 175x 3 als: Min 1250y 1 + 1000y 2 z.d.d. 3y 1 + 4y 2 275 2.5y 1 + 2y 2 210 2y 1 + y 2 175 en y 1, y 2 0 Dit is het duale probleem
Stel x is toelaatbaar voor het primale probleem, d.w.z.: x 0, Ax b Stel y is toelaatbaar voor het duale probleem, d.w.z.: y 0, A T y c Dan geldt: c T x (A T y) T x = (y T A)x = y T (Ax) y T b = b T y, want x 0, y 0. Gevolg: Doelwaarde primaal Doelwaarde duaal Dualiteitsstelling: Doelwaarde primaal = Doelwaarde duaal
Duale probleem van het duale probleem Primaal Duaal Max c T x Min b T y z.d.d. Ax b z.d.d. A T y c en x 0. en y 0. Omschrijven: Max -b T y z.d.d. (-A) T y -c y 0. Duaal-duaal: Min -c T z z.d.d. ((-A) T ) T z -b z 0. Omschrijven: Max z.d.d. c T z Az b z 0. Dus: Duaal-duaal = primaal.
Dualiseren met gelijkheidsconstraints? Primaal Max c T x z.d.d. A 1 x b 1 A 2 x = b 2 en x 0. Omschrijven : Max c T x Max c T x z.d.d. A 1 x b 1 z.d.d. Ax b A 2 x b 2 en x 0. (-A 2 )x -b 2 en x 0. Met A = A1 A2 A 2, b = b1 b2 b 2 Duaal: Min b T y z.d.d. A T y c en y 0. dus
Min b T 1 y 1 + b T 2 y 2 - b T 2 y 3 z.d.d. A T 1 y 1 + A T 2 y 2 A T 2 y 3 c en y 1, y 2, y 3 0. Noem z 1 = y 1 en z 2 := y 2 y 3 : Primaal Duaal Max c T x Min b T 1 z 1 + b T 2 z 2 z.d.d. A 1 x b 1 z.d.d. A T 1 z 1 + A T 2 z 2 c A 2 x = b 2 en x 0. en z 1 0. (z 2 R)