Slides File

publicité
Ordonnancement
Frédéric Meunier
25 janvier 2017
Ecole des Ponts, France
Management de projet
Le problème
Collection I de tâches
Pour chaque tâche i : durée di et des contraintes de la forme
“la tâche i ne peut commencer que lorsque r% de la tâche j au
moins a été effectué”.
On veut trouver
• durée minimale du projet.
• tâches critiques : tâches pour lesquelles une modification de
l’instant de début rallonge la durée du projet
• marges : marge d’une tâche = intervalle de temps sur lequel on peut
faire démarrer la tâche sans rallonger la durée du projet (en particulier,
une marge nulle signifie une tâche critique)
Modélisation “potentiel tâche”
Graphe orienté D = (V , A)
V = débuts des tâches
A = relations de précédence
Deux tâches fictives : Début et Fin
Arc (I, J) muni d’une longueur `(I, J) = durée minimale
séparant le début de I de celui de J
Si ce projet a un sens, le graphe est acircuitique.
Exemple
Soit le projet suivant
Tâches
A
B
C
D
E
F
Description
Construction voie ferrée
Forage des puits
Construction logements provisoires
Pompage de l’eau (Fonds de mine)
Aménagement fonds + ascenseurs
Construction logements définitifs
Durée (j)
80
70
30
30
50
40
Contraintes
Début
Début
Début
B
A, D
A, C
Exemple
Modélisé par le graphe :
A
D
80
70
0
30
30
Début
B
0
Fin
E
50
80
0
F
C
30
40
Propriété
tI et tI0 = instants au plus tôt et au plus tard auxquels
commencer la tâche I, sachant que l’on veut tout terminer à
l’instant tFin donné.
Proposition
tI est la longueur du plus long chemin de Début à I.
tI0 est tFin moins la longueur du plus long chemin de I à Fin.
Preuve.
• pour chaque tâche I, on ne peut pas commencer avant la somme des longueurs
des arcs du plus long chemin de Début à I.
• on faisant débuter chaque tâche I précisément à la somme des longueurs des
arcs du plus long chemin de Début à I, on peut commencer chaque tâche à
l’instant tI .
De même pour tI0 .
Calcul de plus longs chemins
RAPPEL Equation de programmation dynamique.
Pour ηI = “longueur du plus long chemin de Début à I”, on a
ηJ = max (ηI + `(I, J)).
(I,J)∈A
On peut calculer tous les ηI en O(m) où m est le nombre
d’arcs. On peut calculer de même les πI , plus longs chemins
de I à Fin.
On a alors
• tI := ηI
• tI0 := tFin − πI
• marge mI := tI0 − tI .
chemins critiques = plus longs chemins de Début à Fin
Toutes les tâches d’un chemin critique sont caractérisées par une marge nulle.
Ordonnancement d’atelier
Cadre
n tâches, m machines
• Chaque tâche doit passer sur chaque machine exactement
une fois.
• Une machine ne peut traiter au plus qu’une tâche à la fois.
Passage d’une tâche j sur une machine k (opération) : requiert
un temps pjk .
Deux types d’objectif classique :
• Minimiser le temps total
• Minimiser la somme des instants de fins des tâches (ce qui
revient à minimiser la durée moyenne)
Les trois modèles de base
Problème du Job-Shop : chaque tâche est muni d’un ordre total
sur ses opérations.
Problème du Flow-Shop : cas particulier du Job-Shop : l’ordre
total est le même pour toutes les tâches.
Problème du Open-Shop : les opérations peuvent être faites
dans un ordre quelconque.
On se place d’abord dans le cas non-préemptif : une opération,
une fois commencée, ne peut être interrompue.
Ordonnancement
ordonnancer = fixer les instants tjk (début de passage de la
tâche j sur la machine k ).
Instant de fin de la tâche j :
Cj := tj` + pj`
où ` = arg maxk tjk .
Les deux objectifs classiques :
• Minimiser le temps total, ou makespan : Cmax = maxj Cj
• Minimiser le temps moyen :
P
j
Cj
Problèmes difficiles
• Flow-shop à 3 machines et minimisation du makespan
Cmax : NP-difficile.
• Flow-shop à 2 machines et minimisation du
P
Cj :
j
NP-difficile.
• Open-shop à 3 machines et minimisation du makespan
Cmax : NP-difficile.
• Open-shop à 2 machines et minimisation du
P
j
Cj :
NP-difficile.
Même avec des métaheuristiques ou des techniques de branch-and-bound,
des instances job-shop à 20 machines et 20 tâches sont encore non résolues
à ce jour !
Problèmes difficiles
On ne connaît pas l’ordonnancement optimal pour l’instance
suivante de flow-shop à 20 tâches et 5 machines
Machines
1
2
3
4
5
1
2
3
4
5
6
7
8
9
Tâches
10 11
12
13
14
15
16
17
18
19
20
54
79
16
66
58
83
3
89
58
56
15
11
49
31
20
71
99
15
68
85
77
56
89
78
53
36
70
45
91
35
53
99
60
13
53
38
60
23
59
41
27
5
57
49
69
87
56
64
85
13
91
61
1
9
72
14
73
63
39
8
29
75
41
41
49
12
47
63
56
47
77
14
47
40
87
32
21
26
54
58
87
86
75
77
18
68
5
77
51
68
94
77
40
31
28
76
3
7
85
86
Quelques cas polynomiaux
1. Flow-shop à 2 machines et minimisation du makespan
Cmax
2. Job-shop à 2 machines et minimisation du makespan Cmax
3. Job-shop à 2 tâches et minimisation du makespan Cmax
4. Open-shop à 2 machines et minimisation du makespan
Cmax
Flow-shop à 2 machines et minimisation du makespan
Résolu en temps polynomial par l’algorithme de Johnson
Produit une séquence j1 , j2 , . . . , jn = ordre dans lequel effectuer les tâches
sur les deux machines.
Algorithme de Johnson :
Choisir la tâche j ayant le plus petit pj1 ou pj2 parmi tous les pji
Appliquer récursivement l’algorithme sur les tâches 6= j : =⇒ j1 , j2 , . . . , jn−1
Si pj1 ≤ pj2 , retourner j, j1 , j2 , . . . , jn−1
Si pj1 > pj2 , retourner j1 , j2 , . . . , jn−1 , j
Exemple
Tâches
A
B
C
D
E
temps sur la machine 1
12
14
25
9
6
temps sur la machine 2
3
11
13
17
15
Exemple
Tâches temps sur la machine 1 temps sur la machine 2
A
12
3
B
14
11
C
25
13
D
9
17
E
6
15
L’algorithme va successivement fixer :
...,A
E, . . . , A
E, D, . . . , A
E, D, . . . , B, A
E, D, C, B, A.
Job-shop à 2 machines et minimisation du makespan
Résolu en temps polynomial par l’algorithme de Jackson (adaptation de
l’algorithme de Johnson)
Algorithme de Jackson :
Définir
J12 := {j : j doit d’abord être effectué sur 1 puis sur 2}
J21 := {j : j doit d’abord être effectué sur 2 puis sur 1}
Effectuer
• sur la machine 1 : J12 J21
• sur la machine 2 : J21 J12
où J12 et J21 sont ordonnés selon l’algorithme de Johnson.
Job-shop à 2 tâches et minimisation du makespan
Résolu en temps polynomial par l’algorithme de Brucker
Idée :
axe des abscisses = machines dans l’ordre dans lequel elles doivent être
visitées par la tâche 1.
axe des ordonnées = machines dans l’ordre dans lequel elles doivent être
visitées par la tâche 2.
solution réalisable = trajectoire dans le quart de plan positif faite de
mouvements horizontaux (avancement tâche 1), verticaux (avancement
tâche 2) et en diagonal (avancement simultanée sur les deux machines)
Exemple
tâche 1: M1 → M2 → M3 → M4
tâche 2: M2 → M4 → M3 → M1
tâche 2
M1
p24
p23
M3
M4 p22
M2 p21
p11
M1
p12
M2
p13
p14
M4
M3
un ordonnancement possible
un autre ordonnancement possible
tâche 1
Exemple commenté
Job-shop à 2 tâches et 4 machines.
Tâche 1 doit traverser les machines dans l’ordre
M1 , M2 , M3 , M4 , avec des durées : 2, 3, 1, 2.
Tâche 2 doit traverser les machines dans l’ordre
M2 , M4 , M3 , M1 , avec des durées : 1, 2, 2, 1.
Ordonnancement = chemin dans un graphe acircuitique.
poids de cet arc: p24
tâche 2
M1
p24
poids de cet arc: p22
p23
M3
M4 p22
M2 p21
p11
M1
p12
M2
p13
p14
M4
M3
un ordonnancement possible
un autre ordonnancement possible
tâche 1
Algorithme
Résoudre job-shop à 2 tâches et minimisation du makespan
Cmax = chercher un plus court chemin dans un graphe
acircuitique
coût d’un arc = durée séparant ses deux extrémités
Algorithme en O(m2 log(m))
Open-shop à 2 machines et minimisation du
makespan
Théorème
Pour l’open-shop non préemptif à 2 machines et minimisation
du makespan :
à l’optimum


n
n
X
X
Cmax = max max(pj1 + pj2 ),
pj1 ,
pj2  .
j
j=1
j=1
Un ordonnancement optimal peut se trouver en temps
polynomial.
La preuve consiste à se ramener au cas à 3 tâches.
Exemples
Open-shop à 2 machines et minimisation du makespan Cmax
M1 M2
Tâche 1 3
2
Tâche 2 3
2
3
Tâche 3 1
M1 M2
Tâche 1 2
1
Tâche 2 2
3
Tâche 3 2
2
Ici : somme des colonnes constante = 7 ; somme des lignes
≤ 7.
Dans ce cas, on peut toujours réaliser un ordonnancement de
durée = 7.
Open-shop préemptif
Théorème
A l’optimum, on a

Cmax = max max
j
m
X
k =1

!
pjk
, max 
k
n
X

pjk  .
j=1
De plus, un tel ordonnancement se trouve en temps polynomial
Preuve
On note Q l’ensemble des matrices m × n à coefficients dans
{0, 1} et ayant au plus un 1 sur chaque ligne et sur chaque
colonne.
Théorème (Birkhoff-Von Neumann)
Soit A = ((aij )) une matrice m × n telle que
• aij ≥ 0
•
•
Pm
Pi=1
n
j=1
aij ≤ 1 pour tout j
aij ≤ 1 pour tout i
Alors A s’écrit comme combinaison convexe de matrices de Q.
Combinaison convexe de matrices de Q : A =
P
tout i, et avec i λi = 1.
P
i
λi Qi avec Qi ∈ Q et λi > 0 pour
Fin de la preuve
Posons T := max maxj
P
n
p
,
max
p
.
k
k =1 jk
j=1 jk
Pm
P = ((pjk ))
Birkhoff-Von NeumannP
=⇒ T1 P peut s’écrire comme
combinaison convexe i λi Qi de matrices de Q.
Ordonnancement :
• sur les λ1 T premiers instants, pour tout (j, k ) entrée non
nulle de la matrice Q1 , on fait passer la tâche j sur la
machine k
• sur les λ2 T instants suivants, pour tout (j, k ) entrée non
nulle de la matrice Q2 , on fait passer la tâche j sur la
machine k
• etc.
Téléchargement