Gpa750 les ateliers multigammes chapitre 5
Sponsored Links
This presentation is the property of its rightful owner.
1 / 31

GPA750 Les ateliers multigammes Chapitre 5 PowerPoint PPT Presentation


  • 75 Views
  • Uploaded on
  • Presentation posted in: General

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 :

Download Presentation

GPA750 Les ateliers multigammes Chapitre 5

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


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


    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.


  • Login