GPA750 Les ateliers multigammes Chapitre 5

Slides:



Advertisements
Présentations similaires
Théorie des graphes.
Advertisements

Antoneta Iuliana BRATCU
Algorithmes et structures de données avancés
Classification et prédiction
Classification et prédiction
CH-IV. L’ORADONNANCEMENT
La construction d ’un réseau PERT
Algorithmes dapproximation pour loptimisation en ligne dordonnancements et de structures de communications Nicolas Thibault Thèse préparée au laboratoire.
F. Pascual - Laboratoire d’Informatique de Grenoble
A.Faÿ 1 Recherche opérationnelle Résumé de cours.
INTRODUCTION.
Ordonnancement des mouvements de deux robots
Plan 1. Problème étudié : Job Shop 1.1. Données et contraintes
Plus rapide chemin bicritère : un problème d’aménagement du territoire
variable aléatoire Discrète
Chapitre II.Rappels mathématiques et complexité
Génération de colonnes
Recherche Opérationnelle
                                        République Algérienne Démocratique et Populaire Ministère de l’Enseignement Supérieur et de la Recherche Scientifique.
Professeur Amar Ramudhin, ing. Ph.D
Conception et analyse des algorithmes
Plus courts chemins On présente dans ce chapitre un problème typique de cheminement dans les graphes : la recherche d'un plus court chemin entre deux sommets.
GPA750 – Ordonnancement des systèmes de production aéronautique
Partie 1: Notions & concepts
Algorithmes Branch & Bound
Heuristiques A. Introduction B. Recherche d ’une branche
Programmation linéaire
GPA750 – Ordonnancement des systèmes de production aéronautique
Les fichiers indexés (Les B-arbres)
LES ARBRES IUP 2 Génie Informatique
Algorithme de Bellman-Ford
GPA 750 Chapitre 3 : Les méthodes d’ordonnancement génériques
Programmation linéaire en nombres entiers Algorithme de la subdivision successive («Branch and Bound Algorithm»)
Courbes de Bézier.
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
CSI 4506: Introduction à l’intelligence artificielle
1 Licence dinformatique Algorithmique des graphes Problèmes dordonnancement. Utilisation de ce document strictement réservée aux étudiants de l IFSIC dans.
Algorithmes d ’approximation
Deux méthodes incrémentales pour le maintien dun arbre de connexion Nicolas Thibault Christian Laforest
Optimisation dans les réseaux
Recherche Opérationnelle
Page de garde présentation
Mise en oeuvre des MMCs L'utilisation des MMCs en reconnaissance des formes s'effectue en trois étapes : définition de la topologie de la chaîne de Markov,
1 Protection des arbres multicast avec une forêt duale Mohand Yazid SAIDI Bernard COUSIN Miklós MOLNÁR 15 Février 2006.
Introduction aux problèmes d'ordonnancement sans temps-morts.
Ordonnancement de tâches on-line avec pénalités Nicolas Thibault et Christian Laforest Laboratoire IBISC (Évry) 1 / 12.
Programmation dynamique
GPA750 – Gestion de Projets
Génération de colonnes pour la résolution des problemes de foresterie
Planification de flux et Aménagement
Pour le chemin le plus court pour tous les couples
Programmation linéaire en nombres entiers : les méthodes de troncature
Modélisation géométrique de base

MAXIMISER les RESULTATS
Heuristiques C. Recherche de la meilleure branche . Branch And Bound
Programmation dynamique
Programmation linéaire en nombres entiers
Algorithmes Branch & Bound
Le problème central de l’ordonnancement (les plus longs chemins)
LE FLOT MAXIMAL et LA COUPE MINIMALE
Problème de double digestion
6. Problème de flot à coût minimum.
Ajouts et retraits dans un arbre de connexion Nicolas Thibault et Christian Laforest, Équipe OPAL Laboratoire IBISC (regroupement LaMI et LSC), Évry 8.
Structures de données avancées : Arbres B+ avec expansion partielle D. E ZEGOUR Institut National d ’Informatique.
Structures de données avancées : MLH (Multidimensional linear hashing) D. E ZEGOUR Institut National d ’Informatique.
Le Jeu et l’intelligence artificielle
Ordonnancement en présence d’agents individualistes
Algorithmes Branch & Bound Module IAD/RP/RO Master d ’informatique Paris 6 Philippe Chrétienne.
1 UE Intro. Optimisation L3 INFO UPSud II. Programmation linéaire en variables entières (ou mixtes)
Transcription de la présentation:

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 : 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.

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

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

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!

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 .

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!

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;

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 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.

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).

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.

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

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) = maxiM-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 Application de l ’heuristique du goulot changeant : Exemple 5.3.1 (suite)

Delayed-Precedence constraints : Exemple 5.3.2

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.

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.