Case: Lectures & Lesroosters

Hup naar binnen.

Inleiding

Lesroosters, of roosters in het algemeen, zijn buitengewoon lastig goed in te richten. Dienstregelingen voor treinen, vliegtuigen, multicore-processors en assembly lines hebben in dat opzicht een boel met elkaar gemeen. Zalenroostering op een universiteit is geen uitzondering. In deze case moet een weekrooster gemaakt worden voor een vakkenlijst op Science Park.

Het verwachte aantal inschrijvingen wordt in de praktijk vaak gebruikt om een rooster te maken. Roosters maken wordt namelijk gedaan voordat het daadwerkelijke aantal inschrijvingen bekend is. Bij deze case is het daadwerkelijke aantal inschrijvingen per vak uit te rekenen, en hoef je uiteindelijk dus niet per se gebruik te maken van E(studenten).

Opdracht

  1. Rooster alle vakken uit de onderstaande tabel in. Je mag E(studenten) nog even vergeten.

  2. Hou nu wel rekening met E(studenten). Voor iedere student die niet meer in de zaal past krijg je een maluspunt. Hoe minder maluspunten, hoe beter. De grootste zaal heeft ook een avondslot van 17:00-19:00, maar gebruik van het avondslot kost vijf maluspunten.

  3. Werkcolleges en practica mogen in meerdere groepen gegeven worden. In tegenstelling tot een hoorcollege hoeven daarbij niet alle ingeschreven studenten in één sessie bedeeld te worden. Maak hiervan gebruik om het rooster te verbeteren.

  4. Roostering wil bekijken of roosters rekening kunnen houden met individuele vakinschrijvingen. In plaats van de geschatte hoeveelheid studenten maak je hier gebruik van het daadwerkelijke aantal inschrijvingen per vak. Ieder vakconflict (meer dan één activiteit op hetzelfde moment) in het rooster van één student levert één maluspunt op.

Studenten zien het liefst aaneengesloten activiteiten en zo min mogelijk “tussensloten”. Dat zijn tijdsloten zonder ingeroosterde activiteiten voor de student, maar waarvoor en waarna wel een activiteit plaatsvindt. Naast de wens van de student is dit ook belangrijk voor het onderwijs, zo zal het verzuim bij de verschillende activiteiten lager zijn als activiteiten aaneengesloten worden geroosterd. Ook is dit belangrijk voor de drukte op de faculteit, want bij zulke tussensloten nemen studenten plaats op (zelf)studieplekken en studieplekken zijn er er maar beperkt. Daarom wil roostering kijken of tussenuren geminimaliseerd kunnen worden.

  1. Een tussenslot voor een student op een dag levert één maluspunt op. Twee tussensloten op één dag voor een student levert drie maluspunten op. Drie tussensloten op één dag is niet toegestaan. De kans op verzuim bij meerdere tussensloten is namelijk aanzienlijk groter dan bij één tussenslot.

Zalen, Vakken en Inschrijvingen

Zaalnummber Max. capaciteit
A1.04 41
A1.06 22
A1.08 20
A1.10 56
B0.201 48
C0.110 117
C1.112 60
Vakken voor periode 4 #Hoorcolleges #Werkcolleges Max. stud. #Practica Max. stud. E(studenten)
Advanced Heuristics 1 0 nvt 1 10 22
Algoritmen en complexiteit 1 1 25 1 25 47
Analysemethoden en -technieken 1 0 nvt 0 nvt 60
Architectuur en computerorganisatie 2 0 nvt 0 nvt 19
Autonomous Agents 2 2 1 10 1 10 19
Bioinformatica 3 1 20 1 20 40
Calculus 2 1 1 40 0 nvt 90
Collectieve Intelligentie 3 1 20 1 20 65
Compilerbouw 2 1 40 1 40 70
Compilerbouw practicum 0 0 nvt 1 15 35
Data Mining 2 1 10 1 10 30
Databases 2 1 1 40 0 nvt 69
Heuristieken 1 1 1 25 0 nvt 44
Heuristieken 2 1 1 20 0 nvt 30
Informatie- en organisatieontwerp 2 1 15 1 15 40
Interactie-ontwerp 2 0 nvt 0 nvt 31
Kansrekenen 2 2 0 nvt 0 nvt 70
Lineaire Algebra 2 0 nvt 0 nvt 50
Machine Learning 2 0 nvt 0 nvt 25
Moderne Databases 1 1 20 1 20 60
Netwerken en systeembeveiliging 0 0 nvt 1 20 50
Programmeren in Java 2 0 0 nvt 1 20 95
Project Genetic Algorithms 0 0 nvt 1 15 40
Project Numerical Recipes 0 0 nvt 1 15 40
Reflectie op de digitale cultuur 2 1 20 0 nvt 53
Software engineering 1 1 40 1 40 75
Technology for games 2 1 20 0 nvt 50
Webprogrammeren en databases 2 1 20 1 20 46
Zoeken, sturen en bewegen 0 0 nvt 1 15 45

Data

Je kan de datafiles hier downloaden.

Output

Voor de output stellen wij het volgende voor in .csv format:

student vak activiteit zaal dag tijdslot
Quinten Programmeren in Java 2 w1 A1.04 ma 9
Bas Calculus 2 p1 B0.201 vr 13
Charlotte Compilerbouw h1 A1.08 wo 15
Marleen Kansrekenen 2 h2 C1.112 do 11
Marijn Data Mining p1 A1.06 di 9