Vous êtes sur la page 1sur 4

TD 3 : Ordonnancement

Recherche opérationnelle S3.


2022

Exercice 1 — Ordonnancement sous contraintes de ressources- Méthode heuristique

On considère le problème d’ordonnancement suivant où on suppose que le nombre d’employés


est limité à 5.
tâche durée tâches précédentes nombre d’employés
A 6 - 3
B 3 - 2
C 6 - 1
D 2 B 1
E 4 B 3
F 3 DA 3
G 1 FEC 2

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 τ

Nous allons appliquer cette heuristique à notre exemple.


1. En appliquant la méthode potentiel tâche, trouver un ordonnancement optimal ne tenant
pas compte des contraintes de ressources. Cet ordonnancement respecte-t-il les contraintes
de ressources ? Donner les dates au plus tard des tâches.
2. Appliquer la méthode sérielle en donnant la priorité à la tâche de plus petite date au plus
tard.
3. Tracer le diagramme de GANTT de l’ordonnancement obtenu.

▶ Correction

1. Ordonnancement optimal avec les temps au plus tôt :


A:0-6
B:0-3
C:0-6
D:3-5
E:3-7
F:6-9

1
G : 9 - 10

Il y a donc 6 employés pour A, B et C au départ, ce qui est exclu.


Ordonnancement optimal avec les temps au plus tard :
A:0-6
B:1-4
C:3-9
D:4-6
E:5-9
F:6-9
G : 9 - 10

Il y a 6 employés qui travaille à l’instant 3 pour A, B et C.


2. Les tâches sont ordonnées ainsi : A ; B ; C ; D ; E ; F ; G. On obtient donc les temps suivant :
A:0-6
B:0-3
C : 3 - 9 (nb employés : ne peut être fait avant fin de B)
D : 3 - 5 (nb employés et B précède D)
E : 6 - 10 (nb employés : ne peut être fait avant fin de A)
F : 10 - 13 (nb employés : ne peut être fait avant fin de E)
G : 13 - 14 (F précède G)

Exercice 2 — Ordonnancement d’atelier

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

On obtient une durée totale de 750.

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

1. On a alors le tableau suivant

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

On obtient l’ordre : S = [j2 , j6 , j4 , j1 , j3 , j5 ] ou S = [j2 , j6 , j4 , j3 , j1 , j5 ]


2. On trouve 620, ci-dessous une version discrète du diagramme de Gantt (car numéro cor-
respond à un créneau de 10 unités de temps, un X est un moment où M2 ne fonctionne
pas.)
M1 2222226666666644444444441111111111333333333555555555555
M2 XXXXXX222222226666666666644444444444441111111133333333X5555555
| | | | | | |
Temps 0 100 200 300 400 500 600

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

4. On a alors le tableau suivant

Durée t(j, M ) j1 j2 j3
M1′ 80 100 60
M2′ 90 80 55

On obtient l’ordre : S = [j1 , j2 , j3 ].


5. L’ordre précédent donne comme durée totale 215 alors que j3 , j1 , j2 donne 210.
6. La différence entre les deux instances est que, dans la seconde, la machine M2 est bornée par
M1 et M3 . On dit qu’elle est dominée. Dans ce cas, l’algorithme de Johnson donne le résultat
optimal.

Vous aimerez peut-être aussi