Optimalisering en complexiteit

Website:website met extra informatie
Vakcode:INFOOPT
Studiepunten:7.5 ECTS (=5.25 oude studiepunten)
Periode:periode 3 (week 6 t/m 16, dwz 7-2-2005 t/m 22-4-2005; herkansing week 20)
Timeslot:A
Deelnemers:tot nu toe 98 inschrijvingen
Rooster:Dit is een oud rooster!
vormgroeptijdweekzaaldocent
college   ma 09-117-12,14,15 BBL-105b Han Hoogeveen
 
ma 09-136 BBL-105b
wo 09-116-11,13-15 MIN-211
practicum          Guido Diepen
 
werkcollege   ma 11-137-12,14,15 BBL-471 Peter Lennartz
Eelko Penninkx
Niels Reijngoud
Chaim Zonnenberg
    
wo 11-136-11,13-15 BBL-471
Inhoud:Bij dit vak draait het om modelleren en optimaliseren. In allerlei (productie)situaties spelen optimaliseringsproblemen een rol, waarbij niet alleen een oplossing moet worden gevonden, maar bij voorkeur zelfs de beste. Voorbeelden hiervan zijn dieetproblemen, mengproblemen, maar ook het zogenaamde glassnijprobleem, waarbij uit zo min mogelijk glasplaten van standaard formaat (6.00 x 3.21) de bestelde ruiten (van willekeurige afmetingen) moeten worden gesneden.

De hoofdmoot van het vak wordt gevormd door lineaire programmering. Verder wordt nog behandeld hoe je geheeltallige lineaire programmeringsproblemen op kunt lossen en er wordt kort behandeld hoe de techniek van `local search' werkt. In vergelijking met vorig jaar is het onderdeel `complexiteitstheorie' vervangen door `geheeltallige lineaire programmering' (dit is uitgewisseld met het vak Algoritmiek). In grote lijnen zal het college er als volgt uit gaan zien

  • Behandeling van de techniek van local search met een overzicht van hoe local search kan worden gebruikt om het `vehicle routing problem' op te lossen (wat werkt er wel in de praktijk, en wat werkt er niet). Bij het vehicle routing probleem heb je een aantal klanten die uit een depot beleverd moeten worden. Hiervoor heb je een aantal vrachtwagens beschikbaar met een gegeven capaciteit. Het doel is het vinden van een toegelaten oplossing (je neemt niet meer mee dan in de vrachtauto past, de chauffeurs hoeven niet te lang te werken, enz.) met minimale kosten (meestal gemeten in aantal gereden kilometers). Een voorbeeld hiervan is het `pizza-bezorg probleem', waarbij je dan ook nog de extra beperking hebt dat de klanten ongeduldig zijn. Een van de twee opdrachten die jullie krijgen (dit is de grootste van de twee) betreft het vinden van een zo goed mogelijke oplossing voor een instantie van een vehicle routing probleem met een paar zijvoorwaarden dat uit de praktijk komt; `match your skills with the masters'.
  • Inleiding Lineaire Algebra (vooral het rekenen met matrices). Hierna is een ieder die geen Lineaire Algebra heeft gehad voldoende voorbereid op hetgeen er gaat komen; het is dus niet nodig om Lineaire Algebra dan wel Graphics nieuwe stijl gevolgd te hebben.
  • Formuleren van een probleem als een (geheeltallig) lineair programmeringsprobleem, zodat je het door een solver (zoals CPLEX) op kunt laten lossen. Hier krijgen jullie een opdracht over.
  • Behandeling van een simpele versie van het Simplex algoritme, dat wordt gebruikt om lineaire programmeringsproblemen op te lossen.
  • Dualiteit en gevoeligheidsanalyse. Hierbij gaat het erom dat je een indruk krijgt hoe de oplossing van een probleem gaat veranderen wanneer je het probleem enigszins verandert, zonder natuurlijk het aangepaste probleem weer van `scratch' op te hoeven lossen.
  • Twee efficientere implementaties van de simplex methode en de methode van kolomgeneratie.
  • Het oplossen van geheeltallige lineaire programmeringsproblemen met behulp van branch-and-bound.
  • Twee praktijktoepassingen: het `gate-assignment' probleem en het `seriegrootte' probleem. Het eerste probleem speelt op Schiphol: de binnenkomende en vertrekkende vliegtuigen hebben een gate nodig; de vraag is natuurlijk welke. Een probleem hierbij is dat de werkelijke aankomst- en vertrektijden van vliegtuigen vaak een beetje van de planning afwijken, en je wilt dan natuurlijk zo min mogelijk aan je huidige oplossing veranderen. Het tweede probleem komt van Grolsch, en het gaat hier om de vraag hoeveel je van een bepaald product moet produceren en wanneer, zodat je uit voorraad kunt leveren zonder dat de voorraden uit het magazijn puilen.
Literatuur:M.S. Bazaraa, J.J. Jarvis, H.D. Sherali (1990). Linear programming and network flows. Wiley, New York. ISBN: 0-471-51284-2 of 0-471-63681-9.

