$Title Klausurplanung $Ontext Vorlesung: Service Operations Management Abschnitt: 3.4 Timetabling Problemstellung: Klausurplanung - Model - Author: Christoph Schwindt Date: 18/12/2019 $Offtext $eolcom// $include examination-timetabling_data.gms ******* exaktes Modell ******* variables tBar Benoetigte Anzahl an Perioden (Zielfunktion) x(j,k) gleich 1 falls Klausur j in Raum k unterrichtet y(j,t) gleich 1 falls Klausur j in Periode t stattfindet ; binary variables x, y ; equations def_tBar(j,t) Wenn in Zeitfenster t eine Klausur j stattfindet werden mindestens t Zeifenster benoetigt raum_klausur(j) Zuordnung von Raeumen i zu Klausur j perioden_klausur(j) Zuordnung von Perioden t zu Klausur j konfliktfrei_studiengangsemester(i,t) Studiengangsemester i nur eine Klausur in Periode t zuweisen lowerBound_tBar(k) Benoetige mindestens so viele Zeitfenster wie Raum k Klausuren zugewiesen werden konfliktfrei_raum_1(j,jPrime,k,t) Raum k keine zwei verschiedenen Klausuren j und jPrime in Periode t zuweisen ; def_tBar(j,t).. tBar =g= ord(t)*y(j,t) ; raum_klausur(j).. sum(k$k_in_K(j,k), x(j,k)) =e= 1 ; perioden_klausur(j).. sum(t, y(j,t)) =e= 1 ; konfliktfrei_studiengangsemester(i,t).. sum(j, a(i,j)*y(j,t)) =l= 1 ; lowerBound_tBar(k).. sum(j$k_in_K(j,k), x(j,k)) =l= tBar ; konfliktfrei_raum_1(j,jPrime,k,t)$((not sameas(j,jPrime)) and k_in_K(j,k) and k_in_K(jPrime,k)).. x(j,k) + x(jPrime,k) + y(j,t) + y(jPrime,t) =l= 3 ; model examination_timetabling / def_tBar, raum_klausur, perioden_klausur, konfliktfrei_studiengangsemester, lowerBound_tBar, konfliktfrei_raum_1 / ; options mip = cplex optcr = 0 reslim = 60 ; solve examination_timetabling minimzing tBar using mip ; display 'Ergebnisse des exakten Modells', tBar.l, x.l, y.l ; ********************************** ***** Room Assigment Problem ***** model room_assignment / raum_klausur, lowerBound_tBar / ; tBar.lo = smax(i, sum(j, a(i,j))) ; // Benoetige mindestens so viele Zeitfenster wie ein Studiengangsemeser Klausuren hat solve room_assignment minimzing tBar using mip ; *********************************** ***** Vertex Coloring Problem ***** equation konfliktfrei_raum_2 Jedem Raum k nur eine Klausur j pro Periode t zuweisen (Formulierung fuer gegebene x(jk) ; konfliktfrei_raum_2(k,t).. sum(j, x.l(j,k)*y(j,t)) =l= 1 ; model vertex_coloring / def_tBar, perioden_klausur, konfliktfrei_raum_2, konfliktfrei_studiengangsemester / ; solve vertex_coloring minimzing tBar using mip ; *********************************** display 'Ergebnisse der Dekompositionsheuristik', tBar.l, x.l, y.l ;