Académique Documents
Professionnel Documents
Culture Documents
03 TD Ordonnancement-Corr
03 TD Ordonnancement-Corr
Les méthodes PERT/Potentiel tache ne permettent pas de tenir compte des contraintes de
ressources comme le nombre d’employés. On présente ici une heuristique dite "‘méthode sérielle"’
(ou algorithme de liste). Attention : les heuristiques ne garantissent en général pas de trouver une
solution optimale :
a) Définir un ordre de priorité des tâches respectant la contrainte de précédence
b) Pour chacune des tâches t, dans cet ordre
A) Considérer le plus petit instant τ où la tâche t est disponible (contraintes de précédence
et ressources).
B) Définir l’instant de départ de la tâche t comme τ
▶ Correction
1
G : 9 - 10
Cinq tâches doivent être effectuées sur une machine M1 puis sur une machine M2, dans le même
ordre. À la fin de son exécution sur M1, chaque tâche peut commencer son exécution sur M2 si la
machine est disponible ou sinon elle doit attendre qu’elle le soit. Les durées d’exécution des tâches
sur les deux machines sont données dans le tableau suivant :
Durée t(j, M ) j1 j2 j3 j4 j5
M1 50 150 80 200 30
M2 60 50 150 70 200
1. Si les tâches s’exécutent dans l’ordre j1 , j2 , j3 , j4 , j5 , quelle est la durée totale d’exécution sur
les 2 machines ?
2. Appliquer l’algorithme de Johnson pour trouver un ordre qui minimise la durée totale d’exé-
cution.
3. Quelle est la complexité de cet algorithme ?
4. On suppose prouvé que la solution est optimale si on vérifie, pour tout couple de tâches
i précédant j, min(t(i, M1 ), t(j, M2 )) ≤ min(t(i, M2 ), t(j, M1 )). Montrer que le résultat de
l’algorithme de Johnson est optimal.
▶ Correction
1. On trace le GANTT associé :
j1 j2 j3 j4 j5
M1
j1 j2 j3 j4 j5
M2
t
2
2. On obtient A = [j1 , j3 , j5 ] et B = [j2 , j4 ]. On trie A selon M1 et B selon M2 décroissant :
SA = [j5 , j1 , j3 ] et SB = [j4 , j2 ]. Ce qui donne l’ordre S = [j5 , j1 , j3 , j4 , j2 ]. On peut refaire
un GANTT pour s’assurer que ça fonctionne.
j5 j1 j3 j4 j2
M1
j5 j1 j3 j4 j2
M2
t
3. La complexité de l’algorithme de Johnson est O(n log n) où n est le nombre de tâches. En effet,
l’algorithme commence par une boucle avec n itérations faisant chacune une comparaison et
un ajout dans une liste en O(1), puis deux tris en O(n log n), et enfin une concaténation en
O(1) ou O(n) selon la structure de liste choisie (liste chaînée ou tableau).
4. On veut donc vérifier que la solution renvoyée par l’algorithme vérifie cette propriété.
3 cas sont à vérifier :
— i ∈ A et j ∈ A : dans ce cas t1 (i) ≤ t2 (i) et, puisque i est avant j dans S, t1 (i) ≤ t1 (j).
Donc on a t1 (i) ≤ min(t2 (i), t1 (j)) et donc min(t1 (i), t2 (j)) ≤ min(t2 (i), t1 (j)).
— i ∈ A et j ∈ B : dans ce cas t1 (i) ≤ t2 (i) et t2 (j) ≤ t1 (j), donc min(t1 (i), t2 (j)) ≤ t2 (i)
et min(t1 (i), t2 (j)) ≤ t1 (j), donc min(t1 (i), t2 (j)) ≤ min(t2 (i), t1 (j)).
— i ∈ B et j ∈ B : dans ce cas t2 (j) ≤ t1 (j) et, puisque i est avant j dans S, t2 (j) ≤ t2 (i).
Donc on a t2 (j) ≤ min(t2 (i), t1 (j)) et donc min(t1 (i), t2 (j)) ≤ min(t2 (i), t1 (j)).
Le dernier cas est exclu car i est avant j dans S.
Exercice 3 — Ordonnancement d’atelier à 3 machines
Le sujet est le même que dans l’exercie précédent, mais avec 3 machines.
t(j, M ) j1 j2 j3 j4 j5 j6
M1 60 40 80 70 100 50
M2 40 20 10 30 20 30
M3 40 60 70 100 50 80
1. On considère le problème virtuel constitué de deux machines M1’ et M2’ telles que t(j, M1′ ) =
t(j, M1 ) + t(j, M2 ) et t(j, M2′ ) = t(j, M2 ) + t(j, M3 ). Appliquer l’algorithme de Johnson pour
trouver un ordre qui minimise la durée totale d’exécution sur ce problème.
2. Quel est le temps d’exécution optimal sur le problème virtuel ?
3. Quel est le temps d’exécution de cette même solution sur le problème réel ?
4. Testez l’algorithme de la question 1sur l’exemple suivant
t(j, M ) j1 j2 j3
M1 10 20 40
M2 70 80 20
M3 20 00 35
5. Comparez la solution obtenue avec celle qui consiste à effectuer les tâche dans l’ordre j3 j1 j2 .
L’algorithme est-il toujours optimal ?
6. L’algorithme est optimal dans le cas de la question 1 mais pas dans le cas de la question 4.
Qu’est-ce qui peut expliquer cela ?
3
▶ Correction
Durée t(j, M ) j1 j2 j3 j4 j5 j6
M1′ 100 60 90 100 120 80
M2′ 80 80 80 130 70 110
3. On trouve 470. Précision, c’est optimal, mais rien d’intuitif ne le prouve. Ci dessous le gantt
associé
M1 2222666664444444111111333333335555555555
M2 XXXX22XXX666XXXX444XXX1111XXXX3XXXXXXXXX55
M3 XXXXXX22222266666666444444444411113333333X55555
| | | | |
Temps 0 100 200 300 400
Durée t(j, M ) j1 j2 j3
M1′ 80 100 60
M2′ 90 80 55