|
@@ -89,23 +89,32 @@ Deux solveurs très simples basés sur une représentation par numéro de job. L
|
89
|
89
|
|
90
|
90
|
## À faire : manipulation de représentations
|
91
|
91
|
|
92
|
|
-Ouvrez la méthode `EncodingTests.testJobNumbers()`.
|
|
92
|
+Ouvrez la méthode `DebuggingMain.main()`.
|
93
|
93
|
|
94
|
|
- - Pour les deux solutions en représentation par numéro de job, calculez (à la main) les dates de début de chaque tâche
|
95
|
|
- - implémentez la méthode `toString()` de la classe `Schedule` pour afficher les dates dé début de chaque tâche dans un schedule.
|
|
94
|
+ - Pour la solutions en représentation par numéro de job donnée, calculez (à la main) les dates de début de chaque tâche
|
|
95
|
+ - implémentez la méthode `toString()` de la classe `Schedule` pour afficher les dates de début de chaque tâche dans un schedule.
|
96
|
96
|
- Vérifiez que ceci correspond bien aux calculs que vous aviez fait à la main.
|
97
|
97
|
|
98
|
98
|
Création d'une nouvelle representation par ordre de passage sur les ressources :
|
99
|
99
|
|
100
|
|
-- Créer une classe `jobshop.encodings.ResourceOrder` qui contient la représentation par ordre de passage sur ressources vue dans les exercices.
|
101
|
|
-- Pour cette classe, implémentez la méthode `toSchedule()` qui permet d'extraire une représentation directe.
|
102
|
|
-- Ajouter des tests dans `src/test/java/jobshop` permettant de vérifier que vos méthodes fonctionnent bien pour les exemples traités en cours (instance `aaa1`).
|
103
|
|
-Vous pouvez pour cela vous inspirer et ajouter des cas de test à `EncodingTests`.
|
|
100
|
+- Créer une classe `jobshop.encodings.ResourceOrder` qui contient la représentation par ordre de passage sur ressources vue dans les exercices (section 3.2). Il s'agit ici d'une reprsentation sous forme de matrice où chaque ligne correspond à une machine, et sur cette ligne se trouvent les tâches qui s'exécutent dessus dans leur ordre de passage. Pour la representation d'une tâche dans la matrice, vous pouvez utiliser la classe `jobshop.encodings.Task` qui vous est fournie.
|
|
101
|
+
|
|
102
|
+- Pour cette classe, implémentez la méthode `toSchedule()` qui permet d'extraire une représentation directe.
|
|
103
|
+Pour l'implémentation de cette méthode `toSchedule()`, il vous faut construire un schedule qui associe à chaque tâche une date de début (vous pouvez regardez l'implémentation pour `JobNums` pour en comprendre le principe).
|
|
104
|
+Pour construire ce schedule il faudra que vous mainteniez une liste des tâches qui ont été schédulé. Cette liste est initialement vide.
|
|
105
|
+À chaque itération de l'algorithme, on identifie les tâches executables. Une tâche est executable si
|
|
106
|
+
|
|
107
|
+ - son prédecesseur sur le job a été schedulé (si c'est la tache (1, 3), il faut que les tâches (1,1) et (1,2) aient été schédulée)
|
|
108
|
+ - son prédecesseur sur la ressource a été schedulé (l'ordre sur passage sur les ressources est précisement ce qui vous est donné par cette représentation).
|
|
109
|
+
|
|
110
|
+- Ajouter des tests dans `src/test/java/jobshop` permettant de vérifier que vos méthodes fonctionnent bien pour les exemples traités en cours (instance `aaa1`). Vous pouvez pour cela vous inspirer et ajouter des cas de test à `EncodingTests`.
|
|
111
|
+
|
|
112
|
+
|
104
|
113
|
|
105
|
114
|
Changement de représentation :
|
106
|
115
|
|
107
|
116
|
- pour les deux représentations `ResourceOrder` et `JobNums`, créez des méthodes permettant de créer cette représentation depuis un `Schedule`.
|
108
|
|
-- utilisez là pour tester la conversion de `ResourceOrder` vers `JobNums` et vice-versa.
|
|
117
|
+- utilisez la pour tester la conversion de `ResourceOrder` vers `JobNums` et vice-versa.
|
109
|
118
|
|
110
|
119
|
|
111
|
120
|
# Heuristiques gloutonne
|