Bonjour à tous, chers amis codeurs,
voilà, je fais appel à vous car j'ai besoin de votre aide. En effet, à partir d'un ensemble de faits, je dois générer un emploi du temps possible qui soit correct, sans conflits.
Actuellement, je me trouve avec les faits suivants :
Je précise qu'il n'y a pas d'indications sur ce que peut faire un prof, ni où doit se faire un enseignement. Donc on peut très bien se retrouver à faire un entrainement de natation dans le stade. Et tous les profs peuvent enseigner n'importe quel cours.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 creneau('9h_11h'). creneau('14h_16h'). jour(mercredi). jour(vendredi). typeEnseignement(competition). typeEnseignement(entrainement). typeEnseignement(match). prof(prof1). prof(prof2). moduleEns(football,entrainement). moduleEns(football,match). moduleEns(natation,entrainement). moduleEns(natation,competition). salles(stade,entrainement). salles(stade,match). salles(bassin,entrainement). salles(bassin,competition). profDispo(prof1,mercredi,'14h_16h'). profDispo(prof1,vendredi,'9h_11h'). profDispo(prof2,mercredi,'9h_11h'). profDispo(prof2,vendredi,'14h_16h'). profNonDispo(prof2,vendredi,'9h_11h') salleDispo(stade,mercredi,'14h_16h'). salleDispo(stade,vendredi,'9h_11h'). salleDispo(bassin,mercredi,'9h_11h'). salleDispo(bassin,vendredi,'14h_16h'). salleNonDispo(bassin,vendredi,'9h_11h'). salleNonDispo(stade,mercredi,'9h_11h').
J'ai essayé de faire ça :
Mais cela me retourne, en gros, tous les cas possibles (j'ai pas vérifié en détail, mais à peu près ça).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 emploiDuTemps(Salle,Prof,Jour,Creneau,Cours,Ens):- salleDispo(Salle,Jour,Creneau), profDispo(Prof,Jour,Creneau), salles(Salle,Cours), moduleEns(Ens,Cours).
Extrait du résultat de cette commande :
Rien que là, on se trouve en situation de conflits car deux enseignements (football et natation) vont se dérouler au même endroit, à la même heure, le même jour, avec le même prof.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Salle = stade, Prof = prof1, Jour = mercredi, Creneau = '14h_16h', Cours = entrainement, Ens = football ; Salle = stade, Prof = prof1, Jour = mercredi, Creneau = '14h_16h', Cours = entrainement, Ens = natation ;
Donc comment je pourrais faire pour générer un emploi du temps correct, sans conflits ? J'ai pensé à utiliser des listes, du genre listes de créneaux possibles, d'enseignements, de salles, pour une journée, et dès que quelque chose est utilisé, je l'enlève d'une des listes, et je vais piocher dans la liste à chaque fois. Mais je ne sais pas si c'est la bonne piste à exploiter, et si c'est une bonne idée, je ne sais pas comment la réaliser.
Merci de votre aide, j'en ai grandement besoin. (je dois finir tout ça avant Dimanche soir).
Partager