Stelling: Een halfruimte Ha,b = {x Rn | aTx b} is convex. Bewijs: Kies x, y Ha,b en [0,1]. Voor het punt x+(1-)y geldt: aT(x+(1-)y) = aTx+(1-)aTy b+(1-)b = b (want 0 en (1-) 0). Dit betekent dat ook x+(1-)y Ha,b. Let op: a 0 is een vector, b is een getal. Stelling: De bal B = {x | |x| r} is convex. Bewijs: Kies x, y B en [0,1]. Voor het punt x+(1-)y geldt: |x+(1-)y|2 = (x+(1-)y)T(x+(1-)y) = 2|x|2+2(1-)xTy+ (1-)2|y|2 2r2+2(1-)r2 + (1-)2r2 = r2. Dit volgt uit de ongelijkheid van Schwarz xTy |x||y|. Andere manier: gebruik de driehoeksongelijkheid: |a+b| |a| + |b|. |x + (1-)y| |x| + (1-)|y| r + (1-)r = r. Stelling: De doorsnede van (willekeurig veel) convexe verzamelingen is weer convex. Bewijs: Het lijnstuk tussen twee punten in de doorsnede zit in elk van de verzamelingen (want deze zijn allemaal convex). Gevolg: Een bal in Rn is convex. Gevolg: Het toelaatbare gebied van een LP probleem is convex (Want doorsnede van halfruimten is convex). Een punt x heet een inwendig punt van een verzameling U, als er een klein bolletje {y | |x-y| r} is dat helemaal in U ligt. Stelling: Een niet-constante lineaire functie neemt zijn maximum nooit aan in een inwendig punt. Bewijs: f is lineair en niet-constant, d.w.z. f(x) = aTx met a 0. Stel f is maximaal in een inwendig punt x0 U. Dan is er een r > 0 zodat {y | |x0-y| r} U. Dit betekent dat x1 := x0 + (r/(2|a|))a U. Er geldt dat f(x1) = f(x0) + r|a|/2 > f(x0), dus f is niet maximaal in x0. Tegenspraak! Gevolg: De maximale waarde van een LP probleem wordt op de rand van het toegelaten gebied aangenomen. Bewijs: Het toegelaten gebied is gesloten en de doelfunctie lineair, dus het maximum wordt aangenomen. Dit kan niet in het inwendige, dus op de rand. Voor een constante doelfunctie wordt het maximum ook op de rand aangenomen. Gevolg: Er is een hoekpunt van het toelaatbare gebied waar het maximum van een LP probleem wordt aangenomen. Bewijs: Maxima liggen op de rand, dus er is een lineaire constraint met gelijkheid. Dit reduceert de dimensie van het probleem met 1. Ga zo door tot je in een hoekpunt eindigt. Een maximum is locaal als er in een bolletje rond het punt geen grotere waarde wordt aangenomen. Stelling: Omdat het toelaatbare gebied convex is, heeft een LP probleem geen locale maxima, alleen globale. Bewijs: Het rechte verbindingslijnstuk tussen een locaal en een globaal optimum ligt in het toelaatbare gebied en de doelfunctie is er lineair. De doelwaarden moeten dus gelijk zijn, anders is het locale optimum niet locaal optimaal. Geef een voorbeeld van een convex gebied K en een lineaire functie die op K niet zijn maximum aanneemt. K = R n, f(x) = x1 (f is niet begrensd) K = (0,1), f(x) = x (gebied bevat limiet 1 niet) K = , f(x) = x (gebied bevat geen punten) Geef een voorbeeld van een niet-convex gebied K, een lineaire functie op K en een punt in K waarop de functie een locaal maximum heeft, maar geen globaal maximum. [0,1] [2,3] of: Stelling: elke convexe K Rn is de doorsnede van (oneindig veel) halfruimtes. SIMPLEX METHODE Meetkundig idee: Onderzoek alleen hoekpunten. - Start in een willekeurig hoekpunt - Zoek de ribbe met de grootste stijging doelwaarde - Vind aan het eind van de ribbe een beter hoekpunt - Stop als geen verbetering mogelijk Praktische implementatie kan niet meetkundig maar moet algebraïsch. Ongelijkheden zijn onhandig voor algebra! Ga uit van de standaardvorm: Max z.d.d. Z = c1x1 + c2x2 + … + cnxn a11x1 + a12x2 + … + a1nxn b1 a21x1 + a22x2 + … + a2nxn b2 … … … … … … … … am1x1 + am2x2 + … + amnxn bm en x1, x2 …, xn 0 Hierin zijn alle bi 0, dus is x1 = x2 = … = xn = 0 een toegelaten startoplossing (CPF). Herschrijf alle ongelijkheden als gelijkheid: x1 + 4x2 17 0 17 - x1 - 4x2 Introduceer nieuwe extra variabele: x3 := 17 - x1 - 4x2 x1 + 4x2 17 x1 + 4x2 + x3 = 17 x3 0 x3 heet slackvariabele (verschilvariabele). x3 geeft aan hoe “erg” de ongelijkheid x1 + 4x2 17 geldt (x3 > 0) of juist níet geldt (x3 < 0), bv. hoeveel de productie onder of boven de bovengrens ligt. Voor elke ongelijkheid krijg je een nieuwe niet-negatieve (slack-)variabele. n variabelen met m nevenvoorwaarden () n + m variabelen met m nevenvoorwaarden (=) Een toegelaten oplossing die met een hoekpunt correspondeert heet een basisoplossing. In een hoekpunt zijn n (slack)variabelen = 0, dus maximaal m positieve variabelen. Dit heten de basisvariabelen van dat hoekpunt. Simplexmethode algebraïsch: 1 Startoplossing: toegelaten basisoplossing. (= nuloplossing van het oorspronkelijke probleem) 2 Maak nieuwe basisoplossing die één basisvariabele verschilt: Eén niet-basisvariabele wordt > 0 terwijl één andere basisvariabele = 0 wordt. (Dit correspondeert met langs een ribbe naar een nieuw hoekpunt gaan). Doelwaarde moet verbeteren. Nieuwe oplossing is toegelaten basisoplossing. 3 Ga door met 2 tot er geen verbetering meer is. Klaar. In een LP probleem is een locaal optimum ook globaal, dus het algoritme stopt terecht. Standaard voorbeeld uit het boek: Wyndor Glass Co. In drie fabrieken worden aluminium en houten kozijnen gefabriceerd. Aluminium kozijnen hebben 1 uur in fabriek 1 nodig en 3 uur in fabriek 3 per batch, de winst is $3000. Houten kozijnen hebben 2 uur in fabriek 2 nodig en 3 uur in fabriek 3 per batch, de winst is $5000. De fabrieken hebben voor productie resp. 4, 12 en 18 uur beschikbaar . LP model: Max z.d.d. Z = 3x1 + 5x2 x1 2x2 3x1 + 2x2 x1, x2 0 4 12 18 (capaciteit fabriek 1) (capaciteit fabriek 2) (capaciteit fabriek 3) (hoeveelheden) Vervang de ongelijkheden door gelijkheden (Augmented form): Max z.d.d. Z = 3x1 + 5x2 x1 + x3 = 2x2 + x4 = 3x1 + 2x2 +x5 = x1, x2, x3, x4, x5 0 4 12 18 Simplex algoritme: Start met de oorsprong van het oorspronkelijke probleem: (0, 0) (0, 0, 4, 12, 18) (Initial Basic Feasible solution (BF)) Is deze oplossing optimaal? De “vrije” (non-basic) variabelen zijn x1 en x2. De doelfunctie is Z = 3x1 + 5x2 en stijgt als x1 of x2 worden vergroot. De stijging is het grootst voor x2 (grootste richtingscoëfficiënt), dus x2 moet worden vergroot Hoe groot kan x2 worden? Constraints: x3 = 4 – x1 x4 = 12 – 2x2 x5 = 18 – 3x1 – 2x2 x1 = 0, x2 wil groter worden: x3 = 4 x4 = 12 – 2x2 x5 = 18 – 2x2 0 0 0 x2 6 x2 9 Conclusie: x2 kan maximaal 6 worden. In dat geval is x4 = 0. Startoplossing: na één iteratie: (0, 0, 4, 12, 18) basis: x3, x4, x5 (0, 6, 4, 0, 6) basis: x3, x2, x5 Wat nu? Z -3x1 - 5x2 = x1 + x3 = 2x2 + x4 = 3x1 + 2x2 +x5 = x1, x2, x3, x4, x5 0 0 4 12 18 Kunnen de niet-basis variabelen x1, x4 worden vergroot? Wat is het effect op de doelfunctie? Herschrijf het stelsel. Zorg dat de coëfficiënt in de x2 van de x4 vergelijking1 wordt en veeg alle andere coëfficiënten uit de x2 kolom weg: Z -3x1 - 5x2 x1 2x2 3x1 + 2x2 Z -3x1 - 5x2 x1 x2 3x1 + 2x2 Z -3x1 x1 + x3 + ½ x4 + 5/2x4 + x3 x2 3x1 = + x3 = + x4 = +x5 = + ½ x4 - x4 0 4 12 18 = = = +x5 = 0 4 6 18 = = = +x5 = 30 4 6 6 Nu zie je dat Z stijgt met als functie van x1, daalt met x4. Hoever kan x1 stijgen (als x4 = 0)? x3 = x2 = x5 = 4 - x1 x 1 4 6 6 - 3x1 x1 2 Gevolg: x1 kan maximaal 2 worden. Dan is x5 = 0. Nieuwe BF oplossing is (2, 6, 2, 0, 0) basis: x3, x2, x1 Volgende iteratie: herschrijf het stelsel: Z -3x1 x1 + 5/2x4 + x3 + ½ x4 - x4 x2 3x1 = = = +x5 = 30 4 6 6 wordt: Z -3x1 x1 + 5/2x4 x1 + ½ x4 - 1/3x4 +1/3x5 = = = = 30 4 6 2 x1 + 3/2x4 + x5 x3 + 1/3x4 - 1/3x5 + ½ x4 - 1/3x4 +1/3x5 = = = = 36 2 6 2 + x3 x2 Z x2 De doelfunctie daalt nu als je x4 of x5 vergroot. Locaal optimum = globaal optimum. BF oplossing is (2, 6, 2, 0, 0), dus x1 = 2, x2 = 6, Z = 36