Dit is hetzelfde boek als vorig jaar. Het wordt hoofdzakelijk als naslagwerk gebruikt. Het is daarom niet verplicht om het aan te schaffen, hoewel het door de vele voorbeelden erin wel een nuttig boek is. Indien gewenst kun je het vak volgen zonder boek (zie ook de evaluatie-enquetes). Aangezien het boek de afgelopen tijd schandalig in prijs verhoogd is raad ik aan het boek van iemand te lenen/kopen/... (de stippeltjes staan voor een illegale optie die ik niet letterlijk wil noemen). Wie het toch nieuw wil kopen raad ik aan om even op het web rond te kijken.

Werkvorm:Hoorcollege en Werkcollege. Na afloop van het college wordt een samenvatting op het web gezet. De opgaven voor het werkcollege komen voor aanvang op het web te staan; die moeten jullie zelf uitdraaien. Tijdens het werkcollege worden enkele uitwerkingen uitgedeeld zodat je je antwoorden kunt checken. Na afloop komen de uitwerkingen op het web te staan.

Het bezoek aan het werkcollege is niet verplicht; ik ga uit van de eigen verantwoordelijkheid van de studenten; de studenten die er de voorkeur aan geven om de opgaven niet eerst zelf te maken maar gelijk de uitwerkingen erbij pakken zie ik meestal het jaar erna terug (tenzij ze de moed op hebben gegeven). Trots kan ik vermelden dat volgens de evaluatie-enquetes Optimalisering het eerste vak is waarvan terecht door de docent wordt gezegd dat het bezoek aan het werkcollege noodzakelijk is om het tentamen te halen (voor de doorsnee student).
Tot slot kan ik nog vermelden dat we erin zijn geslaagd om Chaim en Eelko, die vorig jaar ook hebben geassisteerd en waarover zoveel lof werd uitgestrooid in de evaluatie-enquetes, opnieuw te contracteren voor het werkcollege; zij worden hierbij geassisteerd door de onvolprezen nieuwe kracht Niels Reijngoud.

Toetsvorm:Tentamen plus practicumopgave. Tentamen telt voor 60%; de modelleeropgave telt voor 10%; het local search practicum voor 30%. Op beide opdrachten moet minstens een 6.0 worden gescoord; op het tentamen moet minstens een 5.0 worden gescoord. In verband met de BaMa wordt de houdbaarheid van de deelresultaten beperkt; wie al een onderdeel heeft gehaald wordt verzocht dit jaar toch vooral de resterende onderdelen van het vak te gaan halen. Tussentijds worden er twee maal huiswerkopgaven opgegeven. Zoals de naam al zegt moet je die thuis uitwerken en inleveren. Het resultaat hierop is voldoende/onvoldoende, en het telt niet mee voor het eindresultaat. Wie beide keren onvoldoende haalt mag niet meedoen aan de herkansing. Samenwerken, overschrijven, naam bijschrijven, meeliften, enz. is toegestaan onder voorwaarde dat alle namen op de inleveropgave komen te staan. Wie een uitwerking overneemt van iemand zonder dit te vermelden kan het deelnemen aan het hertentamen schudden (indien ik het zie).
Inspanningsverplichting voor aanvullende toets:Om aan de aanvullende toets te mogen meedoen is ontbreken van ten hoogte 1 toetsactiviteit toegestaan.
Beschrijving:Dit is een vak uit de `algoritmiek' hoek, waarbij het er niet omgaat om een algoritme zo snel mogelijk te maken (al kun je je daar wel op uitleven bij de practicumopdracht); de nadruk ligt hier op het bedenken van een goed algoritme. Om een concreet voorbeeld te nemen: stel dat je een rij getallen moet sorteren op grootte. Een simpel algoritme (uit de steentijd) zou zijn het omwisselen van twee naast elkaar staande getallen die niet in de goede volgorde staan. Dit duurt lang, maar met een beetje handigheid in software engineering kun je het enorm versnellen, zodat je in het tijdperk van de Flintstones komt: het leven is comfortabel, maar het blijft de steentijd. De volgende stap voorwaarts is het vinden van een goed algoritme, zoals Quicksort; je kunt stellen dat je met een beetje normale implementatie dan al in de 20ste eeuw bent beland. Tot slot kun je natuurlijk nog het algoritme versnellen door een goede implementatie te kiezen, zodat je uiteindelijk in de 21ste eeuw terecht bent gekomen. Uiteraard kun je erover twisten wat nu belangrijker is: implementatie of algoritme, maar de top wordt geleverd door van beide het beste te kiezen.

De vakken Algoritmiek en Optimalisering vormen beide een vervolg op het vak Datastructuren. Het verschil zit in de algoritmen die bij deze beide vakken worden behandeld. Beide vakken kunnen onafhankelijk van elkaar worden gevolgd. Zie ook de website van het vak Algoritmiek.

wijzigen?