• 320 likes • 489 Views
GPA750 Les ateliers multigammes Chapitre 5. Cours 8-9. Sommaire. Ordonnancement dans les ateliers multigammes ( Job shop scheduling ) : Formulation disjonctive. Énumération implicite sur les calendriers actifs. La procédure de résolution par analyse de goulots successifs :
E N D
GPA750Les ateliers multigammesChapitre 5 Cours 8-9
Sommaire • Ordonnancement dans les ateliers multigammes (Job shop scheduling) : • Formulation disjonctive. • Énumération implicite sur les calendriers actifs. • La procédure de résolution par analyse de goulots successifs : • Minimisation du temps total de finition Cmax. • Minimisation de la somme des tardivetés pondérées. • Une procédure générale pour l’ordonnancement dans les ateliers flexibles monogames avec temps de changements.
Ateliers multigammes(Job shop) 1. Description de l’environnement de l’atelier • m machines (i = 1, 2, …, m); • n commandes (j = 1, 2, … n) à traiter avec une fonction objectif à minimiser. • Chaque commande j a une opération (i, j) à effectuer sur la machine i pour une durée de pij. • Les routages des commandes sur les machines dans l’atelier sont connues et varient de commande en commande. • Par exemple: • C1 : M1-M2-M4-M5. • C2: M2-M3-M5-M4-M1. • Chaque commande peut passer sur chaque machine au plus une fois : il n ’y a pas de re-circulation (par exemple : Mk-Ml-Mk). 2. Pratique : • Industrie des semi-conducteurs (re-circulation). • Hôpital : les commandes sont les patients;chaque patient a son routage et doit être traité à un certain nombre de stations (départements) dans le système.
Ateliers multigammes(Job shop) 3. Définitions et notation pour Jm//Cmax sans re-circulation • On définit le graphe disjonctif G = (N, A, B) pour représenter Jm//Cmax sans re-circulation où: • N: l’ensemble des nœuds correspondant à toutes les opérations avec deux nœuds supplémentaires : un nœud source (u) et un nœud puit (v). • A: l’ensemble des arcs conjonctifs qui représentent les contraintes de précédence entre les opérations d’une seule commande i.e., les arcs du type (i, j) -> (k, j) qui définissent les contraintes de routage de la commande j. • B: l’ensemble des arcs disjonctifs i.e. deux opérations (i, l) et (i, j) appartenant à 2 commandes différentes l et j qui doivent être traitées par la même machine i sont reliées entre elles par 2 arcs disjonctifs allant dans les deux sens opposés : arcs disjonctifs (i, l) <-> (i, j). • Note : • Un arc disjonctif entre 2 commandes l et j exprime le fait que l et j doivent s’exécuter dans des intervalles de temps disjoints.
J2,2 M1 M2 J2,1 J1,2 J1,1 Ateliers multigammes avec deux machines : J2//Cmax sans recirculation 4. Problème J2//Cmax sans re-circulation. • Comment min Cmax?
M1 M2 M2 M1 Ateliers multigammes avec deux machines : J2//Cmax sans recirculation Il y a 4 ensembles de commandes : • Type 1 : J1,1 = ensemble des commandes devant être traitées seulement sur la machine M1. • Type 2 : J2,2 = ensemble des commandes devant être traitées seulement sur la machine M2. • Type 3 : J1,2 = ensemble des commandes qui doivent être traitées d ’abord sur la machine M1 et ensuite sur la machine M2 : • Type 4 : J2,1 = ensemble des commandes qui doivent être traitées d’abord sur la machine M2 et ensuite sur la machine M1:
Algorithme pour résoudre J2//Cmax sans recirculation Algorithme 1: • On suppose qu ’une machine doit compléter toutes les commandes d ’un type donné avant de passer à un autre type de commandes. • Étape 1 : ordonnancer les commandes de type 1 avec un ordre quelconque pour donner la séquence J1,1. • Étape 2: ordonnancer les commandes de type 2 avec un ordre quelconque pour donner la séquence J2,2. • Étape 3 : ordonnancer les commandes de type 3 selon l ’algorithme de Johnson pour F2//Cmax ou F2//Fmax . • Étape 4: ordonnancer les commandes de type 3 selon l ’algorithme de Johnson pour F2//Cmax ou F2//Fmax . • Attention : Pour l ’étape 4, M2 est considérée comme la première machine!
Algorithme pour résoudre J2//Cmax sans recirculation Ordonnancement obtenu : • Machine 1 : Ordre de traitement sur M1 (J1,2; J1,1; J2,1). • Machine 2 : Ordre de traitement sur M2 (J2,1; J2,2; J1,2). Cas particulier: Si type 1 et type 2 sont absents, on a pour J2//Cmax Algorithme 2: • Étape 1 : ordonnancer les commandes de l’ensemble J1,2 selon l’algorithme de Johnson pour F2//Cmax ou F2//Fmax . • Étape 2: ordonnancer les commandes de l ’ensemble J2,1 selon l’algorithme de Johnson pour F2//Cmax ou F2//Fmax . Ordonnancement obtenu : • Machine 1 : Ordre de traitement sur M1 (J1,2; J2,1). • Machine 2 : Ordre de traitement sur M2 (J2,1; J1,2). Exemple .
Formulation mathématique de Jm//Cmax sans recirculation et représentation disjonctive Variables de décision: yij – temps de début de la commande j sur la machine i i.e. temps de début de l’opération (i, j). Remarque: Notez que seulement une des deux contraintes disjonctives doit être active. Le graphe disjonctif G = (N, A, B) : A : Contraintes de routage de chaque commande j : (i, j) -> (k, j). B: Ensemble des arcs disjonctifs : un sous-ensemble par machine. N: Ensemble des opérations.
Représentation d’un ordonnancement • Pour avoir un ordonnancement réalisable: • Il faut choisir un arc de chaque paire d’arcs disjonctifs de sorte qu’il n’y ait pas de cycle dans le graphe résultant. • On a alors: • Une paire d’arcs disjonctifs par opération sur une même machine. • Un sous-ensemble d’arcs par machine. • En résumé, spécifier un ordonnancement réalisable revient à: • Spécifier les arcs pour chaque machine. • Ce qui correspond à spécifier le séquence des opérations sur chaque machine. • Voir exemple (page suivante). • Comment spécifier les arcs (ou ordonnancement pour chaque) machine? • En solutionnant un problème correspondant d’ordonnancement sur une machine… • La fonction à optimiser pour ce problème d’une machine dépend de la fonction globale.
Exemple d’un ordonnancement réalisable Aucune machine ordonnancée Séquence 1-2-3 sur machine 1 Un ordonnancement complet Séquence 1-2-3 sur machine 2 Séquence 1-2-3 sur machine 1 Attention aux cycles lorsqu’on fixe les séquences!
Considérons la machine 1. On a un problème d’une machine avec les opérations: (1,1), (1,2), (1,3). Le temps au plus tôt r1j pour débuter l’opération (1, j) correspond : Le chemin le plus long du nœud de source (u) au nœud (i, j) = L(u,(i, j)). r1j = L(u,(1,j)) r11= 0; r12= 8; r13= 0; Problème d’une machine
Pappel : Calendrier actif Impossible de générer un autre calendrier en changeant la séquence sur les machines de sorte qu’une opération commence plus tôt et aucune opération commence plus tard. Algorithme 5.2.1 – Énumération des calendriers actifs. Étape 1: est l’ensemble qui contient les premières opérations de chaque commande j. rij= 0 pour (i, j) . Étape 2: sélection de la machine Pour l’ordonnancement partiel, calculer : t() = min (i, j) {rij+pij}. Soit i* la machine où le minimum est atteint. Étape 3: Branchement Soit ’ l’ensemble des opérations (i*, j) tel que ri*j< t(). Pour chaque opération dans ’, considérer une extension de la séquence partielle avec cette opération comme étant la prochaine sur la machine i*. Pour chaque extension, supprimer l’opération ordonnancée de et placer ses successeurs immédiats dans . Retourner à l’étape 2. Procédure d’énumération complète des calendriers actifs
L’arbre correspondant • Ω l’ensemble qui contient les premières pérations de chaque commande j. t1 = t(Ω) = min (i,j) ЄΩ{rij+pij} Ω’ = {(i*,l), (i*,k), (i*,p)} • Avantage: La procédure d’énumération peut être utilisée pour tous les fonctions objectifs: Cmax, Lmax, etc. • Désavantage : temps de calcul très long. • Combien de noeuds à chaque niveau?
Procédure d’énumération implicite (Branch and Bound) • À chaque nœud de l ’arbre : • Calculer une borne inférieure sur toute solution découlant de ce nœud. • Supposons que la fonction à minimiser est Cmax. • Calcul des bornes inférieures : • Au nœud v, soit l’opération (i*, j) qui est choisie. • Les arcs disjonctifs suivants doivent être ajoutés sur la machine i*: • (i*,j) -> (i*,k), pour toute opération k qui n’est pas encore ordonnancée sur la machine i*. • Soit D’ l’ensemble de tous les arcs disjonctifs qui ont été fixés par l’ordonnancement partiel au nœud v. • Une borne inférieure LB(v) sur Cmax est donnée par le calcul du chemin critique (ou le chemin le plus long) dans le graphe G(D’). Voir exemple 5.2.2.
Calcul d ’une meilleure borne inférieure pour Jm//Cmax sans recirculation • Une meilleure borne est donnée par la solution du problème à une machine où: • Il y a n opérations. • Chaque opération (i, j) a une date de mise en disponibilité rij et une date promise dij. • On veut minimiser Lmax. • En résumé: À chaque nœud v’, on peut construire un sous problème similaire pour chacune des m machines. • Soit la machine i et le graphe G(N, A, D’) où : • D’ correspond aux arcs disjonctifs déjà fixés aux itérations précédentes. • On a pour chaque opération (i, j) sur la machine i: • rij = L(u,(i, j)): Chemin le plus long de la source (u) au nœud (i, j) dans G. • dij = LB(v’) – L((i, j),v)) + pij. • Soit Lmax(i), la solution pour la machine i. • La nouvelle borne est obtenue : • en trouvant la solution optimale aux m sous-problèmes (un pour chaque machine) Lmax(i), i= 1,…m; • en prenant le maximum sur les Lmax(i).
Niveau 0 : Aucun arc disjonctif et Cmax = 22. LB = 22 (chemin le plus long dans G). Niveau 1: Ω = {(1,1), (2,2), (1,3)} et r11= r22= r13 = 0. t(Ω) = min (0+10, 0+8, 0+4) = 4. i* = 1 (machine 1). Ω’ = {(1,1), (1,3)} car r11, r13< t(Ω) = 4. Donc, deux branches du noeud 0 et donc deux séquences partielles au nœud 1: Calcul des bornes. (1,1) et (1,3). Si (1,1) est choisi pour la première position alors les arcs disjonctifs suivants doivent être ajoutés : (1,1) -> (1,2) (1,1) -> (1,3) Avec ces deux arcs Cmax = LB = 24. Pour avoir une meilleure borne, il faut solutionner 3 sous problèmes d’une machine pour M1, M2 et M3. Application de la méthode de Branch and Boud : Exemple 5.2.2
Application de la méthode de Branch and Boud : Exemple 5.2.2 (suite) • Avantage: La procédure d’énumération implicite trouve la solutionoptimale pour Cmax. • Désavantage: temps de calcul très long
Procédure du ‘Shifting Bottleneck’ou du goulot changeant pour Jm//Cmax • Qualité de l ’heuristique : Cette procédure n’explore pas toutes les solutions • Par conséquent, elle ne garantit pas la solution optimale. • Cependant, en pratique, l’heuristique donne de très bonnes solutions. • Soit • M : l’ensemble des machines se trouvant dans l ’atelier. • Mo : l’ensemble des machines où les séquences des opérations sont fixées. • Les arcs disjonctifs sont déjà définis. • Le graphe G’ est obtenu de G=(N, A, B) en fixant les arcs disjonctifs de l’ensemble Mo et en enlevant les arcs correspondant aux machines de l’ensemble B - Mo. • Au début Mo est vide : Mo = . • À chaque itération, on fixe la séquence sur une machine ‘goulot’: • On choisit la machine goulot en solutionnant M-M0 problèmes d’une machine où il faut minimiser Lmax: Lmax (k) = maxiM-Mo {Lmax(i)}. • Soit k la machine goulot. On a : • Cmax(Mo k) >= Cmax (Mo) + Lmax(k). • Où Cmax (Mo) est le chemin critique dans le graphe G’. • Avant de passer à l’itération suivante, on ré-optimise les machines de l’ensemble Mo. • Ajouter k dans Mo. • Il faut faire attention aux cycles!
Procedure du ‘Shifting Bottleneck’ ou du goulot changeant (p. 91-92)
Application de l ’heuristique du goulot changeant : Exemple 5.3.1
Application de l ’heuristique du goulot changeant : Exemple 5.3.1 (suite)
Ajout des contraintes pour empêcher des cycles Delayed Precedence constraints
Procédure du goulot changeant pour minimiser la somme des tardivetés • Soit un atelier avec m machines et n commandes. • Pas de re-circulation possible. • On veut minimiser wjTj. • Approche similaire au goulot où à chaque itération, on résout un certain nombre de problèmes d’une machine. • Soit • M : l’ensemble des machines. • Mo: l’ensemble des machines où les séquences des opérations sont fixées. • Les arcs disjonctifs sont déjà définis. • Le graphe disjonctif G = (N, A, B) est différent dans ce cas: • Un nœud de source u. • n puits : v1, v2, …, vn (un puit pour chaque commande). • Le chemin le plus long de u à vk donne le temps de finition de la commande k. • Le graphe G’ est obtenu de G = (N, A, B) en fixant les arcs disjonctifs de l’ensemble Mo et en enlevant les arcs correspondant aux machines de l’ensemble B-Mo. • Le graphe G’ est nécessairement acyclique (pas de cycle).
Le graphe associé au problème de job shop sans re-circulation pour minimiser wjTj
Procédure du goulot changeant pour minimiser la somme des tardivetés (suite) • Soit C’k la date de finition de la commande k dans le graphe G’ : C’k correspond à L(u,vk) dans G’. • Au début Mo est vide : Mo = . • À chaque itération, on fixe la séquence sur une machine de l’ensemble M-Mo. • Soit i une machine de M-Mo : • Afin d’éviter une augmentation du temps de finition C’k , chaque opération (i, j) de la machine i doit être complétée avant la date dkij. • Étant donné que chaque opération (i, j) peut potentiellement retarder n’importe laquelle des n commandes, cette opération possède n dates promises : (d1ij, d2ij,…, dnij). • La forme de la courbe de pénalité est donnée par une fonction linéaire par morceaux (piece-wise linear – voir figure 5.10).
Structure du sous-problème i pour minimiser la somme des tardivetés • Le sous problème correspondant à la machine i est décrit comme suit : • Min la somme des tardivetés sous : • des contraintes de mise en disponibilité. • une fonction de pénalité linéaire par morceaux. • Peut être résolu de façon heuristique à l’aide d’une extension de l’algorithme ATC. • La priorité d’une opération (i, j) est donnée par la valeur suivante : • Soit k la machine goulot. Celle-ci est déterminée par : • La machine ayant la plus grande coût de pénalité. • En utilisant d’autres procédures plus complexes (voir p. 100). • Avant de passer à l’itération suivante, on ré-optimise les machines de l’ensemble Mo. • Ajouter k dans Mo
Ordonnancement dans les ateliers flexibles monogames avec temps de changements • Un nombre d’étapes. • Chaque étape possède : • plusieurs machines en parallèles; • ou des machines flexibles avec vitesse variable; • temps de changement qui dépendent de la séquence.
Procédure générale d ’ordonnancement dans les ateliers flexibles monogames avec temps de changements. • Identification de l’étape goulot. • Détermination des fenêtres de temps sur le goulot. • Calcul de la capacité requise sur le goulot et balancement de la charge de travail si nécessaire. • Ordonnancement du goulot. • Ordonnancement des étapes non-goulots.