Télécharger la présentation
1
GPA750 Les ateliers multigammes Chapitre 5
Cours 8-9
2
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.
3
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.
4
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.
5
Ateliers multigammes avec deux machines : J2//Cmax sans recirculation
4. Problème J2//Cmax sans re-circulation. Comment min Cmax? J1,1 M1 M2 J2,2 J1,2 J2,1
6
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: M1 M2 M2 M1
7
Algorithme pour résoudre J2//Cmax sans recirculation
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!
8
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 . Machine 1 : Ordre de traitement sur M1 (J1,2; J2,1). Machine 2 : Ordre de traitement sur M2 (J2,1; J1,2). Exemple .
9
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.
10
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.
11
Exemple d’un ordonnancement réalisable
Aucune machine ordonnancée Séquence sur machine 1 Un ordonnancement complet Séquence sur machine 2 Séquence sur machine 1 Attention aux cycles lorsqu’on fixe les séquences!
12
Problème d’une machine
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;
13
Procédure d’énumération complète des calendriers actifs
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 – É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.
14
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?
15
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
16
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).
17
Application de la méthode de Branch and Boud : Exemple 5.2.2
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.
18
Application de la méthode de Branch and Boud : Exemple 5.2.2 (suite)
Avantage: La procédure d’énumération implicite trouve la solution optimale pour Cmax. Désavantage: temps de calcul très long
19
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!
20
Procedure du ‘Shifting Bottleneck’ ou du goulot changeant (p. 91-92)
21
Application de l ’heuristique du goulot changeant : Exemple 5.3.1
22
Application de l ’heuristique du goulot changeant : Exemple 5. 3
Application de l ’heuristique du goulot changeant : Exemple (suite)
23
Delayed-Precedence constraints : Exemple 5.3.2
24
Ajout des contraintes pour empêcher des cycles
Delayed Precedence constraints
25
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).
26
Le graphe associé au problème de job shop sans re-circulation pour minimiser wjTj
27
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).
28
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
29
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.
30
Identification de l’étape goulot.
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.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.