Bonjour à tous,
Je me casse la tête sur un exercice que je dois réussir à modéliser. Malgré tous mes essais, je n'arrive à faire fonctionner le programme (sous GUSEK).
Pourriez-vous peut-être me donner un coup de main?
Exercice :
P10_emploiDuTempsLycee.pdf
Programme AMPL (personnel)
Merci d'avanceCode:/* Travail Rercherche OP */ /* Horaire de Cours */ /* Ensemble d'objets indices */ set Professeurs := {1..9}; set Classes := {1..2}; set Coursjournaliers := {4}; set Jours := {5}; set Creneaux := {Coursjournaliers cross Jours}; /*Paramètres*/ param Cours{i in Professeurs, j in Classes} in {1,0}; #cours par jours et par professeurs /* Variables */ var X {i in Professeurs, j in Classes, k in Coursjournaliers} binary; # =1 si le professeur t donne cours à la classe c pendant la période k /* Fonction objectif */ minimize Trous : sum {p in Professeurs, c in Classes, l in 0..4-1, t in Creneaux} X[p,c,t+1]+ X[p,c,(t+t)]; /* Contraintes */ #planifier tous les cours : s.t. forall{p in Professeurs,c in Classes}: sum {l in Coursjournaliers} X[p,c,l] = Cours[t,c]; #seul un cour peut être donné par classe par 2heures s.t. forall{p in Professeurs, l in Coursjournaliers}: sum {p in Professeurs} X[p,c,l] <= 1; #Un prof donne un cours à la fois s.t. forall{p in Professeurs, l in Coursjournaliers}: sum {j in 1..C} X[i,j,k] <=1; #Une seule fois une matière par jours s.t. forall{p in Professeurs, c in Classes, d in 0..Coursjournaliers-1}: sum {l in d*Jours+1..(d+1)*Jours) X[p,c,l] <=1; #Sport le jeudi après midi = creneau 15, dans les deux classes s.t. {i = 8,9,j = 1,2,k = 15}: X[8,1,15] = 1; X[9,2,15]; #Pas de cours en première heure du lundi s.t. forall{p in Professeurs, c in Classes}: X[p,c,l] = 0; #Mr Efdehicks absent le lundi matin s.t. forall{l in 1..2}: X[4,2,l]=0; #Pas de cours de Biologie Mercredi s.t. forall{c in Classes, l in Jours+1..3*Jours}: X[ 2,c,l] = 0; s.t. forall{p in Professeurs, c in Classes, l in Coursjournaliers} X[p,c,l] in {0,1}; /* Données */ data; param Cours : 1 2 := 1 1 1 2 3 3 3 2 2 4 0 4 5 4 0 6 3 3 7 1 1 8 1 0 9 0 1 end;
-----