Tentamen Optimalisering (IN2520) Datum: 5 november 2004, 14.00 17.00. Docent: Dr. J.B.M. Melissen Veel succes! 1 Deze opgave bestaat uit 15 tweekeuzevragen. Per goed antwoord krijg je 2 punten. a. Dynamisch programmeren is alleen toepasbaar voor het oplossen van lineaire problemen. Onjuist! Voor dynamisch programmeren is een recursieve structuur nodig, maar de kostenfunctie kan eventueel nietlineair zijn (bijvoorbeeld het voorbeeld met kansen uit het boek) b. Elk IP (geheeltallig lineair) probleem met een begrensd toegelaten gebied kan worden geformuleerd als een BIP (lineair binair) probleem. Juist. Omdat het toegelaten gebied begrensd is, is iedere variabele begrensd en kan dus met een eindig aantal binaire variabelen (binaire ontwikkeling) worden gerepresenteerd. c. De simplexmethode vindt voor elk LP probleem in eindig veel stappen een optimale oplossing, als deze bestaat. Onjuist. Er kan cycling optreden, waadoor het algoritme niet eindigt. d. Het algoritme van Dijkstra vindt in een netwerk met n knopen een kortste pad in hooguit n iteraties. Juist. Het algoritme van Dijkstra vindt in elke iteratie een nieuwe knoop waarvoor de kortste afstand is bepaald. e. Het aantal optimale oplossingen in een LP probleem met n variabelen en m beperkingen is hooguit m n Onjuist. Neem als doelfunctie de nulfunctie, dan zijn alle toegelaten oplossingen optimaal. Dat kunnen er oneindig veel zijn. f. De Hongaarse methode is een algoritme om toewijzingsproblemen op te lossen. Juist. g. Een transportprobleem waarin het aantal leveranciers niet gelijk is aan het aantal afnemers is niet goed geformuleerd. Dit kan worden gerepareerd door het invoeren van één of meer dummies. Onjuist. In een transportprobleem hoeven aantallen leveranciers en afnemers niet gelijk te zijn (wel de totale hoeveelheid geleverde en afgenomen goederen). h. De voorwaarde x 1 {1, 2, 5} kan in een IP probleem worden geformuleerd met lineaire voorwaarden. Juist. x 1 = y 1 2y 2 5y 3, met y 1, y 2, en y 3 binair en y 1 y 2 y 3 = 1. i. Bij de doelfunctie in een BIP probleem wordt de term f(x 1 ) opgeteld. Voor een willekeurige (nietlineaire) functie f kan dit niet worden geherformuleerd als een lineaire doelfunctie. Onjuist. De term kan worden vervangen door f(0) (f(1) f(0))x 1. Deze heeft dezelfde waarden voor x 1 = 0, 1 en is lineair. j. Als in de simplexmethode de grootte van de stap die wordt gezet in de grootste stijgrichting gelijk aan 0 is, dan is de optimale waarde bereikt. Onjuist. Er kan cycling optreden. k. In de oplossing van een maximaal stromingsprobleem op een netwerk met n knopen is de stroming in minstens n1 van de takken maximaal. Onjuist. Dat kunnen er veel minder zijn. l. Als een BIP probleem met n variabelen wordt opgelost met het branchandbound algoritme is het aantal gerelaxeerde LP problemen dat moet worden opgelost maximaal n 3. Onjuist. In het ergste geval moeten 2 n 1 gerelaxeerde LP problemen worden opgelost. m. De schaduwprijzen van een LP probleem zijn de kostencoëfficiënten in het duale probleem. Onjuist. Ze zijn de optimale oplossing van het duale probleem. n. De vereniging van twee convexe verzamelingen is niet altijd convex. Juist. o. In een minimaal kostenstromingsprobleem op een netwerk hebben alle opgelegde in en uitvoerwaarden in de knopen gehele waarden. Er is dan altijd een gehele optimale oplossing. Onjuist. Er kunnen nietgehele beperkingen op de takken zijn die zorgen dat de optimale oplossing niet geheel kan zijn.
2. Bekijk het volgende LP probleem: Max Z = x 1 2x 2 3x 3 4 zodat x 1 x 2 x 3 8 x 1 8 x 2 2 4 en x 1, x 2, x 3 0 a. (5 pt.) Herschrijf dit LP probleem in de standaardvorm voor de simplexmethode. b. (15 pt.) Los het probleem op met de simplexmethode (twee tableaus/iteraties is voldoende). a.het probleem staat nog niet in de standaardvorm, want er is een ongelijkheid, en er is geen 0 ongelijkheid voor x4. Na introduceren van extra variabelen wordt de standaardvorm nu: Max Z = x 1 2x 2 3x 3 4x 4 4x 4 Mx 7 zodat x 1 x 2 x 3 x 4 x 4 x 5 = 8 x 1 x 4 x 4 x 6 x 7 = 8 x 2 2x 4 2x 4 x 8 = 4 en x 1, x 2, x 3, x 4, x 4, x 5, x 6, x 7, x 8 0 b. 1 1 2 3 4 4 0 0 M 0 0 x 5 0 1 1 1 1 1 1 0 0 0 8 x 7 0 1 0 0 1 1 0 1 1 0 8 x 8 0 0 1 0 2 2 0 0 0 1 4 Omdat de vergelijking voor Z geen basisvariabelen mag bevatten, moet eerste de term M worden weggewerkt 1 M1 2 3 M4 M4 0 M 0 0 8M x 5 0 1 1 1 1 1 1 0 0 0 8 8 x 7 0 1 0 0 1 1 0 1 1 0 8 8 x 8 0 0 1 0 2 2 0 0 0 1 4 De meest negatieve coëfficiënt is M1, de ratio s zijn beide 8. x 1 gaat in de basis, x 5 gaat eruit. 1 0 M1 M2 5 5 M1 M 0 0 8 x 1 0 1 1 1 1 1 1 0 0 0 8 x 7 0 0 1 1 0 0 1 1 1 0 0 x 8 0 0 1 0 2 2 0 0 0 1 4 2 De meest negatieve coëfficiënt is 5. x 8 gaat uit de basis, x 4 gaat erin. 1 0 M3/2 M2 0 0 M1 M 0 5/2 18 x 1 0 1 3/2 1 0 0 1 0 0 1/2 10 x 7 0 0 1 1 0 0 1 1 1 0 0 0 0 1/2 0 1 1 0 0 0 1/2 2 Alle coëfficiënt zijn nietnegatief. Geen verbetering mogelijk. Optimale oplossing is: x 1 = 10, x 4 = 2, rest =0, dus in het oorspronkelijke probleem: x 1 = 10, = 2, Z = 18. Dit probleem kan trouwens ook direct worden opgelost, want uit de eerste twee ongelijkheden volgt direct dat x 2 = x 3 = 0 en x 1 = 8. De derde ongelijkheid levert dan dat 2, dus Z = x 1 4 = x 1 5 8 10 = 18, met gelijkheid als x 1 = 10, = 2, Z = 18. 3. Een emmer van 8 liter is gevuld met water. Verder zijn twee lege emmers gegeven, één van 5 liter en één van 3 liter. De 8 liter moet nu in twee gelijke porties van 4 liter worden verdeeld door het water een aantal keren heen en weer te gieter tussen de emmers. Je mag daarbij emmers alleen helemaal vol gieten, of alles wat je hebt erin gieten, geen andere maat mag worden gebruikt. De (eenvoudig te beantwoorden) vraag is hoe je dit met een minimaal aantal keren gieten voor elkaar kunt krijgen. Per keer wordt er van één emmer in een andere gegoten.
a. (3 pt.) Formuleer dit probleem als een kortste pad probleem in een netwerk, waar de knopen overeenkomen met verschillende mogelijke vullingen van de drie emmers en de gerichte takken overgangen die door gieten kunnen worden bereikt, bijvoorbeeld (8, 0, 0) > (5, 0, 3). Het netwerk ziet er als volgt uit: De lengte van elke tak is 1. b. (7 pt.) Los dit probleem op met het algoritme van Dijkstra. (8,0,0) 0 0 0 0 0 0 0 0 (3,5,0) 1 * 1 * 1 * 1 * 1 * 1 * 1 * (5,0,3) 1 * 1 * 1 * 1 * 1 * 1 * 1 * (0,5,3) 2 * 2 * 2 * 2 * 2 * 2 * (3,2,3) 2 * 2 * 2 * 2 * 2 * 2 * (5,3,0) 2 * 2 * 2 * 2 * 2 * 2 * (6,2,0) 3 * 3 * 3 * 3 * 3 * (2,3,3) 3 * 3 * 3 * 3 * 3 * (6,0,2) 4 * 4 * 4 * 4 * (2,5,1) 4 * 4 * 4 * 4 * (1,5,2) 5 * 5 * 5 * (7,0,1) 5 * 5 * 5 * (1,4,3) 6 * 6 * (7,1,0) 6 * 6 * (4,1,3) 7 * (4,4,0) 7 * Het kortste pad gaat dus langs (8,0,0) (3,5,0) (3,2,3) (6,2,0) (6,0,2) (1,5,2) (1,4,3) (4,4,0) in 7 stappen.
4. Een project bestaat uit 6 activiteiten. Het project kan worden voorgesteld als een netwerk met 6 knopen, waarin de activiteiten op de takken staan. Deze zijn: (1,2), (2,4), (4,6), (1,3), (3,5), (5,6). Er is een dummyactiviteit (2,3) ingevoerd. a. (2 pt.) Teken het netwerk. Wat is de functie van de dummyactiviteit? De dummyactiviteit zorgt ervoor dat activiteit 35 na 12 plaatsvindt (en niet om de toegankelijkheid van het netwerk te vergroten of de doorstroming te verbeteren, of om het netwerk te ontlasten). b. (3 pt.) Teken dit project in een netwerk waarbij de activiteiten als knopen gedefinieerd zijn. c. (5 pt.) De gegevens van de deelactiviteiten staan in de volgende tabel: Activiteit Normale duur Crashduur Normale kosten Crashkosten A: 1 2 6 4 4200 6200 B: 1 3 2 1 1800 3300 C: 2 4 4 2 5400 8000 D: 3 5 5 3 3600 5800 E: 4 6 7 4 5900 9500 F: 5 6 9 6 6300 8700 Bereken de minimale doorlooptijd van het project (zonder crashen) en het vroegste en laatste tijdstip waarop de activiteiten kunnen starten. Earliest start Earliest finish Latest start Latest finish A 0 6 0 6 B 0 2 4 6 C 6 10 9 13 D 6 11 6 11 E 10 17 13 20 F 11 20 11 20 End 20 Doorlooptijd is minimaal 20 weken. d. (5 pt.) Formuleer een LP model waarmee het project op de goedkoopst mogelijke manier in uiterlijk 13 weken kan worden afgerond. Activiteit Normale duur Crashduur aantal weken korter Normale kosten Crashkosten marginale crashkosten A: 1 2 6 4 2 4200 6200 1000
B: 1 3 2 1 1 1800 3300 1500 C: 2 4 4 2 2 5400 8000 1300 D: 3 5 5 3 2 3600 5800 1100 E: 4 6 7 4 3 5900 9500 1200 F: 5 6 9 6 3 6300 8700 800 Laat x X de starttijd van activiteit X zijn en y X het aantal weken waarmee de duur van activiteit X is verkort. Dan moet Min 1000y A 1500y B 1300y C 1100y D 1200y E 800y F z.d.d. 6 y A x C, 2 y B x D, 6 y A x D, x C 4 y C 7 y E 13, x D 5 y D 9 y F 13, y A 2, y B 1, y C 2, y D 2, y E 3, y F 3, en x C, x D, y A, y B, y C, y D, y E, y F 0. (voor het gemak zijn een paar overbodige variabelen zoals x A weggelaten) Oplossing: A, D en E worden 2 weken verkort en F 3 weken. Total;e kosten: 9000 euro. 5. Je weet door een insidetip dat bij een paardenrace één van de volgende drie paarden zeker gaat winnen: Rupert the Rocket, Lazy Joe en Old Nag. De uitbetaling is respectievelijk 2, 3 en 9 euro per ingelegde euro. Je hebt 170 euro en wilt die zodanig in zetten dat het bedrag dat je minimaal uitbetaald krijgt zo groot mogelijk is. a. (6 pt.) Formuleer dit probleem als een lineair maximaliseringsprobleem (Hint: Noem de minimale uitbetaling u en schrijf ongelijkheden voor u op. Zet R euro in op Rupert, L op Lazy Joe en O op Old Nag. De uitbetaling is dan u = min (2R, 3L, 9O), maar dit is geen lineaire functie. Los dit als volgt op: Max u z.d.d. u 2R, u 3L, u 9O, R L O 170, en R, L, O 0. De laatste nietnegativiteitsvoorwaarde zijn eigenlijk overbodig, want er is een toegelaten oplossing waarin u = 0 (kies alle variabelen 0), dus uit de eerste drie ongelijkheden volgt dan dat alle variabelen nietnegatief zijn. Je moet daar dan wel een argument bij geven. b. ( 4 pt.) Laat zien dat er een inzet is waarmee je in ieder geval 180 euro terugkrijgt. u = 180 als R = 90, L = 60, O = 20. Er geldt dan dat R L O = 170, dus dit is realiseerbaar (en optimaal). c. (5 pt.) Hoe verandert het model als je de gemiddelde opbrengst wilt maximaliseren, met de verwachting dat de winstkans voor de drie paarden gelijk is? Max (2R 3L 9O)/3, R L O 170, en R, L, O 0. De optimale oplossing krijg je door alles op Old Nag in te zetten. De nietnegativiteitseisen zijn hier wel essentieel, want anders kies je R = L = O, en O zo groot als je wilt; het probleem is dan onbegrensd.