Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
ALAMI Ayoub
I.1 Introduction
L’ordonnancement est une tâche très importante qu’une entreprise doit accomplir pour améliorer
son efficacité en termes de coûts de production et de délais de livraison. En raison de la diversité de
leurs champs d’application, notamment dans le secteur industriel et dans celui de l’informatique, les
problèmes d’ordonnancement ont été largement étudiés depuis plus de soixante ans.
Définition.
Gérer donc un système de production consiste à décider, dans le détail, des tâches à accomplir et
des ressources à utiliser pour accomplir ces tâches.
Quatre notions fondamentales sont donc spécifiées : les tâches, les ressources, les contraintes et
les objectifs.
a- Les tâches
Une tâche i est définie comme étant une entité élémentaire d’un travail k (job) à réaliser. Sa
réalisation est caractérisée par une durée opératoire notée pik (processing time) et sa localisation dans le
temps est définie par une date de début notée tik. Une tâche peut aussi avoir un poids ou facteur de
priorité, noté wik, pour dénoter son importance relativement aux autres tâches.
ENSEM-2021 Pr. ALAMI Ayoub
Dans le cas de l’ordonnancement d’atelier, le terme opération remplace par fois celui de tâche.
Dans le domaine de la gestion de projet, c’est le terme activité qui est utilisé.
Un travail est constitué d’une ou plusieurs opérations. La gamme opératoire d’un travail est
donnée par le routage du travail et les durées opératoires de passage sur les différentes machines, tandis
que le routage d’un travail est la succession des ressources qui lui sont associées pour être réalisé.
Si un travail k s’exécute en une seule opération, les termes pik, tik et wik seront notés
respectivement pk, tk et wk, et sa date de fin d’exécution sera notée Ck (Completion time).
Une tâche est dite morcelable ou préemptive, lorsqu’elle peut être exécutée par morceaux, sinon
elle est dite non préemptive.
Dans la suite, nous supposons qu’un travail k est constitué d’une seule opération, et nous le
notons Jk.
b- Les ressources
Une ressource est un moyen matériel (machine, outil...), ou humain disponible en quantité limitée,
destiné à être utilisé pour la réalisation d’une ou plusieurs tâches.
Nous distinguons deux types de ressources pouvant être requises par les tâches :
Une ressource consommable dont la quantité diminue au fur et à mesure de son utilisation,
comme les matières premières, le budget... Il convient alors d’en assurer le
réapprovisionnement éventuel.
Une ressource renouvelable dont la quantité reste inchangée lorsqu’elle est utilisée pour la
réalisation d’une ou plusieurs tâches, comme une machine d’un atelier, équipe d’ouvriers...
Dans le cas de l’ordonnancement d’atelier, le terme machine est généralement utilisé à la place de
ressource.
Dans la suite, nous utilisons le terme machine pour désigner une ressource, et elle sera notée M i,
i=1, 2, ..., m, tel que m est le nombre de machine.
c- Les contraintes
Les contraintes représentent les limites imposées par l’environnement ou par les machines.
Nous distinguons deux sortes de contraintes : les contraintes temporelles et les contraintes liées
aux machines.
ENSEM-2021 Pr. ALAMI Ayoub
Des contraintes de temps alloué : ces contraintes sont propres à chaque travail, elles
expriment les dates limites de leur exécution. En particulier, nous parlons des contraintes
associées à :
o La date de disponibilité, notée rk, dite aussi date de début au plus tôt (release
o La date de fin au plus tard souhaitée, notée dk, dite aussi date d’échéance (due
cette date d’échéance doit être respectée, on parle de date d’échéance stricte
∽
(deadline) notée dk.
Des contraintes disjonctives : si deux travaux Jk et Jk’ doivent être exécutés sur une même
machine, alors soit l’exécution du travail k’ ne commence qu’après la fin de l’exécution
du travail k, ou l’inverse. Nous aurons donc tk’-tkpk ou tk-tk’pk’.
Des contraintes cumulatives associées aux contraintes de respect des capacités des
machines.
d- Les objectifs
La fonction objectif, dite aussi critère de performance ou encore fonction d’évaluation de la
qualité de l’ordonnancement, représente le critère à optimiser qui permet d’apprécier la qualité de toute
solution d’un problème d’ordonnancement. Il existe des critères liés à l’utilisation des machines comme
la charge des machines dans un atelier, et d’autres sont liés au temps comme la date d’achèvement de la
réalisation du dernier travail, appelée makespan, et notée Cmax.
La fonction objectif varie selon le problème d’ordonnancement à traiter ; on peut citer à titre
d’exemple : le temps moyen d’achèvement des travaux, la durée totale de retard, le cumul des temps
d’attente des travaux, le nombre de travaux en retard, etc. Les critères les plus mentionnés dans la
littérature seront énumérés dans la quatrième section.
ENSEM-2021 Pr. ALAMI Ayoub
Par ailleurs, on parle d’un critère régulier lorsque l’avancement de l’exécution d’une tâche, sans
en retarder d’autres, ne dégrade pas la fonction objectif. Le critère lié au temps, Cmax, est par exemple
régulier, à la différence de la plupart des critères liés aux coûts ou aux ressources.
Dans la plupart des problèmes d’ordonnancement, nous imposons certaines hypothèses parmi la
liste ci-dessous :
o A un instant donné, une machine ne peut exécuter qu’une seule opération à la fois.
o A un instant donné, une opération ne peut être exécutée que sur au plus une machine.
o L’interruption d’une opération n’est pas permise.
o La durée de chaque opération est donnée et constante.
o Durant l’horizon de l’ordonnancement, les pannes des machines ne sont pas prises en
compte.
o Problèmes d’ordonnancement par lots où une machine peut exécuter plusieurs travaux
simultanément.
o Problèmes d’ordonnancement avec chevauchements où les opérations d’un même job
peuvent s’exécuter en même temps sur plusieurs machines.
Par ailleurs, nous distinguons également entre les problèmes d’ordonnancement mono-tâche où
chaque job s’exécute en une seule tâche, et les problèmes d’ordonnancement multitâches qui sont les
problèmes dont la réalisation d’un job nécessite l’exécution de plusieurs tâches et qui regroupent les
problèmes de Flow shop, Job shop et Open shop.
ENSEM-2021 Pr. ALAMI Ayoub
Jobs en attente
Jobs traités
Machine unique
Il est évident que si tous les jobs sont disponibles à l’instant zéro et si le critère à minimiser est le
makespan, alors toute séquence d’exécution des jobs aboutit à une solution optimale. Mais, l’ajout de
contraintes et la considération d’autres critères rendent le problème plus difficile à résoudre.
Atelier
M1
Une séquence de Jobs
J1 J2 J3 J4 M2
M3
Selon les caractéristiques des machines, trois types de problèmes à machines parallèles sont
considérés :
ENSEM-2021 Pr. ALAMI Ayoub
Les problèmes à machines identiques pour lesquels les machines ont les mêmes caractéristiques
(vitesse, qualité…) et peuvent exécuter tous les jobs sans aucune distinction. Dans ces
problèmes, les durées opératoires ne dépendent pas des machines.
Les problèmes à machines uniformes pour lesquels les machines ont des caractéristiques
différentes, et la durée d’exécution d’un job varie uniformément en fonction de la performance
de la machine choisie.
Les problèmes à machines non liées ou indépendantes, pour lesquelles les durées opératoires
dépendent complètement des machines employées.
Atelier
Une séquence de Jobs
J1 J2 J3 J4 M1 M2 M3
Définition.
Dans un problème de flow shop, l’atelier est formé de machines « différentes » que sont
généralement disposées en ligne, et chaque job doit passé sur chacune de ces machines dans un ordre
déterminé. Cet ordre est identique pour tous les jobs.
Définition.
Dans un problème de job shop, les jobs sont composés de plusieurs opérations et pour lesquels il
existe au moins deux jobs dont les routages sont différents.
Définition.
Les problèmes d’open shop, ce sont des problèmes à cheminements libres, dans ce type de
problèmes, les machines ont des caractéristiques différentes et les routages relatifs aux différents jobs
peuvent être différents. Ici, l’ordre de passage des jobs sur les différentes machines n’est pas imposé.
Problèmes à Problèmes à
une machine machines parallèles Flow shop
Job shop
Les problèmes à Les problèmes à Les problèmes à
machines identiques machines uniformes machines non liées
Open shop
𝛂1 Description
Machine unique
P Machines parallèles identiques
Q Machines parallèles proportionnelles
R Machine parallèles non reliées
F Flow shop
J Job shop
O Open shop
FH Flow shop hybride
JG Job shop généralisé
OG Open shop généralisé
ENSEM-2021 Pr. ALAMI Ayoub
Le deuxième champ 𝛃 correspond aux contraintes liées aux opérations. Il peut inclure plusieurs
sous-champs. Il indique si la préemption des jobs est autorisée ou non, ou encore si les périodes
d’indisponibilité existent ou non.
Dans le cas où la préemption des jobs est autorisée, l’exécution d’un job peut être arrêtée afin de
laisser passer un autre job ayant une priorité plus élevée pour s’exécuter sur la machine, ou une portion
de son temps d’exécution est interrompue par une période d’indisponibilité.
Quand l’exécution d’un job est interrompue par une période d’indisponibilité, il continue son
exécution à la fin de la période d’indisponibilité. On dit qu’un job est résumable lorsque la durée
restante de son exécution peut être complétée après l’indisponibilité. Quand l’exécution d’un job doit
être recommencée depuis le début après la période d’indisponibilité, on dit que ce job est non
résumable.
Quelques valeurs classiques de 𝛃 sont décrites dans le tableau I.2 :
𝛃 Description
Le troisième terme 𝛄 spécifie les fonctions objectifs à optimiser ou les critères à mesurer. Le plus
souvent, le critère est exprimé en fonction des variables de décision associées à chaque job k, soit :
La durée de séjour dans l’atelier du job Jk (Flow-time), son expression est donnée par
Fk=Ck-rk
Le retard algébrique du job Jk (lateness) qui dénote l’écart par rapport au délai souhaité avec
avance favorable et retard défavorable. Il est exprimé par Lk=Ck-dk
L'indicateur de retard (unit penalty) de Jk noté Uk définit par Uk=0 si Ckdk, Uk =1 sinon
𝛄 Description
Cmax=Max Ck La durée totale de l’ordonnancement (Makespan)
Lmax=Max Lk Le plus grand retard algébrique (Maximum lateness)
Tmax=Max Tk Le plus grand retard vrai
⎺=∑T /n
T Le retard moyen
k
A partir de ces mesures, des critères d’appréciation ou d’évaluation des solutions du problème
d’ordonnancement sont construits. Pour ceux que nous avons présentés, l’objectif consiste dans tous les
cas à minimiser ces mesures de performance. Nous remarquons que tous ces critères sont basés sur
l’inconnue Ck et éventuellement sur les fenêtres d’exécution [rk,dk] associées aux jobs.
ENSEM-2021 Pr. ALAMI Ayoub
Un problème d’ordonnancement peut être modélisé à l’aide d’un programme linéaire mixte. Nous
considérons à titre d’exemple le cas d’un problème à une machine à jobs indépendants dont l’objectif
est de minimiser la durée totale de l’ordonnancement.
Etant donné un ensemble N de n opérations : 1, 2, ..., n à exécuter sur une machine M, nous
disposons pour chaque opération i les données suivantes :
et la fin de l’ordonnancement).
Minimiser t
ti≥ri i∊N
La contrainte disjonctive ti-tj≥pj ou tj-ti≥pi est équivalente au système des deux contraintes à
ti-tj≥pj-K.yi,j
tj-ti≥pi-K.(1-yi,j)
Et yi,j est la variable booléenne telle que yi,j=1 si l’opération i est exécutée avant l’opération j et
yi,j=0 sinon.
ENSEM-2021 Pr. ALAMI Ayoub
Une autre manière de modéliser les contraintes d'un problème d'ordonnancement d'atelier est
d'utiliser un graphe potentiels-tâches dit graphe disjonctif.
Le graphe disjonctif est un graphe dont les sommets représentent les opérations composant les
jobs, auxquels s’ajoutent deux sommets fictifs appelés source et puits (correspondant respectivement au
début et à la fin des jobs), et dont les arcs modélisent les contraintes temporelles entre opérations.
On distingue deux sortes d’arcs reliant les sommets : les arcs conjonctifs et les arcs disjonctifs.
Un arc conjonctif relie deux opérations consécutives d’un même job, décrivant ainsi la contrainte de
précédence liant ces opérations. Un arc disjonctif relie deux opérations appartenant à des jobs distincts
qui utilisent une même machine. La source est reliée via des arcs conjonctifs aux premières opérations
de chaque job. Chaque arc est pondéré par la durée de l’opération de son extrémité initiale, excepté les
arcs partant de la source qui sont pondérés par 0.
Un ordonnancement réalisable est obtenu en choisissant, pour chaque arc disjonctif, une
orientation telle que le graphe résultant soit acyclique, c'est-à-dire sans circuit. On dit alors que le
graphe disjonctif est arbitré.
A titre d’illustration, considérons le problème de job shop à trois machines et trois jobs dont les
gammes opératoires sont données dans le tableau ci-dessous :
J 1 2 3
J-1 M1(5) M2(3) M3(6)
J-2 M2(7) M3(4) M2(1)
J-3 M3(1) - M1(5)
Les nombres entre parenthèses, dans le tableau I.4, représentent les durées opératoires des tâches.
ENSEM-2021 Pr. ALAMI Ayoub
1 2 3
2 3
0 3 4
0 2-1 2-2
0
*
5
3 2 1
Considérons le problème de job shop précédent ; la figure I.6 décrit le diagramme de Gantt
représentant une solution réalisable dont le makespan est égale à quinze unités de temps :
ENSEM-2021 Pr. ALAMI Ayoub
Machines
M1 J1-1 J3-3
Temps
Figure I.6 - Diagramme de Gantt
Fréquemment, nous pouvons restreindre l'espace de recherche des solutions à un sous ensemble
d’ordonnancements particuliers. Nous s'intéressons en particulier aux sous-ensembles dominants. Un
sous ensemble de solutions est dominant pour l'optimisation d'un critère donné, s'il contient au moins un
optimum pour ce critère. Un sous-ensemble est dit dominant relativement à l'admissibilité lorsque le
sous ensemble contient au moins une solution admissible, s'il en existe. Rappelons qu'un
ordonnancement est dit admissible s'il respecte toutes les contraintes du problème.
Définition.
Un ordonnancement est dit semi-actif s’il n’est pas possible de commencer une opération plus tôt
sans modifier l’ordre dans lequel les opérations sont ordonnancées sur une machine (ou une ressource)
et sans en détériorer le critère de performance.
Considérons un exemple d’un problème de Job-shop, composé de deux jobs. Chaque job
comporte trois opérations. Chaque opération est à réaliser sur une machine donnée. Il y a trois machines
dans le problème considéré. Les temps de traitement varient d’une opération à une autre. Les données
du problème sont résumées dans le Tableau I.5 ci-dessous.
J 1 2
J-1 M3(4) M2(7)
J-2 M1(3) M1(6)
J-3 M2(2) M3(5)
La figure I.7 ci-dessous représente deux solutions optimales : une non semi-actif (A) et l’autre qui
est semi-actif (B).
Figure I.7 - Ordonnancement optimal, non semi-actif (A) et l'ordonnancement semi-actif associé (B)
Il apparait sur la Figure I.7(B) que la deuxième opération du Job 1 peut être encore avancée. Il
s’agit d’une autre classe d’ordonnancement : les ordonnancements actifs.
Définition.
Un ordonnancement est dit actif si aucune opération ne peut être exécutée plus tôt sans retarder
une autre opération ou violer de contrainte.
Un ordonnancement est dit actif si aucune opération ne peut être démarrée plus tôt sans décaler
vers la droite une autre opération, c.-à-d il n’est pas possible d’avancer l’exécution d’une opération sans
violer une contrainte ou sans retarder la date de début d'une autre opération.
Notons qu'un ordonnancement actif est semi-actif, mais l’inverse n’étant pas vrai.
Dans le cadre de l’exemple présenté sur la Figure I.7, il apparait que la seconde opération du Job
1 peut être avancée avant la seconde opération du Job 2 sans détériorer la solution courante.
Figure I.8 – (A) est un ordonnancement optimal et non actif et (B) est l'ordonnancement actif
associé
Définition.
Un ordonnancement sans retard (ou sans délai) est un ordonnancement dans lequel une machine
ne peut rester inactive alors qu'elle pourrait commencer l'exécution d'une autre opération.
Les relations entre les différentes classes d'ordonnancement sont illustrées par le diagramme de
Venn décrit par la figure I.9 :
Ordonnancement optimal
X
Sans retard
Actif
Semi actif
la programmation linéaire.
la programmation dynamique.
les méthodes arborescentes.
ENSEM-2021 Pr. ALAMI Ayoub
Parmi les règles de priorité les plus utilisées, nous pouvons citer :
- MWKR (Most WorK Remining) : choisir l’opération correspondant au job sur lequel il reste le
plus de travail à effectuer.
- LPT (Longest Processing Time) : choisir l’opération qui a la durée opératoire la plus longue.
- SPT (Shortest Processing Time) : choisir l’opération qui a la durée opératoire la plus courte.
- FIFO (First In First Out) : choisir l’opération qui est rentrée le plus tôt dans la file.
Dans ce paragraphe, nous montrerons à l’aide d’un exemple comment on utilise l’algorithme de
liste pour déterminer un ordonnancement sans retard avec MWKR comme règle de priorité.
Soit le problème du job shop à 4 jobs et 3 machines dont les gammes opératoires sont données
dans le tableau ci-dessous :
j 1 2 3 4
j -1 M1 7 M1 6 M2 5 M3 9
j -2 M2 5 M3 3 M3 6 M1 7
j -3 M3 8 M2 7 M1 8 M2 4
Dans le tableau ci-dessous nous donnons le détail de tous les calculs qui nous ont permis de
déterminer cet ordonnancement, puis nous donnons le graphe relatif à cette solution.
ENSEM-2021 Pr. ALAMI Ayoub
M1 disponible (2-1)
t=7 M2 disponible (1-2)
M3 non disponible (3-2)
M1 disponible (4-2)
t = 13 M2 disponible ------
M3 non disponible (1-3) , (2-2)
M1 disponible (3-3)
t = 20 M2 non disponible (4-3)
M3 non disponible ------
0 7 18
1-1 7 1-2 5 1-3
1 2 3
0 7 15 18 8
2-1 6 2-2 3 2-3
0 1 3 2
0
° 29
0 0 9 20 7
*
3-1 5 3-2 6 3-3
2 3 1 8
0 4
0 13 25
4-1 9 4-2 7 4-3
3 1 2
Pour déterminer un ordonnancement actif, relatif à une règle de priorité, du problème du job shop
à n jobs et m machines, on peut utiliser l’algorithme de Giffler et Thompson que nous présentons ci-
dessous :
Algorithme de Giffler et Thompson
Notations :
Algorithme
Étape 1: initialisation:
Poser:
h = 1, avec E1 = Ø
S1 : l'ensemble contenant toutes les opérations sans prédécesseurs;
ENSEM-2021 Pr. ALAMI Ayoub
Étape 2:
Étape 3:
Choisir une opération Ok,lSh correspondant à la règle de priorité choisie et telle que:
1) elle nécessite la machine M*, et
2) k,l < *
Étape 4:
1) additionner Ok,l à l'ensemble Eh pour créer Eh+1 ;
2) supprimer l’opération Ok,l à l'ensemble Sh et créer Sh+1 en ajoutant l'opération Ok,l+1 (à
moins que l’opération Ok,l ne soit la dernière opération du job Jk);
3) incrémenter h par 1;
Étape 5:
S'il demeure encore des opérations à ordonnancer, retourner à l'étape 2, (si h < n*m) sinon
arrêter.
Exemple
Considérons le même exemple traité en dessus :
j 1 2 3 4
j-1 M1 7 M1 6 M2 5 M3 9
j-2 M2 5 M3 3 M3 6 M1 7
j-3 M3 8 M2 7 M1 8 M2 4
k M1 M2 M3 J O M σ φ φ* MKWR
1 0 0 0 1 1 1 0 7
2 1 1 0 6
3 1 2 0 5 5
4 1 3 0 9
2 0 5 0 1 1 1 0 7 20
2 1 1 0 6 6 16
3 2 3 5 11
4 1 3 0 9
3 7 5 0 1 2 2 7 12
2 1 1 7 13
3 2 3 5 11 14
4 1 3 0 9 9 20
4 7 5 9 1 2 2 7 12 12
2 1 1 7 13
3 2 3 9 15
4 2 1 9 16
5 7 12 9 1 3 3 12 20
2 1 1 7 13 13 16
3 2 3 9 15
4 2 1 9 16 11
6 13 12 9 1 3 3 12 20 8
2 2 3 13 16 10
3 2 3 9 15 15 14
4 2 1 13 20
7 13 12 15 1 3 3 15 23 8
2 2 3 15 18 18 10
3 3 1 15 23
4 2 1 13 20
8 13 12 18 1 3 3 18 26
2 3 2 18 25
3 3 1 15 23 8
4 2 1 13 20 20 11
9 20 12 18 1 3 3 18 26
2 3 2 18 25 7
3 3 1 20 28
4 3 2 20 24 24 4
10 20 25 18 1 3 3 18 26 26
3 3 1 20 28
4 3 2 25 29
11 20 25 26 3 3 1 20 28 28
4 3 2 25 29
12 28 25 26 4 3 2 25 29 29
0 7 18
1-1 7 1-2 5 1-3
1 2 3
0 7 15 18 8
2-1 6 2-2 3 2-3
0 1 3 2
0
29 29
° 0 9 20 7
0 *
3-1 5 3-2 6 3-3
8
2 3 1
0 4
0 13 25
4-1 9 4-2 7 4-3
3 1 2
ENSEM-2021 Pr. ALAMI Ayoub
Algorithme de Moore-Hodgson
1- Poser : C = 0, O = Ø ; L = Ø ;
2- Pour j = 1 à n, faire:
C C + pj
O = O {Jj}
Si C > dj alors :
Soit Ji le job de O de plus grande durée
O O \ {Ji} , L L {Ji}
C C - pj
Fin si
Fin pour
3 - Ordonnancer les jobs de O dans l’ordre naturel puis les jobs de L dans n’importe quel
ordre.
Exemple
Déterminer l’ordonnancement qui minimise le nombre de jobs en retard pour le
problème à une machine dont les données figurent dans le tableau ci-dessous :
Jj J1 J2 J3 J4 J5 J6
pj 6 4 7 8 3 5
dj 8 9 15 20 21 22
1 - C = 0, O = Ø et L = Ø
2 - * C = p1 = 6, O = {J1}
C ≤ d1 = 8
* C = 6 + p2 = 10, O = {J1, J2}
C > d2 = 9
O = {J2} , L = {J1} et C = 4
ENSEM-2021 Pr. ALAMI Ayoub
Nous allons présenter ci-dessous une méthode exacte qui permet de déterminer un
ordonnancement qui minimise la somme des retards pondérés. Cette présentation sera faite sur
un exemple.
Exemple
Enoncé
Soit le problème à une machine pour lequel on veut déterminer un ordonnancement qui
minimise la somme des retards pondérés, et dont les données figurent dans le tableau ci-
dessous :
J1 J2 J3 J4
pi 3 7 2 3
di 11 12 9 4
wi 2 3 1 2
23
ENSEM-2021 Pr. ALAMI Ayoub
Résolution
Initialisation
On pose : S0 = {1, 2, 3, 4} et D0 = 15
Niveau 1.
o Cas 1.
Le job J1 est le dernier à être exécuté.
Le retard pondéré relatif à cette décision est de valeur 8.
L’ensemble des jobs qui restent à ordonnancer est S1 = {2, 3, 4}
La durée totale nécessaire à la réalisation des jobs de S1 est D1 = 12.
o Cas 2.
Le job J2 est le dernier à être exécuté.
Le retard pondéré relatif à cette décision est de valeur 9.
L’ensemble des jobs qui restent à ordonnancer est S2 = {1, 3, 4}
La durée totale nécessaire à la réalisation des jobs de S2 est D2 = 8.
o Cas 3.
Le job J3 est le dernier à être exécuté.
Le retard pondéré relatif à cette décision est de valeur 6.
L’ensemble des jobs qui restent à ordonnancer est S3 = {1, 2, 4}
La durée totale nécessaire à la réalisation des jobs de S3 est D3 = 13.
o Cas 4.
Le job J4 est le dernier à être exécuté.
Le retard pondéré relatif à cette décision est de valeur 22.
L’ensemble des jobs qui restent à ordonnancer est S4 = {1, 2, 3}.
La durée totale nécessaire à la réalisation des jobs de S4 est D4 = 12
Conclusion.
Le retard pondéré le plus petit est associé à la décision d’exécuter le job J3 en dernier.
On décide d’exécuter le job J3 en dernier.
Niveau 2.
o Cas 1.
Si le job J1 est exécuté juste avant le job J3.
Le retard pondéré relatif à cette décision est de valeur 10.
L’ensemble des jobs qui restent à ordonnancer est S5 = {2, 4}.
La durée totale nécessaire à la réalisation des jobs de S5 est D5 = 10
o Cas 2.
Si le job J2 est exécuté juste avant le job J3.
Le retard pondéré relatif à cette décision est de valeur 9.
L’ensemble des jobs qui restent à ordonnancer est S6 = {1, 4}.
La durée totale nécessaire à la réalisation des jobs de S6 est D6 = 6.
o Cas 3.
Si le job J4 est exécuté juste avant le job J3.
Le retard pondéré relatif à cette décision est de valeur 24.
L’ensemble des jobs qui restent à ordonnancer est S7 = {1, 2}.
La durée totale nécessaire à la réalisation des jobs de S7 est D7 = 10.
24
ENSEM-2021 Pr. ALAMI Ayoub
Remarque.
D’après l’analyse faite jusqu’à présent c’est la décision d’exécuter le job J1 en dernier
qui donne l’espoir d’avoir la somme des retards pondérés la plus petite.
o Cas 4.
Si le job J2 est exécuté juste avant le job J1.
Le retard pondéré relatif à cette décision est de valeur 8.
L’ensemble des jobs qui restent à ordonnancer est S8 = {3, 4}.
La durée totale nécessaire à la réalisation des jobs de S8 est D8 = 5.
o Cas 5.
Si le job J3 est exécuté juste avant le job J1.
Le retard pondéré relatif à cette décision est de valeur 11.
L’ensemble des jobs qui restent à ordonnancer est S9 = {2, 4}.
La durée totale nécessaire à la réalisation des jobs de S9 est D9 = 10.
o Cas 6.
Si le job J4 est exécuté juste avant le job J1.
Le retard pondéré relatif à cette décision est de valeur 24.
L’ensemble des jobs qui restent à ordonnancer est S10 = {2, 3}.
La durée totale nécessaire à la réalisation des jobs de S10 est D10 = 9.
Conclusion.
D’après l’étude réalisée ci-dessus, le retard pondéré le plus petit est associé à la
décision d’exécuter endernier le job J1 et juste avant le job J2.
Niveau 3.
o Cas 1.
Si on exécute le job J1 en dernier, le job J2 juste avant le job J1 et le job J3 juste avant le job J2.
Le retard pondéré relatif à cette décision est de valeur 8.
L’ensemble des jobs qui restent à ordonnancer est S11 = {4}.
La durée totale nécessaire à la réalisation des jobs de S11 est D11 = 3.
o Cas 2.
Si on exécute le job J1 en dernier, le job J2 juste avant le job J1 et le job J4 juste avant le job J2.
Le retard pondéré relatif à cette décision est de valeur 10.
L’ensemble des jobs qui restent à ordonnancer est S12 = {3}.
La durée totale nécessaire à la réalisation des jobs de S12 est D12 = 2.
Conclusion.
D’après l’analyse réalisée jusqu’à présent, la meilleure décision à prendre est celle
relative au cas 1 du niveau 3.
25
ENSEM-2021 Pr. ALAMI Ayoub
Niveau 4.
Si on exécute les jobs dans cet ordre : J4 puis J3 puis J2 et finalement le job J1, alors la
somme des retards pondérés relative à cette décision est de valeur 8.
Résumé :
Bi Ordonnancement Retard Si Di
i Partiel pondéré
1 1 8 2, 3, 4 12
2 2 9 1, 3, 4 8
3 3 6 1, 2, 4 13
4 4 22 1, 2, 3 12
5 1→3 10 2, 4 10
6 2→3 9 1, 4 6
7 4→3 24 1, 2 10
8 2→1 8 3, 4 5
9 3→1 11 2, 4 10
10 4→1 24 2, 3 9
11 3→2→1 8 4 3
12 4→2→1 10 3 2
13 4→3→2→1 8 Ø 0
Dans cette partie nous allons étudier le problème à une machine à jobs indépendants vu dans la
section I.5.1 du chapitre I.
Minimiser t
ti≥ri i∊N
ti – tj ≥ pj ou tj – ti ≥ pi i, j ∊ N , i < j
26
ENSEM-2021 Pr. ALAMI Ayoub
ti - tj ≥ pj ou tj - ti ≥ pi
ti – tj ≥ pj - K.yi,j
tj – ti ≥ pi - K.(1 - yi,j)
Proposition
Corollaire
La quantité V max h(L) est une évaluation par défaut de la durée optimale de
LN
l’ordonnancement du problème à une machine.
* t min ri , U , U N , pi pi i N
iN
Proposition
Exemple
Soit le problème à une machine dont les données figurent dans le tableau ci-dessous :
i 1 2 3 4 5 6 7
ri 10 13 11 20 30 0 30
pi 5 6 7 4 3 6 8
qi 7 26 24 21 8 17 0
t6=0 t11 =10 t31=11 t2=13 t32 =19 t4=24 t12=28 t5=30 t13=33 t7=35
p6=6 p1=5 p3=7 p2=6 p3+=5 p4=4 p1+=4 p5=3 p1+=2 p7=8
p6+=0 p1+=4 p3+=5 p2+=0 p3+=0 p4+=0 p1+=2 p5+=0 p1+=0 p7+=0
q6=17 q2=26 q3=24 q4=21 q5=8 q1=7 q7=0
23 45 48 49 41 42 43
C’est un algorithme de liste dans lequel, à chaque instant où la machine est libre, on
ordonnance l’opération disponible ayant la plus grande durée de latence.
Notons :
t : l’instant courant.
U : l’ensemble des opérations totalement ordonnancées.
Algorithme
* t min ri , U , U N
iN
* Tant que U est non vide, faire :
- Sélectionner l’opération i disponible (ri t) de qi maximale.
- Ordonnancer l’opération i en posant t i = t.
- U = U i et U = U \ i, t = maxt + pi , min rj
jU
28
ENSEM-2021 Pr. ALAMI Ayoub
Exemple
23 22 47 52 53 43 43
6
6
0 1 23
10 5 12
13 2 32
6
o 11 31 *
3
20 25
7
11
30 4
4
8
30 5
3
Théorème
Démonstration
f 0 r1 pi qs
1is
1) Tout d’abord, aucune opération n’exécutée entre les instants r1-1 et r1.
Car sinon, soit j l’opération qui a été exécutée entre ces deux instants, et soit tj la date
du début d’exécution de cette opération. Alors, on a r1 = tj + pj , et donc :
f 0 = t j + p j + pi + q s
1is
Nous avons déjà montré qu’entre les instants r1-1 et r1 aucune opération n’est exécutée,
et dans l’algorithme de Jackson sans préemption lorsque l’opération est ordonnancée,
la date r1 vérifie l’égalité :
r1 min ri
iU
r1 min
i
ri
1is
3) * Si qs = min qi alors :
1is
f 0 r1 p i q s
1is
min ri p i min q i
1is 1is 1is
30
ENSEM-2021 Pr. ALAMI Ayoub
Sinon, il existe alors une opération i, i < s, telle que qi < qs.
Soit c le plus grand indice tel que qc < qs, et soit J = {c+1, c+2, …, s}, donc qc < qα
J.
Remarquons que J rα > tc, car sinon, l’opération α devrait être ordonnancée à
l’instant tc, car elle est plus prioritaire que l’opération c (qc < qα).
Par conséquent, pour tout αJ, on a :
rα > tc = r1 + p1 + p2 + …+ pc-1
Donc :
min r r1 p1 p2 ... pc1
J
Nous avons :
qs min q
J
Ce qui implique :
min r p c1 ... p s min q (r1 pi q s ) p c
J J 1is
C'est-à-dire :
h(J) > f0 – pc
Par conséquent, l’opération c doit être exécutée soit avant, soit après, toutes les
opérations de J.
Exemple
μ = {° , 1 , 2 , 3 , 4 , *}
q1 = 7 , q2 = 26 , q3 = 24 , q4 = 21
On a :
q1 < q4 , q2 q4 , q3 q4
Donc :
c = 1 et J = {2 , 3 , 4}
31
ENSEM-2021 Pr. ALAMI Ayoub
Principe de séparation.
La séparation se fait sur le sommet pendant et non terminal Su de plus petite évaluation
par défaut.
Appliquer l’algorithme de Jackson sans préemption pour déterminer le couple critique
( c , J ).
Si le couple ( c , J ) n’existe pas, alors le sommet Su est terminal.
Sinon, créer les deux sommets fils de Su, Sv et Sv+1.
* Pour Sv, l’opération c doit être exécutée avant toutes les opérations de J, pour cela,
poser :
q c = max q c , p i + min q i
iJ iJ
* Pour Sv+1, l’opération c doit être exécutée après toutes les opérations de J, pour cela
poser :
r c = max r c , min r i + pi
iJ iJ
Fonctions d’évaluation.
o Evaluation par défaut
L’évaluation par défaut en chacun des sommets Sv et Sv+1 est donnée par le maximum de
V(Su), h(J) et h(J{c}).
o Evaluation par excès.
L’évaluation par excès f0 est la valeur de la meilleure solution réalisable trouvée.
Sommets terminaux.
Un sommet Su est dit terminal si une des deux conditions suivantes est vérifiée :
Création de S1.
L’opération 1 doit être exécutée avant toutes les opérations de J.
La nouvelle valeur de q1 est 38.
On trouve V(S1) = 53 = f0.
Donc le sommet S1 est terminal.
Création de S2.
L’opération 1 doit être exécutée après toutes les opérations de J.
La nouvelle valeur de r1 est 28.
32
ENSEM-2021 Pr. ALAMI Ayoub
t6 = 0 , t3 = 11 , t2 = 18 , t4 = 24 , t1 = 28 , t5 = 33 , t7 = 36
f0 = 50
Création de S3.
L’opération 3 doit être exécutée avant l’opération 2.
La nouvelle valeur de q3 est 32.
On trouve V(S3) = 50 = f0.
Le sommet S3 est terminal.
Création de S4.
L’opération 3 doit être exécutée après l’opération 2.
La nouvelle valeur de r3 est 19.
On trouve V(S4) =50 = f0.
Le sommet S4 est terminal.
Donc le dernier ordonnancement trouvé est optimal.
33
ENSEM-2021 Pr. ALAMI Ayoub
Exercice 1
On considère 7 opérations devant passer sur une machine donnée.
On possède pour ces opérations les informations suivantes :
- elles sont toutes actuellement disponibles
- leur temps de traitement et la date à laquelle elles doivent être livrées sont donnés dans le tableau
suivant :
Opérations 1 2 3 4 5 6 7
Durée en jours 4 5 3 6 7 2 1
Délai de livraison 8 10 15 10 17 20 14
Déterminer un ordonnancement minimisant le nombre de jobs en retard.
Exercice 2
Soit le problème à une machine dont les données figurent dans le tableau ci-dessous :
Opération i 1 2 3 4 5 6 7
Date de disponibilité de i (ri) 6 15 0 20 30 9 20
Durée opératoire de i (pi) 5 6 7 4 3 6 8
Durée de latence de i (qi) 7 26 25 0 8 18 15
Déterminer un ordonnancement minimisant le makespan.
34
ENSEM-2021 Pr. ALAMI Ayoub
Solution :
Exercice 2
L’application de l’algorithme Jackson avec préemption donne une borne inférieure du
problème sans préemption. La valeur obtenue est 47. (LB=47)
En appliquant l’algorithme Jackson sans préemption nous obtenant f0=50.
Le chemin critique associé est μ = {°, 3, 1, 6, 2, *}
Le couple critique correspondant est : c = 6 et J = {2}
Création de S1.
L’opération 6 doit être exécutée avant toutes les opérations de J.
La nouvelle valeur de q6 est 32.
Après le calcul de h(J) et h(J{6}) On trouve V(S1) = 47 < f0.
Création de S2.
L’opération 6 doit être exécutée après toutes les opérations de J.
La nouvelle valeur de r6 est 21.
On trouve V(S2) =47 < f0.
Puisque les deux sommets S1 et S2 ont la même valeur, on explore un au hasard. Nous
avons choisi à explorer le sommet S1.
t3 = 0 , t1 =7 , t6 = 12 , t2 = 18 , t7 = 24 , t5 = 32 , t4 = 35
Création de S3.
L’opération 1 doit être exécutée avant toutes les opérations J.
La nouvelle valeur de q1 est 38.
On trouve V(S3) = 49 < f0.
Création de S4.
L’opération 1 doit être exécutée après toutes les opérations J.
La nouvelle valeur de r1 est 21.
On trouve V(S4) =47 < f0.
On a V(S4) < V(S3), on explore le sommet S4.
35
ENSEM-2021 Pr. ALAMI Ayoub
t3 = 0 , t6 =9 , t2 = 15 , t7 = 21 , t1 = 29 , t5 = 34 , t4 = 37
36
ENSEM-2021 Pr. ALAMI Ayoub
Porter séquentiellement sur les axes d'un graphique cartésien les temps de traitement
sur les machines du premier job sur un axe et du deuxième sur l'autre.
Hachurer les sections associées à chaque machine aux intersections des axes indiquant
les surfaces communes.
Déterminer l'ordre des opérations pour chacun des jobs qui n'intercepte pas les
surfaces hachurées en minimisant les déplacements dans le graphe. Seuls les
déplacements horizontaux, verticaux et à 45 degrés sont permis.
Exemple
Soit le problème du flow shop à 2 jobs et 3 machines dont les gammes opératoires sont
données dans le tableau suivant :
j Job 1 Job 2
j -1 MA 3 MA 2
j -2 MB 4 MB 5
j -3 MC 5 MC 3
Pour trouver l’ordonnancement optimal qui minimise la durée totale, nous allons utiliser
l’algorithme d’Akers.
Dans la figure ci-dessous nous donnons la représentation graphique, relative à la
méthode d’Akers, pour ce problème.
37
ENSEM-2021 Pr. ALAMI Ayoub
Algorithme de Johnson.
- Ordonner U suivant la règle SPT sur la première machine (pi,1), et V suivant la règle
LPT sur la deuxième machine (pi,2).
- La séquence optimale est donnée par les travaux ordonnés dans U enchaînés par ceux
ordonnés dans V.
Exemple
j 1 2 3 4 5
j -1 M1 6 M1 4 M1 4 M1 8 M1 2
j -2 M2 8 M2 5 M2 1 M2 4 M2 3
38
ENSEM-2021 Pr. ALAMI Ayoub
Résolution :
- U = {1, 2, 5} et V = {3, 4}
- U = {5, 2, 1} (SPT : pi,1) et V = {4, 3} (LPT : pi,2).
La séquence optimale est : 5→2→1→4→3.
On peut étendre la règle de Johnson au problème du flow shop à trois machines. On définit
alors deux machines fictives M’1 et M’2, sur lesquelles les durées respectives d’un job Ji sont :
Exemple
Soit le problème de flow shop dont les données figurent dans le tableau ci-dessous :
i 1 2 3 4 5 6
p 5 7 4 8 6 7
i,1
p 3 2 3 4 2 0
i,2
p 9 5 7 12 8 7
i,3
p’i,1 8 9 7 12 8 7
p’i,2 12 7 10 16 10 7
Résolution
3→1→5→4→2→6
39
ENSEM-2021 Pr. ALAMI Ayoub
Soit le problème de flow shop à 5 jobs et 4 machines, dont les durées opératoires sont
données dans le tableau suivant :
M 1 M2 M3 M4
J1 2 6 3 1
P = J2 8 3 4 7
J3 1 11 8 6
J4 7 7 15 12
J5 11 3 1 2
Etape 1
J1 J2 J3 J4 J5
M1 2 8 1 7 11
M2 1 7 6 12 2
D’où :
M 1 M2 M3 M4
J3 1 11 8 6
1
P = J4 7 7 15 12
J2 8 3 4 7
J5 11 3 1 2
J1 2 6 3 1
40
ENSEM-2021 Pr. ALAMI Ayoub
M 1 M2 M3 M4
J3 0 1 12 20
1
T = J4 1 12 20 35
J2 8 19 35 47
J5 16 27 39 54
J1 27 30 40 56
M 1 M2 M3 M4
J3 1 12 20 26
C1 = J4 8 19 35 47
J2 16 22 39 54
J5 27 30 40 56
J1 29 36 43 57
Etape 2
J 1 J2 J3 J4 J5
M1 8 11 12 14 14
M2 4 11 14 27 3
D’où :
M 1 M2 M3 M4
J3 1 11 8 6
2
P = J4 7 7 15 12
J2 8 3 4 7
J1 2 6 3 1
J5 11 3 1 2
M 1 M2 M3 M4
J3 0 1 12 20
2
T = J4 1 12 20 35
J2 8 19 35 47
J1 16 22 39 54
J5 18 29 42 55
M 1 M2 M3 M4
J3 1 12 20 26
C2 = J4 8 19 35 47
J2 16 22 39 54
J1 18 28 42 55
J5 29 32 43 57
41
ENSEM-2021 Pr. ALAMI Ayoub
Etape 3
J1 J2 J3 J4 J5
M1 11 15 20 29 15
M2 10 14 25 34 6
Donc, les deux ordonnancements trouvés par l’algorithme de CDS ont la même durée
totale, on peut prendre, par exemple, l’ordonnancement donné dans le tableau ci-
dessous :
M 1 M2 M3 M4
J3 0 1 12 20
2
T = J4 1 12 20 35
J2 8 19 35 47
J1 16 22 39 54
J5 18 29 42 55
42
ENSEM-2021 Pr. ALAMI Ayoub
Exercice
Une entreprise doit usiner n pièces qui doivent être fabriquée par deux machines, A et B
séquentiellement : d’abord sur la machine MA puis sur la machine MB.
Une fois l’ordre choisi sur la machine A, les pièces doivent être réalisées suivant le même ordre sur
la machine B.
On dispose comme données des durées de fabrication dA(Pi) et dB(Pi) de chaque pièce Pi sur les
deux machines. Encore une fois, le but est de minimiser le temps final où toutes les pièces sont
exécutées.
Voilà un exemple de données. En usinant les pièces dans l’ordre 2, 1, 3 on obtient un
ordonnancement qui termine à la date 16.
Pièces 1 2 3
Durée dA 3 2 4
Durée dB 1 4 7
Pièces 1 2 3 4 5
Durée dA 4 1 3 5 2
Durée dB 1 3 2 3 3
Pour justifier son algorithme, Johnson a prouvé que pour obtenir l’ordonnancement optimal, il suffit
de mettre la pièce Pi avant la pièce Pj si l’inégalité suivante est vérifiée
min(dA(Pi); dB(Pj)) ≤ min(dB(Pi); dA(Pj)) (1)
Question 3. Montrer que, pour une instance quelconque, l’ordonnancement obtenu avec
l’algorithme de Johnson vérifie bien cette propriété. C’est-à-dire que pour toutes pièces Pi et Pj
l’inégalité (1) est vérifiée. On pourra séparer les cas suivant si Pi et Pj sont tous les deux dans S ou
bien tous les deux dans T ou bien un dans chaque ensemble.
43
ENSEM-2021 Pr. ALAMI Ayoub
j Job 1 Job 2
j -1 MA 6 MA 4
j -2 MB 1 MD 3
j -3 MC 5 MB 2
j-4 MD 4 MC 5
Pour trouver l’ordonnancement optimal qui minimise la durée totale, nous allons utiliser
l’algorithme d’Akers.
Dans la figure ci-dessous nous donnons la représentation graphique, relative à la
méthode d’Akers, pour ce problème
44
ENSEM-2021 Pr. ALAMI Ayoub
Algorithme
* Sur M1 : F1,2→F1→F2,1
* Sur M2 : F2,1→F2→F1,2
Exemple
Déterminer le séquencement optimal du job shop dont les données figurent dans le
tableau ci-dessous :
J 1 2 3 4 5 6 7 8 9
j-1 M1 8 M1 7 M1 9 M1 4 M2 6 M2 5 M1 9 M2 1 M2 5
j-2 M2 2 M2 5 M2 8 M2 7 M1 4 M1 3 -- -- -- -- -- --
Résolution
45
ENSEM-2021 Pr. ALAMI Ayoub
M1 M2 M3
2
3 3
Routages
j 1 2 3
j -1 M1 5 M2 3 M3 6
j -2 M2 7 M3 4 M2 1
j -3 M3 1 - - M1 5
Gammes opératoires
Dans la suite de ce cours, on ne s’intéressera qu’au job shop dont le critère à minimiser est
la durée totale de l’ordonnancement.
IV.3.2 Complexité
Excepté pour les rares cas pour lesquels des algorithmes polynomiaux ont été mis au point :
46
ENSEM-2021 Pr. ALAMI Ayoub
Un job shop peut être modélisé sous la forme d’un programme linéaire mixte, ou à
l’aide d’un graphe « disjonctif ».
Notations :
Dans ce qui suit, nous allons utiliser les notations suivantes :
n : le nombre de jobs.
m : le nombre de machines.
Ji : le ième job.
ni : le nombre d’opérations du job Ji.
(i,h) : la hème opération du job Ji.
pi,h : la durée opératoire de (i,h).
N = {1, 2, …, n}
M = {1, 2, …, m}
Ni = {1, 2, …, ni}
J = {(i,h) / iN et hNi}
Hypothèse
Dans la suite de ce chapitre, on suppose que pour tout i élément de N et tout h compris
entre 1 et ni – 1, l’opération (i,h) précède l’opération (i,h+1).
Un job shop peut être modélisé à l’aide d’un graphe « disjonctif » G’ = (G,D), où :
G = (X,C) est le graphe associé à la partie conjonctive de G’, et où :
X = J{°,*}
47
ENSEM-2021 Pr. ALAMI Ayoub
Exemple
Le graphe « disjonctif » modélisant le job shop de l’exemple précédent est donné ci-
dessous :
1 2 3
2 3
0 3 4
0 2-1 2-2
0
*
5
3 2 1
Pour construire un ordonnancement du job shop J il faut arbitrer les arcs « disjonctifs »
du graphe G’. C'est-à-dire, il faut fixer un sens à chaque arc « disjonctif ».
Définition
Définition
Un arbitrage A est dit complet si tous les arcs de D ont été arbitrés.
Définition
Le problème
Notons par Acc l’ensemble des arbitrages compatibles complets associés au graphe
« disjonctif » G’, et par t(A) la valeur du chemin de longueur maximale dans GA.
Alors, résoudre le problème d’ordonnancement du job shop J consiste à déterminer un
élément A* de Acc tel que :
t(A*) min t(A)
AAcc
48
ENSEM-2021 Pr. ALAMI Ayoub
Arbitrages triviaux
alors, dans l’ordonnancement T, l’opération (j,k) doit être exécutée avant l’opération (i,h).
Entrée et sortie d’une clique
Définition
Une clique C est un ensemble d’opérations qui doivent être exécutées sur la même
machine, et de cardinal au moins égal à 2.
Définition
rk pi min qi f0 (1)
iC iSk
min ri pi q k f 0 (2)
iEkiC
Proposition
49
ENSEM-2021 Pr. ALAMI Ayoub
Proposition
Ci-dessous nous présentons la méthode de Carlier et Pinson qui est une méthode
arborescente. Elle permet de déterminer la solution optimale du problème du job shop
classique.
Fonction d’évaluation
où l(x,y) est la valeur du chemin de longueur maximale allant de x à y dans le graphe GA.
Une évaluation par défaut peut être obtenue en résolvant m problèmes à une machine en
utilisant l’algorithme de Jackson avec préemption.
Si Vk est la durée totale de l’ordonnancement de Jackson avec préemption relatif à la
machine Mk, alors :
Principe de séparation.
Soit [(i,h),(j,k)] une disjonction non arbitrée. Nous séparons Su en deux sommets Sv et Sv+1.
𝑖,ℎ
𝑑𝑗,𝑘 max0 , rj,k + p j,k + pi,h + qi,h - LB
𝑗,𝑘
𝑗,𝑘 𝑑𝑖,ℎ𝑗,𝑘
𝑎𝑖,ℎ min 𝑑𝑖,ℎ
𝑗,𝑘 𝑗,𝑘
𝑏𝑖,ℎ 𝑑𝑖,ℎ 𝑑𝑖,ℎ
𝑗,𝑘
𝑗,𝑘
Faire la séparation sur la disjonction de 𝑏𝑖,ℎ maximal, et en cas d’égalité sur celle de
𝑗,𝑘
𝑎𝑖,ℎ maximal.
Exercices
i 1 2 3 4 5 6 7 8 9 10
i-1 M1 6 M1 4 M1 4 M1 5 M1 7 M2 6 M2 8 M2 4 M2 5 M2 4
i-2 M2 5 M2 7 M2 3 M2 4 -- -- -- -- M1 6 M1 7 M1 3 M1 6
51