$Title Stundenplanung $Ontext Vorlesung: Service Operations Management Abschnitt: 3.4 Timetabling Problemstellung: Allgemeine Stundenplannung - Model - Author: Christoph Schwindt Date: 17/12/2019 $Offtext $eolcom// $include class-scheduling_data.gms * Keine Verwendung von Indizes bei den Deklarationen, um die Kurse als mehrdimensionale Datentypen kodieren zu koennen variables tBar Benoetigte Anzahl an Perioden (Zielfunktion) x gleich 1 falls Lehrperson k Kurs j unterrichtet y gleich 1 falls Kurs j in Periode t stattfindet ; binary variables x, y ; equations def_tBar Definition der Anzahl benoetigter Perioden t lehrperson_kurs Zuordnung einer Lehrperson zu Kurs j perioden_kurs Zuordnung von Perioden zu Kurs j konfliktfrei_klasse Zuweisung von hoechstens einem Kurs in Periode t an Klasse i deputat Deputatsbedingung fuer Lehrperson k konfliktfrei_lehrperson Zuweisung von hoechstens einem Kurs in Periode t an Lehrperson k ; def_tBar(j,t).. tBar =g= ord(t)*y(j,t) ; lehrperson_kurs(j).. sum(k$k_in_K(j,k), x(j,k)) =e= 1 ; perioden_kurs(j).. sum(t, y(j,t)) =e= p(j) ; konfliktfrei_klasse(i,t).. sum(j, a(i,j)*y(j,t)) =l= 1 ; deputat(k).. sum(j$k_in_K(j,k), p(j)*x(j,k)) =l= R(k) ; konfliktfrei_lehrperson(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 course_scheduling / all / ; options mip = cplex optcr = 0 reslim = 28800 ; // Lange Rechenzeit erforderlich solve course_scheduling minimzing tBar using mip ; display tBar.l, x.l, y.l ;