240 likes | 456 Views
GPA 750 Chapitre 3 : Les méthodes d’ordonnancement génériques. Cours #6. 3.1. Sommaire. Objet : décrit quelques techniques utilisées pour traiter les problèmes d’ordonnancement difficiles rencontrés dans l’industrie (il faut donc trouver une solution acceptable) . Techniques :
E N D
GPA 750Chapitre 3 : Les méthodes d’ordonnancement génériques Cours #6
3.1. Sommaire Objet : • décrit quelques techniques utilisées pour traiter les problèmes d’ordonnancement difficiles rencontrés dans l’industrie (il faut donc trouver une solution acceptable). Techniques : • Règles de Priorité Locale. • Règles de Priorité Composée. • Énumération Implicite (Branch & Bound). • Recherche de type ‘Beam’. • Recherche de type locale: • Recuit simulé (Simulated Annealing). • Recherche Tabou (Tabu Search). • Algorithme Génétique.
3.2. Règles de priorité de base : Procédure générale • Initialisation • S’j : temps de début au plus tôt de j; • C’j : temps de fin au plus tôt de j; • J = Ensemble des commandes . • {Predj} : ensemble des prédécesseurs immédiats de j. • {Succj} : ensemble des successeurs immédiats de j. • At : Ensemble des commandes pouvant être traitées au temps t. • Et : Ensemble des commandes en cours d’exécution au temps t. • Ft : Ensemble des commandes complétées au temps t. • Procédure Avant (Forward Pass) • Étape 1: • t=0; E0 = { }; Ao = {ensemble des commandes n’ayant pas de prédécesseurs} • Pour chaque commande j dans Ao : • S’j = 0 et C’j = pj • J = J ; E0 = A0 • Étape 2 : • t = min j dans Et{C’j} • Mettre à jour les ensembles J, Ft, At et Et; • At = At + {Succj} • Ft = Ft + j; • Et = Et - j; • J = J - j. • Soit k la commande obtenue en appliquant une règlequelconquesur l’ensemble At; • La commande k peut être débutée au temps t sur la machine m. • S’k = Max {j Predj} C’j, • C’k = S’k + pk ; • Mettre à jour les ensembles • At = At - k; Et = Et + k • Étape 3: • Si Ft J aller à l’Étape 2; • Le temps de finition Cmax = max (C’1, …., C’n) • FIN.
3.2. Règles de priorité de base: Règles de priorité locale • Différents types de classifications de règles de priorité : • Statique vs. Dynamique • Statique • dépend des données de la commande ou de la machine. • Exemple : SPT • Reste invariable dans le temps. • Dynamique • Peut varier dans le temps • Exemple Marge Minimale en premier (MS) défini comme suit : Max (dj – pj – t, 0) • Locale vs. Globale • règle locale: utilise seulement l’information pertinente • à la file d’attente où la commande attend ; • ou à la machine (station) où la commande attend. • Règle globale: utilise l’information des autres machines ou des autres commandes dans la séquence.
3.2. Règles de priorité de base : Exemples de règles • Règle Aléatoire (SIRO): • Sélectionner la commande à exécuter de façon aléatoire. • Earliest Release Date First (ERD): • Date de mise en disponibilité le plus tôt en premier (PAPS). • Earliest Due Date First (EDD) : • La commande avec la plus petite date promise en premier; EDD tend à minimiser le retard maximal. • Minimum Slack Rule (MS) : • Marge minimale en premier. • Si une machine est disponible au temps t, la marge de chaque commande j est calculée comme suit : Max (dj – pj – t, 0). • La commande ayant la marge minimale est sélectionnée pour traitement. • WSPT : • Lorsqu’une machine devient disponible, la commande ayant le plus grand ratio du poids (wj) sur temps d’opération (pj) est sélectionnée. • LPT : • Temps le plus long en premier. • Utilisée pour équilibrer la charge de travail en présence de machines parallèles. • Une fois les commandes assignées, on peut appliquer une autre règle sans affecter la charge de travail.
3.2. Règles de priorité de base : Exemples de règles (suite) • Shortest Setup First (SST) : • Plus petit temps de changement en premier. • Least Flexible Job First (LFJ) : • commande la moins flexible en premier. • Est utilisée lorsqu’une commande peut être exécutée sur plusieurs machines. • La commande la moins flexible est celle qui a un nombre restreint de machines. • Critical Path (CP) : • Chemin critique. • Choisir la commande à la tête de la plus longue chaîne de temps d’opération. • Largest Number of Successors (LNS) : • Plus grand nombre de successeurs. • Shortest Queue at Next Operation (SQNO) : • Plus petite file d’attente à la prochaine opération. • Est utilisée dans les ateliers multi-gammes. • Quand une machine devient libre, la commande ayant la plus petite file d’attente à la prochaine machine est sélectionnée.
3.3. Règles de priorité composée • Quand? Est utilisée lorsqu’on veut considérer plusieurs objectifs à la fois. • Un objectif réaliste : combine plusieurs règles dans le choix de la commande à effectuer au temps t. • Le poids accordé à une règle dépend de la valeur d’un paramètre d’échelle (scaling factor). • Exemple : • Minimiser wjTj (somme de tardiveté) sur une machine : Problème difficile. • On sait que • WSPT donne la solution optimale si les temps de mise en disponibilité et les dates promises sont égales à 0; • MS donne la solution optimale quand les dates promises ne sont pas très serrées et bien distribuées sur l’intervalle de travail. • Règle ATC (Apparent Tardiness Cost - Coût de la tardiveté apparente) combine les règles suivantes : WSPT et MS - marge minimale, où la marge est donnée par max (dj – pj – t , 0). • Principe : commandes sont ordonnancées une à la fois selon l’indice Ij plus grand parmi les commandes restantes (à chaque fois que la machine est libre, Ij est calculé pour les commandes restantes et la commande avec Ij plus grand est sélectionnée à la prochaine étape).
Où : Kest le paramètre d’échelle. est le temps d’opération moyen des commandes non traitées. Si K est grand alorsATC = WSPT Si K est petit et il n’y a pas de commandes en retard alorsATC = MS. Si K est petit et il y a des commandes en retard alors ATC = WSPTest appliquée aux commandes en retard. Si K est grand alors exp() 1. exp() = 0 pour les commandes avec des marges. Si une commande est en retard alors ATC= wj/pj car exp()=1. 3.3. Règle de priorité composée : Règle ATC
3.3. Règle de priorité composée : Règle ATC (suite) • La valeur de K est déterminée par analyse statistique sur des données historiques ou par simulation. • On utilise souvent les statistiques suivantes pour fixer K : • Facteur d’étroitesse des dates promises • Étendue des dates promises R • K sera une fonction de et de R.
3.3. ATC généralisé : Règle composée avec des temps de changement dépendant de la séquence (ATCS) Description du type de problème: • n commandes; • Une machine; • Temps de changement sjk si la commande k est effectuée après la commande j; • La règle ATCS combine les règles WSPT, MS, SST; • La priorité associée à la commande j à la fin de la commande l est: • où: • est le temps de set-up moyen. • K1 est le paramètre d’échelle associé à la date promise. • K2 est le paramètre d’échelle associé au set-up.
3.3. ATC généralisé: ATCS (suite) • Les paramètres K1 et K2 sont fonction de 3 facteurs: • Facteur d’étroitesse des dates promise . • Étendue des dates promises R. • La sévérité des temps de changements: • On peut approximer Cmax par la formule suivante pour le cas d ’une machine (m=1) : • Remarque : Cette formule aura tendance à surestimer Cmax. • Les valeurs de K1 et K2 suggérées par analyse statistique et simulation:
3.3. Exemple 3.3.1: ATCS • Voir p. 35 (séance de laboratoire).
3.4. Énumération Implicite (Branch and Bound) • La solution de tout problème d’ordonnancement peut être trouvée à l’aide d’une énumération complète de l’ensemble des solutions possibles. • L’énumération peut être effectuée sur un arbre. • L’énumération implicite utilise des bornes pour faire une énumération intelligente . • Les bornes sont utilisées pour éliminer des branches de la solution.
3.4. Énumération Implicite (Branch and Bound) • Considérons le problème d’une machine avec : • des temps de mise en disponibilité; • des dates promises; • On veut min le retard maximal. • Problème difficile mais peut être résolu par l’énumération implicite. • L’arbre de l’énumération à n+1 niveaux : • Le nœud 0 est le début (niveau 0). Aucune commande n’est ordonnancée. • Il y a n branches qui émanent du nœud 0; • Donc, n nœuds au niveau 1: • Chaque nœud correspond à une séquence partielle avec une commande spécifique en première position. • (n -1) arcs qui émanent de chaque nœud du niveau 1: • Donc, n(n-1) nœuds au niveau 2. • Les deux premières positions sont spécifiées. • Au niveau k, les k premières positions sont spécifiées.
3.4. Énumération Implicite : Exemple d’énumération implicite • Observations : • Il n’est pas nécessaire de considérer toutes les commandes disponibles à un niveau. • Au niveau k-1, les commandes j1, …, jk-1 ont été séquencées . • La commande c ne sera pas considérée pour la position k seulement si : • où J est l’ensemble des commandes disponibles au temps t. • Borne inférieure: EDD avec préemption.
3.4. Énumération Implicite : Exemple d’énumération implicite • Exemple 3.4.1 • La borne inférieure est obtenue en utilisant EDD avec préemption sur une machine: • Appliquer la règle EDD à chaque fois qu’une commande devient disponible; • Préempter la commande courante si les priorités changent; • Modifier le temps d’opération de la commande préemptée.
4.5 Recherche en Faiseau (Beam Search) • Très similaire à l’énumération implicite. • Cependant, seuls les nœuds ‘intéressants’ ou prometteurs sont explorés. • Comment déterminer les nœuds prometteurs? • En évaluant le potentiel d’un nœud. • L’évaluation d’un nœud peut prendre beaucoup de temps; • Deux niveaux de filtre à chaque niveau de l’arbre. • Un premier filtre qui va rapidement sélectionner un certain nombre de nœuds à considérer au niveau k de l’arbre. • Le nombre de nœuds sélectionner est fixé par la ‘largeur du filtre’. • Exemple de procédure rapide: • La contribution à la fonction objectif de l’ordonnancement partiel. • Les nœuds ainsi sélectionnés sont explorés plus en détails et seulement un certain nombre est retenu. • Ce nombre est donné par la largeur du ‘faisceau’. • Exemple de procédure d’exploration: • Applique une règle de priorité composée. • Ne garantit pas la solution optimale. • Mais permet de trouver une bonne solution très rapidement. • Voir exemple 3.5.1 - p. 40
3.6. Algorithmes d’amélioration • Recherche de type locale : • Recuit simulé (Simulated Annealing) • Recherche Tabou (Tabu search) • Algorithme Génétique • Ces méthodes nécessitent une solution de départ. • À chaque itération, des solutions dans le voisinage de la solution actuelle sont explorées. • Comment construire des solutions voisines? • À l’aide d’une procédure qui définit clairement la transformation d’une solution à une autre : • S -> S’ • Exemple: échange des commandes adjacentes dans une séquence.
Supposons que S0 est la meilleure solution à date avec un coût de G(S0 ); Sk: la solution à l’itération k; Les solutions dans le voisinage de Sk sont explorées; Soit Sc une solution dans le voisinage de Sk Si G(Sc) G(Sk) alors Sk+1 = Sc; De plus si G(Sc) G(S0) alors S0 = Sc; Mais, si G(Sc) > G(Sk) alors Sk+1 = Sc avec une probabilité donnée par P(Sk, Sc) où: On a: Et βk = ak où 0 < a < 1 Voir algorithme 3.6.1-page 45. 3.6.1 Algorithmes d’amélioration: Recuit Simulé
3.6.2 Algorithmes d’amélioration: Recherche Tabou • Similaire au recuit simulé. • Principales différences : • Dans la méthode d’acceptation d’un candidat • Recuit simulé – probabiliste. • Tabou – déterministe. • À chaque itération, une liste d’échanges tabous est conservée. • Longueur de la liste – entre 5 et 9. • Cette liste contient les mutations inverses. • À chaque fois qu’une mutation est effectuée pour construire un nouvel ordonnancement dans le voisinage d’une solution, la mutation inverse est gardée dans la liste. • Cette mutation est défendue tant et aussi longtemps qu’elle reste dans la liste. • Voir algorithme 3.6.2 - p. 46 et exemple 3.6.2 - p. 46-47
3.7 Algorithme Génétique • Voir algorithme 3.7.1 - p .48-49
3.8. Discussion : Procédure générale Étape 1: • Calculer différentes statistiques telles que • Le facteur d’étroitesse des dates promises; • L’étendue des dates promises; • Etc. Étape 2 : • Déterminer les paramètres de lissage basés sur les résultats de l’étape 1 et appliquer une règle composée pour trouver une solution initiale. Étape 3: • Appliquer une méthode d’amélioration locale.