$Title Schulstundenplanung $Ontext Vorlesung: Service Operations Management Abschnitt: 3.4 Timetabling Problemstellung: Planung von Schulstunden - 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 ***** teacher assignment problem ***** variables tBar Benoetigte Anzahl an Perioden (Zielfunktion) x gleich 1 falls Lehrperson k Kurs j unterrichtet ; binary variables x ; equations lowerBound_tBar Benoetige mindestens so viele Perioden t wie einem Lehrer Stunden zugewiesen werden lehrperson_kurs Zuordnung von Lehrpersonen i zu Kursen j deputat Deputatsbedingung ; lowerBound_tBar(k).. tBar =g= sum(j$k_in_K(j,k), p(j)*x(j,k)) ; lehrperson_kurs(j).. sum(k$k_in_K(j,k), x(j,k)) =e= 1 ; deputat(k).. sum(j$k_in_K(j,k), p(j)*x(j,k)) =l= R(k) ; tBar.lo = smax(i, sum(j, a(i,j)*p(j))); // Benoetige mindestens so viele Perioden wie eine Klasse Stunden hat model teacher_assignment / lowerBound_tBar, lehrperson_kurs, deputat / ; options optcr = 0 reslim = 600 mip = cplex ; solve teacher_assignment minimzing tBar using mip ; ************************************** ******* edge coloring problem ******** variables null Dummy-Zielfunktionswert z gleich 1 falls Lehrer k in Periode t in Klasse i unterrichtet binary variables z ; equations konstante Dummy-Zielfunktion klassenstunden_perioden Zuordnung der Schulstunden einer Klasse i zu Perioden t konfliktfrei_klasse Jeder Klasse i nur einen Lehrer pro Periode t zuweisen konfliktfrei_lehrperson Jeder Lehrperson k nur eine Klasse i pro Periode zuweisen ; konstante.. null =e= 0 ; klassenstunden_perioden(i,k).. sum(t, z(i,k,t)) =e= sum(j$k_in_K(j,k), a(i,j)*p(j)*x.l(j,k)) ; konfliktfrei_klasse(i,t).. sum(k, z(i,k,t)) =l= 1 ; konfliktfrei_lehrperson(k,t).. sum(i, z(i,k,t)) =l= 1 ; model edge_coloring / konstante, klassenstunden_perioden, konfliktfrei_klasse, konfliktfrei_lehrperson / ; solve edge_coloring minimzing null using mip ; ************************************** display tBar.l, x.l, z.l ;