Chapitre 3 Résolution heuristique du problème flow
Transcription
Chapitre 3 Résolution heuristique du problème flow
Chapitre 3 Résolution heuristique du problème flow-shop avec contrainte no-idle Il est connu qu’une méthode de séparation et d'évaluation a l’inconvénient d’être exponentielle lorsque le nombre des données augmente. Pour cela, il est important de trouver des solutions approchées pour le problème étudié. Nous nous proposons, dans ce chapitre, d’étudier une première heuristique en O(n*log(n)) pour le cas d’un flow-shop de permutation à trois machines, puis une deuxième heuristique en O(n3) pour le cas plus général d’un nombre quelconque de machines. Nous situerons les performances de ces heuristiques par rapport à celles de l’algorithme de type séparation et évaluation tel que complété au chapitre précédent ainsi que par rapport aux résultats d’un solveur de programmation entière mixte (Lingo). A la fin du chapitre, nous étudierons une troisième heuristique pour le cas d’un flow-shop hybride à trois étages. Nous verrons de façon évidente, d’après ce qui va suivre, que de tout ordonnancement possible on peut déduire directement un ordonnancement no-idle. Cependant, l’ordre des travaux dans la solution optimale du problème F // C max n’est généralement pas celui d’une solution optimale pour le problème F / no − idle / C max et inversement. Ces deux problèmes sont de fait différents. 1. Heuristique pour la résolution du problème F 3 / no − idle / C max Rappelons que Baptiste et Hguny ont prouvé que le problème F 3 / no − idle / C max est un problème NP-difficile [Baptiste et Hguny, 1997]. Pour le cas de deux machines, la résolution est similaire à la résolution du problème F 2 // C max qui est obtenue en ordonnant les travaux suivant Johnson (une fois l'ordre de Johnson arrêté, on décale vers la droite les travaux ordonnancés sur la deuxième machine jusqu'à ce que tous les temps morts soient éliminés ; ce décalage n’augmente pas le C max ). 75 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle Ainsi, l’ordre des travaux dans la solution optimale du problème F 2 // C max reste valable pour la solution du problème F 2 / no − idle / C max . Mais il suffit de voir sur l’exemple 3.1 que cela n’est pas vrai à partir de n = 3. Exemple 3.1. Soient les durées d’exécution d’un problème d’ordonnancement de type flowshop présentées par la table 3.1. M1 M2 M3 J1 12 6 16 J2 14 19 11 J3 13 18 14 J4 10 12 12 J5 14 6 17 Table 3.1. Durées d’exécution d’un problème flow-shop La résolution du problème F // C max donne comme solution l’ordre J1, J4, J3, J5, J2 avec un C max égal à 95. La suppression des temps d’arrêt pour respecter la contrainte no-idle donne un C max égal à 99. Cependant, la résolution directe du problème F / no − idle / C max donne comme solution l’ordre J5, J4, J3, J1, J2 avec un C max égal à 98 ; le même ordre sans respecter la contrainte no-idle donne un C max égal à 96. Cela dit, du fait que l’ordre de Johnson fournit un ordonnancement optimal dans le cas de deux machines, nous sommes tentés de construire des solutions approchées pour le cas de trois machines en partant d’un ordre de Johnson sur deux des trois machines, d’où l’heuristique suivante. 1.1. Heuristique Soit C max( M 2, M 3) le makespan obtenu pour un ordonnancement des travaux opérés uniquement sur M2 et M3. Sur la machine M2, il n’y a aucun temps mort. Sur la machine M3, les temps morts peuvent être supprimés par tassement à droite des travaux sur cette machine et ceci sans avoir à modifier le C max( M 2, M 3) . Le placement des travaux dans cet ordre sur la machine M1 amène à un décalage global des travaux sur M2 et, par conséquent, un même décalage des travaux sur la machine M3. La valeur de ce décalage est égale au maximum des intervalles Ci , M 1 − Si , M 2 pour i = 1…n. Le 76 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle C max d’un ordonnancement de ces travaux sur M1, M2 et M3 avec la contrainte no-idle est égal à la somme de C max( M 2, M 3) , la durée opératoire du premier travail sur la première machine (M1) et le plus grand décalage des différents décalages des travaux à droite nécessaires pour vérifier la contrainte no-idle sur M2. Nous avons alors la formule suivante : C max = C max( M 2 , M 3) + p1, M 1 + max (0, Ci , M 1 − Si , M 2) i = 2.. n où p1, M 1 est la durée opératoire du travail J1 sur la machine M1, Ci,Mj la date d’achèvement du travail Ji sur la machine Mj et Si,Mj la date d’achèvement du travail Ji sur la machine Mj Exemple 3.2. Considérons le cas de trois machines et cinq travaux de la table 3.2. M1 M2 M3 J1 2 2 2 J2 3 3 4 J3 6 4 4 J4 3 9 11 J5 7 3 4 Table 3.2. Durées d’exécution d’un problème flow-shop La figure 3.1 illustre un ordonnancement possible no-idle sur les machines M2 et M3. M2 M3 J1 J2 5 J3 J4 15 10 J5 20 25 30 35 Figure 3.1. Ordonnancement no-idle sur M2 et M3 L’introduction de l’ordonnancement sur M1 conduit à un premier décalage sur M2 et M3 d’une valeur égale à p1, M 1 (voir figure 3.2) M1 M2 M3 J1 5 10 J2 J3 15 J4 20 J5 25 30 35 Figure 3.2. Introduction de l’ordonnancement sur M1 77 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle L’ordonnancement no-idle final est obtenu en opérant un deuxième décalage global sur M2 et M3 d’une valeur égale à max (0, Ci , M 1 − Si , M 2) (voir figure 3.3). i = 2.. n M1 M2 M3 J1 5 10 J2 15 J3 J4 20 25 J5 30 35 Figure 3.3. Travaux ordonnés sans temps mort sur les trois machines Un ordonnancement no-idle optimal est un ordonnancement qui minimise la formule du makespan présentée ci-dessus. Nous remarquons, ici, que l’ordre qui minimise le premier terme C max( M 2, M 3) détermine la valeur du deuxième terme max (0, Ci , M 1 − Si , M 2) . i = 2.. n Réciproquement, l’ordre qui minimise le deuxième terme détermine la valeur du premier terme. Alors que l’ordre optimal n’est peut être ni l’un ni l’autre. Cependant, si la minimisation du premier terme peut être obtenue facilement en adoptant l’ordre de Johnson, la minimisation du second terme est beaucoup moins évidente, d’où l’heuristique (H) que nous avons choisi de développer qui consiste à procéder à la minimisation sur le premier terme. Dans le même esprit de l’heuristique proposée, nous pouvons commencer par procéder à un ordonnancement de Johnson sur les machines M1 et M2 et répercuter le même ordre pour l’ordonnancement sur la machine M3. Nous adoptons, en définitive, d’élaborer les deux solutions et de retenir celle qui donne le plus petit C max global. La complexité de cette heuristique est égale à la complexité de la solution de Johnson c’est-à-dire O(n*log(n)). L'implantation de la règle de Johnson est facile car elle se base sur des règles classiques (SPT et LPT). Une procédure classique déterminant l'ordre de Johnson, consiste à diviser l'ensemble des travaux en deux sous-ensembles selon les durées opératoires. Le premier ensemble (noté S1) contient les travaux ayant une durée opératoire sur la première machine (noté A[i]) plus petite que celle sur la seconde machine (noté B[i]). Le second sous-ensemble (noté S2) contient les travaux ayant une durée opératoire sur la première machine plus grande ou égale que celle sur la seconde machine. Les travaux de S1 doivent être ordonnés dans l'ordre croissant de leurs durées opératoires sur la première machine (règle SPT). Les travaux de S2 doivent être ordonnés dans l'ordre décroissant de leurs durées opératoires sur la deuxième machine (règle LPT). Ensuite, l'ordre de Johnson est obtenu en concaténant les travaux 78 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle ordonnés de S2 après ceux ordonnés de S1. Un tel calcul peut même se faire avec Microsoft Excel sans aucune difficulté. Le résultat de cette procédure peut être intégré dans un progiciel d'ordonnancement tel que INCOPLAN [INCOTEC, 1999] en modélisant les durées opératoires des travaux de S1 et les différences des travaux de S2 par des dates de livraison et en utilisant la règle EDD (Earliest Due Date c’est-à-dire dans l'ordre croissant des dates de livraison) pour lancer les travaux sur la première machine. L'ordre de lancement sur la deuxième machine est le même. Nous avons aussi considéré le problème miroir, c’est-à-dire le problème où les travaux sont exécutés d'abord sur la troisième machine, ensuite sur la deuxième machine et en dernier lieu sur la première. Dans [Pinedo, 1995], l’auteur prouve que le makespan du problème miroir est égal au makespan du problème initial donc la valeur de la solution du problème no-idle ne change pas si nous considérons les mêmes machines (M2 et M3). 1.2. Expérimentations Nous proposons de comparer les résultats de cette heuristique par rapport à : - une borne inférieure - aux résultats fournis par un solveur de programmation mixte, en l’occurrence Lingo [LINDO, 1999]. 1.2.1. Comparaison par rapport à une borne inférieure 1.2.1.1. Borne inférieure Nous retenons la borne inférieure obtenue par application directe du résultat de la propriété 2.1 définie par Baptiste et Hguny (paragraphe §1.1, chapitre 2) pour le cas n = 3. Rappel. Un minorant de tout ordre no-idle sur m machines peut être obtenu par la formule : LB = m −1 ∑ C j , j +1 ( JO{ j , j +1}) − j =1 m −1 n ∑∑ p i, j j = 2 i =1 Pour le cas n = 3, la formule devient : LB = 2 ∑ C j , j +1 ( JO{ j , j +1}) − j =1 2 n ∑∑ p j = 2 i =1 79 i, j Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle 1.2.1.2. Résultats des expérimentations Pour m fixé à 3, nous avons effectué des expérimentations pour 20 configurations en faisant évoluer n par pas de 5 (n = 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100). Pour chaque configuration, nous utilisons le logiciel Locho pour générer les durées opératoires sur chacune des machines (M1, M2 et M3) selon une loi log normal. Les durées opératoires sont entières et générées avec une moyenne égale à 12 et un écart type égal à 4. Nous itérons ensuite cette évaluation pour 32 tests, ce qui donne un nombre total de 640 tests. Nous calculons ensuite, toujours pour une même configuration : - PMin : égal à min (( Hi − LBi ) / LBi ) , où Hi et LBi sont, respectivement, les valeurs i =1..32 obtenues par l’heuristique H et la formule LB pour le ième test ; soit PMin égal au minimum des écarts entre la solution donnée par l’heuristique H et la borne inférieure, divisés par la borne inférieure correspondante. - PMax : égal à max (( Hi − LBi ) / LBi ) , soit PMax égal au maximum des écarts entre la i =1..32 solution donnée par l’heuristique H et la borne inférieure, divisés par la borne inférieure correspondante. - PMoy : égal à moy (( Hi − LBi ) / LBi ) , soit PMoy égal à la moyenne des écarts entre la i =1..32 solution donnée par l’heuristique H et la borne inférieure, divisés par la borne inférieure correspondante. Les résultats sont illustrés dans la table 3.3. n PMin. PMax. PMoy. 5 0,0000 0,2396 0,0907 10 0,0142 0,2372 0,1062 15 0,0180 0,1958 0,1085 20 0,0000 0,1780 0,0920 25 0,0198 0,1459 0,0920 30 0,0274 0,1514 0,0951 35 0,0155 0,2027 0,0943 40 0,0056 0,1719 0,0886 45 0,0099 0,1564 0,0947 50 0,0194 0,1528 0,0875 55 0,0272 0,1597 0,1034 80 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle 60 0,0123 0,1459 0,0950 65 0,0233 0,1481 0,0907 70 0,0373 0,1632 0,0993 75 0,0214 0,1398 0,0936 80 0,0501 0,1265 0,0923 85 0,0509 0,1657 0,1033 90 0,0215 0,1439 0,0993 95 0,0582 0,1473 0,1003 99(*) 0,0236 0,1480 0,0959 Moyenne 0,0228 0,1660 0,0961 Table 3.3. Comparaison par rapport à la borne inférieure (*) La valeur maximale admise par le logiciel Locho est 99. Nous notons que : - le pourcentage des écarts minimums est inférieur à 6% (5,82% pour n égal à 95 et moins de 3% pour 16 configurations sur 20). Il est en moyenne de 2,28%. - le pourcentage des écarts maximums est inférieur à 24% (23,96% pour n égal à 5 et entre 14% et 18% pour 14 configurations sur 20). Il est en moyenne de 16,6%. - le pourcentage des écarts moyens est au voisinage de 9,61%. Par ailleurs, pour chaque n nous avons calculé le pourcentage du nombre de tests sur 32 dont la valeur de (Hi-LBi)/LBi est inférieure à 0,1. La figure 3.4 montre que l'évolution de ce 95 85 75 65 55 45 35 25 5 80,00% 70,00% 60,00% 50,00% 40,00% 30,00% 20,00% 10,00% 0,00% 15 Pourcentage des cas où le rapport est inférieur à 0,1 pourcentage suivant le nombre de travaux est non linéaire et varie entre 43,75% et 68,75%. Nombre de travaux Figure 3.4. Variation du nombre de cas bons en fonction du nombre de travaux 81 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle 1.2.2. Comparaison avec les résultats trouvés par Lingo 1.2.2.1. Modèle mathématique Paramètres du problème n : nombre de travaux à exécuter, m: nombre de machines, P = { pi , r } : durée opératoire du travail Ji sur la machine Mr (matrice n × m). Variables de décision Z = { Zi , j } : matrice binaire, Zi , j = 1 si le travail Ji est à la position j dans la séquence de travaux, 0 sinon. Pour toute solution, il y a uniquement n variables dont la valeur est égale à un. C = { Cj , r } : date d'achèvement du travail à la jème position dans la séquence de travaux sur la machine Mr. Contraintes n ∑ Z =1 i, j (i = 1, ..., n) (5) ∑ Z =1 (j = 1, ..., n) (6) j =1 n i, j i =1 n Cj , r + ∑ ( pi , r * Zi , j + 1) = Cj + 1, r (r = 1, ..., m; j = 1, ..., n - 1) (7) i =1 n C j , r + ∑ ( pi , r + 1 * Z i , j ) ≤ C j , r + 1 (r = 1, ..., m - 1; j = 1, ..., n) (8) i =1 n ∑(p *Z ) = C i ,1 i ,1 (9) 1,1 i =1 Fonction objective C max = Cn , m (10) min(C max) (11) Commentaires La fonction objectif (11) et l'équation (10) expriment l'objectif à atteindre qui est la minimisation de la plus grande date d'achèvement. Les contraintes (5) assurent que chaque travail doit être affecté à une seule position dans la séquence. Les contraintes (6) spécifient 82 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle qu'à chaque position est affecté un et un seul travail. Les contraintes (7) assurent que la date d'achèvement du travail à la position j+1 sur la machine Mr est égale à la somme de la date d'achèvement du travail à la position j sur la machine Mr et de la durée opératoire du travail à la position j+1 sur la machine Mr. Aucun temps mort n’est autorisé sur une machine durant son travail. Les contraintes (8) montrent que la date d'achèvement du travail à la position j sur la machine Mr+1 est au moins égale à la somme de la date d'achèvement du travail à la position j sur la machine Mr et de la durée opératoire du travail à la position j sur la machine Mr+1. La contrainte (9) spécifie que la date d'achèvement du premier travail sur la première machine est égale à sa durée opératoire sur cette dernière. Ce modèle représente le problème flow-shop de permutation F / no − idle / C max avec m machines. Cependant, nous traitons dans ce paragraphe le cas de trois machines qui sera obtenu en fixant m à trois. 1.2.2.2. Evaluation et comparaison Le modèle mathématique ainsi défini a été implanté avec Lingo. Pour m fixé à 3, nous avons étudié 12 configurations de n en faisant évoluer n par pas de 2 (n = 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26). Nous avons là aussi utilisé le logiciel Locho pour générer les durées opératoires des travaux sur chacune des machines, (M1, M2, M3) selon une loi log normale de moyenne 12 et d’écart type 4. Pour chaque configuration de n, 32 tests sont générés. Au total, 384 tests sont exécutés sur des machines avec microprocesseur Pentium III 733 Mhz, avec 64 Méga octets de RAM et 10 Giga octets de disque dur. Les résultats de Lingo sont donnés dans la table 3.4. Pour chaque configuration, nous définissons : - PMin : min (( Hi − LGi ) / LGi ) où Hi et LGi sont, respectivement, les valeurs des i =1..32 C max obtenus par l’heuristique H et la résolution Lingo pour le ième test ; ainsi PMin est le minimum des écarts entre la solution donnée par l’heuristique H et la résolution Lingo, divisés par la résolution Lingo correspondante. - PMax : max (( Hi − LGi ) / LGi ) , PMax est le maximum des écarts entre la solution i =1..32 donnée par l’heuristique H et la résolution Lingo, divisés par la résolution Lingo correspondante. 83 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle - PMoy : moy (( Hi − LGi ) / LGi ) , PMoy est la moyenne des écarts entre la solution i =1..32 donnée par l’heuristique H et la résolution Lingo, divisés par la résolution Lingo correspondante. Nous avons également rapporté dans cette table, pour chaque valeur de n, le pourcentage des cas où le résultat obtenu par l’heuristique H et celui obtenu par Lingo sont identiques, ainsi que le pourcentage des cas où le rapport (Hi-LGi)/LGi est inférieur à 0,1. n PMin. PMax. PMoy. Pourcentage des cas Pourcentage des cas où où Hi=LGi 0 < (Hi-LGi)/LGi ≤ 0,1 4 0 0,1093 0,0402 9,38% 87,50% 6 0 0,1458 0,0597 15,63% 59,38% 8 0 0,1584 0,0749 12,50% 62,50% 10 0 0,1437 0,0716 6,25% 68,75% 12 0,0246 0,1548 0,0904 0,00% 59,38% 14 0,0129 0,1637 0,0918 0,00% 53,13% 16 0,0041 0,1469 0,0737 0,00% 87,50% 18 0,0201 0,1607 0,0815 0,00% 71,88% 20 0,0148 0,1619 0,0832 0,00% 62,50% 22 0,0030 0,1584 0,0732 0,00% 75,00% 24 0,0223 0,1845 0,0895 0,00% 62,50% 26 0,0081 0,1826 0,0837 0,00% 65,63% Moyenne 0,0091 0,1558 0,0761 3,64% 69,97% Table 3.4. Comparaison par rapport aux résultats trouvés par Lingo De la table 3.4, nous pouvons noter que : - l'évolution des minimums des rapports ne dépasse pas 2,5%, - les maximums varient entre 10,93% et 18,45%, - le pourcentage des rapports moyens est inférieur à 6% pour n = 4 et n = 6 et au voisinage de 7,61% pour un nombre de travaux plus grand, - le nombre de cas où H trouve l’optimum n’est pas grand mais le pourcentage de cas où le taux d’erreur est inférieur à 0,1 est en moyenne égal à 69,97%. 84 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle Pour résoudre le système des équations (paragraphe 1.2.2.1), Lingo utilise sa procédure de séparation et d'évaluation tenant compte du fait que notre modèle comprend des variables entières (voir annexe). Nous nous sommes limités à un maximum de n égal à 26 car, pour un nombre de travaux plus grand, Lingo est incapable d’aboutir à une solution quelle qu’elle soit, du fait que le nombre de variables entières devient très grand (Lingo traite au maximum 4000 contraintes et 800 variables et, pour n égal à 28, cette configuration est de 196 contraintes et 868 variables). Il importe, aussi, de souligner que la résolution par Lingo nécessite souvent un temps d’exécution relativement long (plusieurs heures, voire des jours) et, ce faisant, Lingo évolue en optimisant la valeur de la solution jusqu’à s’arrêter sur la valeur optimum. Pour un certain nombre de tests, nous avons dû arrêter l’exécution avant terme (après 14 heures si le solveur n'avait pas atteint la solution optimale avant). Nous n’avons pas évalué avec précision le temps d’exécution de notre heuristique, mais il est généralement de l’ordre de la seconde et est, donc, sans aucune comparaison avec celui de Lingo. A titre indicatif, la table 3.5 présente, pour chaque configuration de n, l’espace mémoire que Lingo nécessite, le nombre de solutions optimales (sur 32 tests) trouvées avant d’atteindre une durée d’exécution de 14 heures, le nombre de contraintes et le nombre de variables générées. n Espace Nombre de solutions Nombre de Nombre de mémoire optimales trouvées contraintes variables 4 14K 32 27 28 6 20K 32 41 54 8 27K 32 55 88 10 36K 32 69 130 12 46K 31 83 180 14 59K 30 97 238 16 73K 27 111 304 18 86K 25 125 378 20 102K 26 139 460 22 120K 26 153 550 24 139K 23 167 648 26 159K 24 181 754 Table 3.5. Récapitulatif sur l’état du travail avec Lingo 85 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle 1.2.2.3. Efficacité de la borne inférieure Pour évaluer l'efficacité de la borne inférieure déjà définie, nous avons généré pour chaque valeur de n (nombre de travaux) variant de 4 à 26, 20 tests pour les quels Lingo est capable de donner la solution optimale. Par la suite, nous avons comparé la solution optimale à la borne inférieure. La figure 3.5 présente l'évolution du maximum, du minimum et de la moyenne du rapport (|LBi-LGi|)*100/LGi pour toutes les configurations (LBi et LGi sont, respectivement, les valeurs obtenues par la borne inférieure LB et la résolution Lingo pour le ième test). Pour de nombreux cas, Lingo fournit des valeurs identiques sinon très proches de la borne inférieure ; d’où le rapport nul. Quant à la moyenne de ce rapport, elle varie entre 2,7% et 0,56%. Cette moyenne décroît quand n augmente ; ceci signifie que la borne inférieure devient de plus en plus proche de l’optimal lorsque n devient grand. 10,00% 9,00% 8,00% (|LB-LG|)*100/LG 7,00% 6,00% min 5,00% max 4,00% moy 3,00% 2,00% 1,00% 0,00% 4 6 8 10 12 14 16 18 20 22 24 26 Nombre de travaux Figure 3.5. Comparaison entre la borne inférieure et les résultats de Lingo Nous avons également programmé l’algorithme de type séparation et évaluation de Baptiste et Hguny et constaté que les valeurs obtenues se conforment avec celles fournies par Lingo. Pour un nombre n de travaux plus grand que 26, nous avons comparé les valeurs de la borne inférieure (LB) aux résultats trouvés par l’algorithme de type séparation et évaluation (BB). Dans le cas de trois machines, nous nous sommes limités à 60 travaux (voir figure 3.6). Nous avons fait alors varier le nombre de travaux de 30 à 60 avec un pas égal à 5 et, pour chaque configuration, nous avons générés 32 tests selon la même loi. La variation de la courbe de la moyenne (moy) confirme les résultats trouvés avec Lingo où le taux d’erreur est inférieur à 2%. Pour la courbe min, nous avons toujours des cas où la borne inférieure est égale à la solution exacte. 86 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle 4,00% (LB-BB)*100/BB 3,50% 3,00% 2,50% min 2,00% max 1,50% moy 1,00% 0,50% 0,00% 30 35 40 45 50 60 Nombre de travaux Figure 3.6. Comparaison entre la borne inférieure et les résultats de l’algorithme de type séparation et évaluation Dans cette section, nous nous sommes investis dans le problème F 3 / no − idle / C max . Nous avons alors, proposé une heuristique basée sur la règle de Johnson et de complexité en O(n*log(n)). Une borne inférieure a été définie pour évaluer l'efficacité de cette solution. Nous avons résolu un modèle mathématique proposé à l’aide d’un solveur de programmation mixte. Ce dernier est limité à la résolution du problème dont le nombre de travaux est égal à 26 [Saadani et al., 2003c]. 2. Résolution du problème dans le cadre général Nous proposons maintenant une heuristique plus générale s’appliquant au problème flowshop de permutation pour tout nombre de travaux n et tout nombre de machines m avec contrainte no-idle et critère C max . Cette heuristique se base sur une modélisation du problème flow-shop en un problème du voyageur de commerce. Nous situerons les résultats de cette heuristique par rapport aux optimums calculés soit par une procédure d’énumération, soit par le logiciel Lingo, soit par l’algorithme de type séparation et évaluation de Baptiste et Hguny. Nous ferons aussi une étude comparative avec l’heuristique H présentée pour le cas de trois machines. 2.1. Problème du voyageur de commerce 2.1.1. Présentation du problème Considérons un graphe orienté G = ( X , U ) , où X désigne l'ensemble des sommets du graphe et U l'ensemble des arcs valués reliant les sommets du graphe. Un circuit hamiltonien dans le graphe G est un circuit passant une fois et une fois seulement par chaque sommet du graphe 87 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle G. En prenant en compte le poids associé à chaque arc, la valeur d'un circuit hamiltonien est égale à la somme des poids des arcs qui le composent. Le problème bien connu du voyageur de commerce stipule que celui-ci doit rendre visite à n clients répartis sur n villes x1, x2,…, xn, en partant d'une autre ville x0 et en revenant à celle-ci selon un circuit qui passe une et une seule fois par chacune des n villes. Etant donnés, d’une part, un graphe G = ( X , U ) où X est l'ensemble des clients (i.e. villes) et U est l’ensemble des arcs représentant les chemins entre villes et, d’autre part, une matrice des distances (Di,j) représentant les longueurs des chemins, le problème du voyageur de commerce (TSP) revient à rechercher un circuit hamiltonien de longueur totale minimale dans le graphe G. Lorsque la matrice des distances est symétrique, le problème est dit problème du voyageur de commerce symétrique, sinon il est dit asymétrique (ATSP). Le problème du voyageur de commerce est dit généralisé (GTSP) si le voyageur doit passer par un nombre prédéfini de sous-ensembles de villes. Il doit visiter au moins une ville de chaque sous-ensemble et minimiser la somme des coûts du voyage. Ce problème combinatoire est un problème que l'on rencontre fréquemment dans l'industrie dans la mesure où il représente des problèmes d'ordonnancement, de planification et d'organisation de la production ainsi que des problèmes de transport. Dans ce qui suit, nous examinerons les principaux outils élaborés pour résoudre ce problème. Le problème du voyageur de commerce a été introduit simultanément par Srivastava et al. [Srivastava et al., 1969] qui se sont intéressés à la version symétrique et ont proposé une approche de programmation dynamique et par Henry-Labordere [Henry-Labordere, 1969] qui s’est intéressé au cas asymétrique. Plus tard, Laporte et Nobert [Laporte et Nobert, 1983] [Laporte et al., 1987] ont formulé les deux problèmes (symétrique et asymétrique) en un programme entier et un algorithme de type séparation et évaluation pour les résoudre. 2.1.2. Algorithmes exacts de résolution Ces algorithmes garantissent de trouver une solution optimale en un nombre d’étapes borné. Les algorithmes les plus efficaces sont de type "plan de coupe" et "recherche de facettes" [Padberg et Rinaldi, 1991] [Applegate et al., 1991]. Ils sont complexes (plus les 10000 lignes de code) et nécessitent que la machine soit très performante. Par exemple, on demande entre 3 et 4 ans de temps CPU dans un grand réseau de machines pour déterminer une solution exacte 88 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle d’un problème à 7397 villes. Les algorithmes les plus répandus sont les algorithmes d’exploration de type séparation et évaluation. Dans [Fischetti et al., 1994], Fischetti et al. proposent un algorithme de type séparation et évaluation pour résoudre ce problème optimalement lorsqu’il est symétrique. Dans [Lysgaard, 1999], un autre algorithme de ce type est proposé pour un problème du voyageur de commerce asymétrique basé sur les clusters. Un cluster est un ensemble de nœuds avec la caractéristique qu’il existe une solution optimale pour laquelle les nœuds de cet ensemble sont visités consécutivement. Il s’agit donc d’identifier les clusters puis de déterminer un chemin optimal entre les clusters. Une caractéristique des algorithmes de type séparation et évaluation présentés dans la littérature pour le problème ATSP est qu’un problème d’affectation linéaire est utilisé pour établir les bornes inférieures de la solution optimale du ATSP (par exemple [Carpaneto et Toth, 1980]). Un bon nombre d’approches ont déterminé une borne par rapport au problème d’affectation linéaire relaxé ([Fischetti et Toth, 1989]). D’importantes contributions dans ce cadre sont faites, telles que la routine de contraction-compression d’un sous-circuit par Christofides [Christofides, 1972], l’approche Lagrangienne restreinte de Balas [Balas et Christofides, 1981] et la procédure de borne additive de Fischetti [Fischetti et Toth, 1992]. Cependant, deux schémas d’élimination de sous-circuits ont dominé la littérature, celui de Bellmore [Bellmore et Malone, 1971] et celui de Garfinkel [Garfinkel, 1973]. Ces schémas sont basés sur la configuration d’un sous-circuit dans la solution d’un problème d’affectation linéaire. Pour résoudre le problème du voyageur de commerce, on trouve aussi les algorithmes de coupes utilisés lorsque le nombre de contraintes s'avère raisonnable. A ce niveau, on raisonne bien souvent sur un programme relaxé, c'est-à-dire ne comprenant qu'une partie de l'ensemble des contraintes et on intègre le reste des contraintes à la solution optimale, lorsque celle-ci ne donne pas le circuit hamiltonien recherché [Gomory, 1958], [Faure, 1978], [Gondran et Minoux, 1979] et Little [Little et al., 1963]. 2.1.3. Algorithmes approximatifs La classe des algorithmes approximatifs peut être divisée en trois sous-classes : 89 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle - les algorithmes de construction des circuits : on construit progressivement le circuit en ajoutant à chaque étape une ville. Parmi les algorithmes de construction de circuit on trouve les méthodes d’insertion [Golden et al., 1980] et [Christofides, 1976], ou les méthodes du plus proche voisin. Ces algorithmes sont rapides ; toutefois les solutions ne sont pas généralement de bonne qualité. - les algorithmes d’amélioration de circuit : à partir d’un circuit donné (arbitraire), on essaye d’apporter des modifications sur les arcs (suppression et ajout) dans le but de rechercher une meilleure solution dans le voisinage ; par exemple, 2-opt alg (en partant d’un circuit, remplacer deux liens dans le circuit par deux autres de telle manière que la longueur du nouveau circuit soit plus courte, continuer jusqu’à ce qu’il n’y ait plus d’amélioration). Une généralisation de cette idée pour les problèmes TSP symétriques est l’algorithme de Lin-Kernighan [Lin et Kernighan, 1973], qui fait partie de la classe des algorithmes d’optimisation locale [Johnson, 1990] [Johnson et McGeoch, 1997]. Ce travail a été modifié par Mak et Morton [Mak et Morton, 1993] et implanté par Helsgaun [Helsgaun, 2000]. L’inconvénient de tels algorithmes est le risque de tomber sur un optimum local, - les algorithmes composites : un algorithme est dit composite s’il combine les deux types précédents. Ces algorithmes donnent de bons résultats si on a une bonne solution de départ. Il existe une multitude d'heuristiques permettant de résoudre, avec plus au moins de succès, le problème du voyageur de commerce. Le plus souvent ces heuristiques adaptent l’une des techniques suivantes : Technique du plus proche voisin X étant l’ensemble des nœuds, on choisit aléatoirement un sommet de départ x ∈ X. On construit progressivement une chaîne en joignant, à chaque pas, un nouveau sommet x' ∈X (le plus proche), à l’une des deux extrémités de la chaîne. On poursuit la procédure d'adjonction jusqu'à ce que la chaîne comporte tous les sommets. Enfin, on joint les deux sommets opposés de la chaîne et on obtient un circuit hamiltonien. Technique de la plus proche insertion On choisit un circuit hamiltonien d'un sous-graphe de G . 90 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle On insère dans ce circuit le sommet x ∈ X le plus proche du périmètre délimité par les sommets du circuit, n'appartenant pas au circuit. On répète la procédure d'insertion jusqu'à ce que le circuit comporte tous les sommets. Technique n-optimale de Lin La technique de Lin [Lin et Kernighan, 1973] part d’un circuit hamiltonien de valeur quelconque construit en utilisant, par exemple, une des deux techniques ci-dessus. On supprime n arcs de ce circuit et on ajoute n nouveaux arcs à ce circuit afin d'obtenir un nouveau circuit hamiltonien de valeur inférieure. On répète la procédure de modification jusqu'à atteindre un critère d’arrêt indiquant qu’il devient difficile de trouver un circuit hamiltonien de valeur inférieure. Nous pouvons aussi citer d’autres heuristiques particulières comme celles de Christofides basée sur la recherche d'un couplage dans un graphe [Christofides et al., 1979], l'heuristique de Khoan Vo-Khac pour tout problème du voyageur de commerce symétrique basée sur la recherche d'une hiérarchie entre les arêtes [Khoan,1971], l'heuristique de Hurrion basée sur une interaction homme machine [Hurrion, 1980], l’heuristique d’affectation avec réemploi de ressources de Guinet [Guinet, 1984] et l’heuristique du voisinage de Carlier et Villon [Carlier et Villon, 1990]. Comme heuristique amélioratrice pour un GTSP, nous citons l’heuristique 4-opt ([Boctor et al., 1993] et [Renauld et al., 1996]). Dans [Renauld et Boctor, 1998], les auteurs proposent une heuristique composite pour ce problème qui construit une solution initiale partielle, insère un nœud de chaque sous-ensemble de nœuds non visité et améliore ensuite la solution. Les premiers à avoir utilisé la programmation dynamique sont Bellman et Held. La démarche consiste à définir une trajectoire à partir d’une approche ascendante proposée [Bellmann, 1962] [Held et Karp, 1962]. Cependant, il se trouve que des difficultés sont rencontrées lors du calcul d’un extrêmum avec l’équation de Bellmann et que le processus de détermination de la fonction de Bellmann est accompagné par des erreurs inévitables. Dans [Chentsov et Korotayeva, 1997], les auteurs proposent une heuristique pour le problème du voyageur de commerce généralisé basée sur la programmation dynamique et utilisant la fonction de Bellmann. Ces mêmes auteurs essayent, dans [Chentsov et Chentsov, 2001], de donner une 91 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle estimation de l’effet des erreurs de la fonction de Bellmann sur la qualité des trajectoires trouvées par une procédure de programmation dynamique. Nous trouvons aussi l’heuristique constructive de Glover [Glover et al., 2001] pour les ATSP, les travaux de [Chisman, 1975], [Jongens et Volgenant, 1985] et [Gendreau et al., 1994] pour le TSP généralisé dont la solution est basée sur les clusters, l’heuristique de Glover basée sur la recherche tabou [Glover, 1989]. Une variété du voyageur de commerce est étudiée avec ramassage et livraison dans [Gendrau et al., 1999]. Les algorithmes génétiques sont aussi utilisés [Schmitt et Amini, 1995], [Whitley et al., 1989], [Homaifar et al., 1993], [Giuseppe et al., 2001], [Goldberg, 1989]. Une autre variété du voyageur de commerce asymétrique, connue sous le sigle RATSP, est une généralisation du problème du voyageur de commerce asymétrique. Ce problème a été introduit pour la première fois par Barnhart [Barnhart et al., 1998], dans le contexte de la planification d’une ligne aérienne : soit un problème TSP asymétrique représenté par un multigraphe orienté G = (V, Z) avec V un ensemble de nœuds, Z un ensemble d’arcs de deux types : arcs ordinaires et arcs de remplissage. De plus, des poids entiers positifs wi sont affectés aux nœuds. Les auteurs définissent un chemin non réalisable comme étant un chemin ne contenant pas d’arcs de remplissage et dont la somme des poids des nœuds ne dépasse pas un poids limite donné ; sinon il est dit réalisable. Ils étudient ensuite la résolution du problème RATSP, par la recherche d’un circuit hamiltonien de coût minimal, constitué de sous-chemins non réalisables. Mak et Boland, dans [Mak et Boland, 2000], ont proposé une solution, par un algorithme de recuit simulé, basée sur une méthode de voisinage 3-optimale qui a, toutefois, l’inconvénient de la violation possible du poids limite (une méthode est α-optimale si elle aboutit à un ordonnancement dont l’objectif a une erreur relative inférieure ou égale à α% par rapport à l’optimum). Ils ont aussi développé une deuxième heuristique basée sur la relaxation de Lagrange, avec toujours la possibilité du non respect des contraintes du poids limite. Il se révèle que cette nouvelle heuristique est exponentielle et les méthodes d’optimisation du sousgradient standard ne sont pas directement applicables [Boland et Boland., 2000]. Signalons, pour terminer cette brève synthèse, que d’autres variantes du problème du voyageur de commerce ont été étudiées comme celle du voyageur de commerce maximum qui consiste à déterminer un circuit hamiltonien avec un total de poids maximal. Pour cette 92 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle variante, il est proposé dans [Hassin et Rubinstein, 1998] un algorithme approximatif polynomial. Pour ce qui nous intéresse, nous allons étudier une solution pour la résolution du problème F / no − idle / C max dans le cas général, en assimilant ce problème à celui du voyageur de commerce et en adoptant la technique de la plus proche insertion. 2.2. Résolution du problème F / no − idle / C max Considérons le cas de n travaux J1, J2, …, Jn à ordonnancer sur m machines. On définit l’attente maximale Di,j entre le travail Ji et le travail Jj de la façon suivante : si l’on exécute uniquement les travaux Ji et Jj et dans cet ordre, sur l’ensemble des m machines en satisfaisant la contrainte no-idle, Di,j correspond à l’attente de la dernière machine (m) avant d’entamer l’exécution du travail Ji (voir figure 3.7). |--i---|---j----| |--i----|----j---| |--i--|-----j----| . . |---i---|-----j-----| |---i----|-----j-----| Di,j Figure 3.7. Evaluation de la distance (l’attente maximale) L’idée de l’heuristique consiste à chercher un ordonnancement qui minimise la somme des Di,j. Le problème peut alors être vu comme celui du voyageur de commerce dans lequel les nœuds (villes) représentent les travaux et les arcs représentent les attentes maximales en guise des distances entre travaux. Nous préconisons de chercher le circuit hamiltonien le plus court en appliquant la technique de la plus proche insertion. Considérons un graphe orienté G = (X, U) où X représente l’ensemble des nœuds et U représente l’ensemble des arcs. Nous rappelons qu’un circuit hamiltonien sur le graphe G est un circuit qui passe par chacun des nœuds du graphe G une et une seule fois. Une valeur (Di,j) est affectée à chacun des arcs et la valeur du circuit hamiltonien est définie par la somme des 93 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle valeurs de tous les arcs composant ce circuit. Le problème consistant à trouver le plus court circuit hamiltonien est appelé le problème du voyageur de commerce. La technique de la plus proche insertion commence par chercher la plus petite distance Di,j. Un circuit de i à j est alors défini ; la longueur du circuit est égale à Di,j + Dj,i. Ensuite, les nœuds qui n'appartiennent pas au circuit sont ajoutés. A chaque étape, le nœud minimisant la nouvelle valeur de la longueur du circuit augmenté du nœud est ajouté au circuit et il est inséré à la position qui minimise cette valeur. Ce processus est répété jusqu'à avoir tous les nœuds inclus dans ce circuit. La complexité de cette règle est O(n3). Nous adaptons cette technique à la résolution de notre problème selon le schéma suivant [Saadani et al., 2001b], [Saadani et al., 2003b] : 1. Calculer la distance si Ji est exécuté avant Jj, pour toute paire de travaux ordonnés Ji et Jj. La distance est égale à la différence entre la date de début du travail Ji sur la première machine et la date de début du travail Ji sur la dernière machine en respectant la contrainte no-idle. 2. Choisir le couple des travaux (Ji, Jj) ayant la plus petite attente Di,j ; il constituera l’élément de départ du chemin (de l’ordre) à construire. Les travaux Ji et Jj sont alors ordonnés. 3. Pour tout travail Jk non encore ordonné, insérer Jk dans les différentes positions du chemin en cours de construction et choisir le travail et la position qui minimisent la longueur totale du nouveau chemin. A partir de l'ordre obtenu en ajoutant le travail au chemin, on somme les différentes distances Di,j des travaux adjacents pour calculer la longueur totale du chemin. Choisir le travail Jk et la position qui minimisent la nouvelle valeur du chemin. Le travail Jk est alors ordonné. 4. Répéter 3 jusqu’à ce que tous les travaux soient ordonnés. Nous désignons par NIR l’heuristique proposée. 2.3. Expérimentations 2.3.1. Comparaison avec la solution optimale La qualité de cette heuristique est examinée en résolvant 3584 problèmes. Pour générer les données, nous avons utilisé une distribution log normale et nous avons étudié 112 différentes 94 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle tailles de problèmes. Pour chaque taille et chaque configuration, 32 tests ont été générés. En premier lieu, notre comparaison est faite par rapport à la solution optimale. Dans le but de calculer cette dernière, toutes les séquences de travaux ont été énumérées. La séquence avec le plus petit C max a été retenue. L'algorithme énumératif est désigné par OPT. Données Le nombre de travaux varie dans cet ensemble [3, 4, 5, 6, 7, 8, 9, 10]. Les différents nombres de machines sont [4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]. Les durées opératoires sont des entiers et elles sont générées avec une moyenne égale à 12 et un écart type égal à 4. Résultats Les résultats des expérimentations, pour les différentes configurations, sont présentés par les tables 3.6 à 3.13. Pour chaque configuration, nous trouvons : - m : le nombre de machines, - PMin : min (( NIRi − OPTi ) / OPTi ) où NIRi et OPTi sont, respectivement, les valeurs i =1..32 des C max obtenus par l’heuristique NIR et la solution optimale OPT pour le ième test ; PMin est ainsi le minimum des écarts entre la valeur de la solution trouvée par l'heuristique NIR et celle trouvée par la solution optimale OPT, divisés par la solution optimale, - PMax : max (( NIRi − OPTi ) / OPTi ) , le maximum des écarts entre la valeur de la i =1..32 solution trouvée par l'heuristique NIR et celle trouvée par la solution optimale OPT, divisés par la solution optimale, - PMoy : moy (( NIRi − OPTi ) / OPTi) , la moyenne des écarts entre la valeur de la i =1..32 solution trouvée par l'heuristique NIR et celle trouvée par la solution optimale OPT, divisés par la solution optimale. Pour le cas de deux travaux, l’heuristique se ramène à un algorithme de résolution exacte puisque la règle de l'insertion la plus proche donne toujours la solution optimale pour le cas de deux villes. Pour les configurations avec n = 3, n = 4 et n = 5 et m variant de 4 à 30, l’heuristique NIR donne assez souvent l’ordre qui minimise le C max . Pour n supérieur à 5, le minimum des rapports ne dépasse pas 4,8% et la moyenne des rapports ne dépasse pas 10,10%. Dans le pire des cas, le maximum ne dépasse pas 20,8%. L’écart entre les valeurs moyennes et les valeurs maximums est significatif de la rareté relative des pires cas. 95 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle m PMin. PMoy. PMax. m PMin. PMoy. PMax. 4 0 0,0404 0,1587 4 0 0,0458 0,1591 6 0 0,0216 0,0870 6 0 0,0339 0,1275 8 0 0,0197 0,1111 8 0 0,0438 0,1333 10 0 0,0189 0,0983 10 0 0,0372 0,1506 12 0 0,0118 0,0537 12 0 0,0365 0,0927 14 0 0,0186 0,0691 14 0 0,0386 0,0989 16 0 0,0211 0,1061 16 0 0,0208 0,0458 18 0 0,0157 0,0664 18 0 0,0270 0,0655 20 0 0,0112 0,0429 20 0 0,0260 0,0829 22 0 0,0116 0,0640 22 0 0,0238 0,0877 24 0 0,0090 0,0470 24 0 0,0280 0,0888 26 0 0,0117 0,0450 26 0 0,0185 0,0769 28 0 0,0173 0,0502 28 0 0,0228 0,0546 30 0 0,0165 0,0512 30 0 0,0235 0,0725 Moyenne 0 0,0175 0,0750 Moyenne 0 0,0305 0,0955 Table 3.6. Cas de trois travaux m PMin. PMoy. PMax. Table 3.7. Cas de quatre travaux m PMin. PMoy. PMax. 4 0 0,0601 0,1684 4 0 0,0611 0,1481 6 0 0,0400 0,1168 6 0 0,0563 0,1846 8 0 0,0497 0,1579 8 0 0,0585 0,1244 10 0 0,0425 0,1250 10 0,0097 0,0608 0,1395 12 0 0,0441 0,1296 12 0,0045 0,0581 0,1152 14 0 0,0415 0,0870 14 0,0035 0,0451 0,1190 16 0 0,0395 0,1226 16 0,0108 0,0532 0,1220 18 0 0,0339 0,0779 18 0,0055 0,0528 0,1163 20 0 0,0425 0,0939 20 0,0145 0,0540 0,1308 22 0 0,0383 0,0921 22 0 0,0463 0,1062 0,0092 0,0340 0,0786 24 0,0042 0,0475 0,1390 24 26 0 0,0301 0,0941 26 0 0,0418 0,0755 28 0 0,0285 0,0754 28 0 0,0385 0,0863 30 0 0,0302 0,0909 30 0 0,0363 0,0865 Moyenne 0,0037 0,0507 0,1209 Moyenne 0,0006 0,0396 0,1078 Table 3.8. Cas de cinq travaux Table 3.9. Cas de six travaux 96 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle m PMin. PMoy. PMax. m PMin. PMoy. PMax. 4 0,0204 0,0861 0,2031 4 0,0079 0,0907 0,0626 0,0738 0,1503 6 0,0054 0,0736 0,1346 8 0,0100 0,0721 0,1399 8 0,0141 0,0831 0,1532 10 0,0085 0,0594 0,1586 10 0,0310 0,0848 0,1739 12 0,0104 0,0660 0,1621 12 0,0223 0,0742 0,1365 14 0,0060 0,0689 0,1319 14 0,0336 0,0753 0,1338 16 0,0220 0,0586 0,1529 16 0,0208 0,0793 0,1746 18 0,0026 0,0586 0,0972 18 0,0075 0,0674 0,1525 20 0,0198 0,0583 0,1005 20 0,0163 0,0606 0,1303 22 0,0085 0,0545 0,1196 22 0,0204 0,0667 0,1336 24 0,0062 0,0588 0,1313 24 0,0295 0,0658 0,1508 26 0,0037 0,0555 0,0916 26 0,0219 0,0615 0,1128 28 0,0055 0,0489 0,0937 28 0,0265 0,0626 0,0986 30 0,0094 0,0603 0,1079 Moyenne 0,0190 0,0718 0,1397 6 30 0 0 0,0481 0,0979 Moyenne 0,0088 0,0620 0,1308 Table 3.10. Cas de sept travaux Table 3.11. Cas de huit travaux m PMin. PMoy. PMax. m PMin. PMoy. PMax. 4 0,0144 0,0852 0,1959 4 0,0320 0,0900 0,1860 6 0,0284 0,0875 0,1979 6 0,0140 0,1030 0,1730 8 0,0375 0,1008 0,1532 8 0,0320 0,1010 0,2080 10 0,0387 0,0953 0,1885 10 0,0340 0,0950 0,1680 12 0,0141 0,0870 0,1649 12 0,0280 0,1000 0,1760 14 0,0391 0,0856 0,1648 14 0,0340 0,0890 0,1440 16 0,0323 0,0858 0,1897 16 0,0480 0,0950 0,2080 18 0,0132 0,0779 0,1560 18 0,0400 0,0940 0,1900 20 0,0186 0,0721 0,1450 20 0,0390 0,0770 0,1270 22 0,0313 0,0673 0,1022 22 0,0370 0,0787 0,1434 24 0,0208 0,0634 0,1245 24 0,0379 0,0771 0,1318 26 0,0294 0,0733 0,1070 26 0,0203 0,0727 0,1233 28 0,0209 0,0668 0,1128 28 0,0399 0,0750 0,1500 30 0,0169 0,0709 0,1205 30 0,0311 0,0720 0,1102 Moyenne 0,0333 0,0871 0,1599 Moyenne 0,0254 0,0799 0,1516 Table 3.12. Cas de neuf travaux Table 3.13. Cas de dix travaux 97 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle 0,18 0,16 0,14 0,12 0,10 0,08 0,06 0,04 0,02 0,00 PMin PMoy PMax 2 3 4 5 6 7 8 9 10 Nombre de travaux Figure 3.8. Les résultats de l'heuristique pour n<=10 et m<=30 La figure 3.8 donne l’allure de l’évolution de PMin, de PMoy et de PMax en fonction du nombre de travaux. Nous retiendrons que pour n allant jusqu’à 10 et m allant jusqu’à 3, la valeur de PMoy reste inférieure à 10% et celle de PMax reste inférieure à 20%. La série des moyennes est plus proche de la série des minimums que de celle des maximums. m n=2 n=3 n=4 n=5 n=6 n=7 n=8 n=9 n = 10 4 32 10 5 5 1 0 0 0 0 6 32 14 9 8 1 1 0 0 0 8 32 15 3 4 1 0 0 0 0 10 32 16 6 4 0 0 0 0 0 12 32 15 4 3 0 0 0 0 0 14 32 13 2 1 0 0 0 0 0 16 32 11 7 1 0 0 0 0 0 18 32 15 5 2 0 0 0 0 0 20 32 14 7 1 0 0 0 0 0 22 32 12 5 3 1 0 0 0 0 24 32 19 1 0 0 0 0 0 0 26 32 12 9 4 1 0 0 0 0 28 32 7 7 4 1 0 0 0 0 30 32 8 3 3 1 1 0 0 0 Table 3.14. Nombre de solutions optimales trouvées par NIR La table 3.14 présente, pour chaque configuration, le nombre de cas où l’heuristique NIR trouve la solution optimale (c.-à-d. lorsque la solution de l'heuristique est la même que la 98 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle solution trouvée par énumération). Comme nous l'avons déjà mentionné, 32 tests sont résolus pour chaque configuration et, pour le cas de deux travaux, les résultats sont nécessairement identiques. Lorsque n augmente, le nombre de solutions optimales trouvées décroît. Pour un n donné, le nombre de cas où cette heuristique donne la solution optimale est non linéaire. 2.3.2. Comparaison avec la solution trouvée par un solveur Dans la pratique, le recours à la résolution par énumération n’est pas concevable (signalons que, d’une part, les expérimentations rapportées ci-dessus ont nécessité des temps de calcul atteignant quelques heures à plusieurs jours et, d’autre part, nous ne pouvons pas énumérer pour plus de dix travaux). Aussi, nous avons envisagé d’étudier la résolution par le solveur de programmation mixte Lingo sur la base du modèle présenté dans la section 1.2.2.1 de ce chapitre [Saadani et al., 2003b]. La qualité de notre heuristique a été examinée en résolvant 270 problèmes. Pour générer les données du problème, la même distribution log normale a été employée. Nous avons fait notre étude pour un nombre de machines variant de 5 à 25 avec un pas égal à 5. Le nombre maximum de travaux dépend de la capacité du solveur. Pour chaque configuration de problème, 10 tests sont générés. Nous rappelons que la version utilisée de Lingo fonctionne avec un nombre maximum de 4000 contraintes et de 800 variables. Dans la table 3.15, nous donnons un aperçu sur la taille des problèmes étudiés en nombre de travaux, nombre de contraintes et nombre de variables. Nombre de Nombre maximum Nombre de Espace mémoire Nombre de machines de travaux variables (K∅) contraintes 5 25 750 197 272 10 23 759 281 475 15 21 756 337 638 20 20 800 391 802 25 18 774 405 895 30 17 799 437 1009 Table 3.15. Caractéristiques des problèmes générés 99 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle Les tables de 3.16 à 3.21 rapportent les résultats des expérimentations pour chaque valeur de n. Pour chaque taille de problème, 10 tests sont considérés. Nous trouvons pour chaque configuration de problème : - n : le nombre de travaux, - PMin : min (( NIRi − LGi ) / LGi ) où NIRi et LGi sont, respectivement, les valeurs des i =1..10 C max obtenus par l’heuristique NIR et la résolution du solveur Lingo pour le ième test ; PMin est le minimum des écarts entre la valeur de la solution trouvée par notre heuristique (NIR) et la solution obtenue avec Lingo (LG), divisés par la solution obtenue avec Lingo, - PMax : max (( NIRi − LGi ) / LGi ) , le maximum des écarts entre la valeur de la solution i =1..10 trouvée par notre heuristique (NIR) et la solution obtenue avec Lingo (LG), divisés par la solution obtenue avec Lingo, - PMoy : moy (( NIRi − LGi ) / LGi ) , la moyenne des écarts entre la valeur de la solution i =1..10 trouvée par notre heuristique (NIR) et la solution obtenue avec Lingo (LG), divisés par la solution obtenue avec Lingo, m=5 PMin. PMax. PMoy. m = 10 PMin. PMax. PMoy. n=5 0,0093 0,0811 0,0408 n=5 0,0000 0,1116 0,0405 n = 10 0,0476 0,0989 0,0764 n = 10 0,0342 0,1593 0,1037 n = 15 0,0391 0,1557 0,0937 n = 15 -0,0206 0,1591 0,0575 n = 20 0,0231 0,1306 0,0752 n = 20 -0,0156 0,0758 0,0336 n = 25 0,0257 0,1433 0,0666 n= 23 -0,0059 0,1245 0,0483 Moyenne 0,0752 0,1219 0,0705 Moyenne -0,0016 0,1261 0,0567 Table 3.16. Cas de cinq machines Table 3.17. Cas de dix machines m = 15 PMin. PMax. PMoy. m = 20 PMin. PMax. PMoy. n=5 0,0168 0,1254 0,0564 n=5 0,0139 0,0896 0,0432 n= 10 0,0173 0,1416 0,0732 n = 10 0,0393 0,1445 0,0864 n = 15 -0,0081 0,1208 0,0416 n = 15 -0,0319 0,0663 0,0168 n = 20 -0,0230 0,0768 0,0348 n = 20 -0,0187 0,0779 0,0168 n = 21 -0,0240 0,0873 0,0277 Moyenne 0,0006 0,0946 0,0408 Moyenne -0,0042 0,1104 0,0467 Table 3.18. Cas de quinze machines Table 3.19. Cas de vingt machines 100 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle m = 25 PMin. PMax. PMoy. m = 30 PMin. PMax. PMoy. n=5 0,0000 0,0000 0,0000 n=5 0,0000 0,0000 0,0000 n = 10 0,0346 0,1395 0,0808 n = 10 -0,0302 0,1308 0,0631 n = 15 -0,0704 0,0291 -0,0219 n = 15 -0,0401 0,1711 -0,0108 n = 18 -0,0129 0,0391 0,0082 n= 17 -0,0683 0,0765 0,0035 Moyenne -0,0122 0,0519 0,0168 Moyenne -0,0346 0,0946 0,0140 Table 3.20. Cas de vingt cinq machines Table 3.21. Cas de trente machines Signalons que lorsque le nombre de travaux augmente, Lingo passe de plus en plus de temps (variant de quelques heures à des jours) pour trouver la solution optimale. Pour cinq travaux, il trouve la solution optimale au pire des cas en deux ou trois heures. A partir de dix travaux, il s'avère difficile d'obtenir l'optimal pour un nombre de machines supérieur à dix. Pour des grandes tailles, un test d’optimalité peut nécessiter des jours avant qu'il soit achevé. Cependant, au fur et à mesure des itérations, Lingo affiche la solution obtenue provisoirement. Nous avons adopté, pour les pires des cas, d’arrêter Lingo au bout de 14 heures et de considérer la solution provisoire comme étant optimale. A partir des tables 3.16 à 3.21, nous pouvons voir que notre heuristique donne souvent une solution très proche de celle obtenue avec Lingo. La figure 3.9 illustre l’allure de l’évolution de min, de moy et de max en fonction du nombre de machines : - Courbe moy donne la moyenne des rapports moyens (( C max (NIR)- LG)/ LG) sur le nombre de problèmes générés pour chaque nombre de machines. - Courbe min donne la moyenne des rapports minimums (( C max (NIR)- LG)/ LG) sur le nombre de problèmes générés pour chaque nombre de machines. - Courbe max donne la moyenne des rapports maximums (( C max (NIR)- LG)/ LG) sur le nombre de problèmes générés pour chaque nombre de machines. Nous notons que l’écart de la solution obtenue par l’heuristique varie entre 1,4% et 7,05%. Cependant, l'heuristique proposée fournit une solution en quelques secondes. La figure 3.10 illustre l’allure de l’évolution de min, de moy et de max en fonction du nombre de travaux. Les écarts pour les trois courbes suivent une allure décroissante à partir de n = 10 ; ceci est justifié puisque les résultats de Lingo deviennent approchés à partir de dix travaux pour la plupart des configurations. 101 (Cmax(NIR)-LG)/LG Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle 0,14 0,12 0,10 0,08 0,06 0,04 0,02 0,00 -0,02 -0,04 -0,06 min max moy 5 10 15 20 25 30 Nombre de machines Figure 3.9. Comparaison du comportement de l’heuristique avec (Cmax(NIR)-LG)/LG celui de la résolution par Lingo en fonction de m 0,16 0,14 0,12 0,10 0,08 0,06 0,04 0,02 0,00 -0,02 -0,04 min max moy 5 10 15 20 Nombre de travaux Figure 3.10. Comparaison du comportement de l’heuristique avec celui de la résolution par Lingo en fonction de n Pour un nombre de travaux donné, nous présentons dans la figure 3.11, le nombre de tests donnant un rapport inférieur à 5%. Comme nous le montrons, le nombre d’occurrences sur 10 testées avec un rapport inférieur à 5%, augmente avec le nombre de travaux. Le nombre d’occurrences est très important lorsque le nombre de travaux est différent de 10 ; ceci est justifié par le fait que pour n = 10, Lingo donne la solution optimale et au-delà de 10, les résultats ne sont plus optimaux et le rapprochement entre les valeurs obtenues de Lingo et celles obtenues par NIR devient plus important. Dans la figure 3.12, nous avons étudié le nombre de cas ayant un rapport inférieur à 5% pour chaque nombre de machines. Le nombre de cas augmente avec le nombre de machines lorsque la valeur de n est grande. 102 Nombre de cas où le rapport est inférieur à 5% Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle 12 10 m=5 8 m=10 m=15 6 m=20 4 m=25 2 m=30 0 5 10 15 20 25 Nombre de travaux Figure 3.11. Evolution du nombre de cas ayant un Nombre de cas où le rapport est inférieur à 5% rapport inférieur à 5% en fonction du nombre de travaux 12 10 n=5 8 n=10 6 n=15 4 n=20 n=25 2 0 5 10 15 20 25 30 Nombre de machines Figure 3.12. Evolution du nombre de cas ayant un rapport inférieur à 5% en fonction du nombre de machines 2.3.3. Comparaison avec les solutions trouvées par l’algorithme de type séparation et évaluation Nous avons déjà effectué, dans les deux paragraphes précédents, une comparaison avec les résultats exacts obtenus par énumération et les résultats fournis par Lingo. Cela nous a permis de situer les performances de notre heuristique et de mettre en évidence le gain extrêmement important en temps d’exécution que nous pouvons obtenir avec cette heuristique, si l’on accepte un écart moyen de précision inférieur à 10%. Toutefois, aussi bien avec le calcul par énumération qu’avec la résolution Lingo, nous n’avons pas pu aller au-delà des configurations n = 10 et m = 30 pour la méthode par énumération et n = 17 et m = 30 pour la résolution avec Lingo. Nous avons été plusieurs fois contraints de nous contentez des solutions intermédiaires atteintes par Lingo au bout de 14 heures de calcul. La troisième et la dernière comparaison que nous tentons dans ce paragraphe vise à aller davantage dans l’augmentation de la taille des problèmes traités (de quoi avoir une idée de 103 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle l’allure du comportement de notre heuristique quand n augmente), en profitant de la précision apportée par l’algorithme de type séparation et évaluation (que nous désignons par BB) par rapport à celle offerte par Lingo. Les résultats des tests sont présentés dans les tables 3.22, 3.23 et 3.24. Pour chaque taille de problème, 10 tests sont considérés et nous avons gardé les mêmes tests pour les configurations déjà étudiées dans le paragraphe 2.3.2. Pour chaque configuration de problème, nous avons : - PMin : min (( NIRi − BBi) / BBi) où NIRi et BBi sont, respectivement, les valeurs des i =1..10 C max obtenus par l’heuristique NIR et la résolution avec l’algorithme de type séparation et évaluation BB ; ainsi PMin est le minimum des écarts entre la valeur de la solution trouvée par notre heuristique (NIR) et la résolution avec l’algorithme de type séparation et évaluation BB, divisés par BBi. - PMax : max (( NIRi − BBi ) / BBi ) , le maximum des écarts entre la valeur de la solution i =1..10 trouvée par notre heuristique (NIR) et la résolution avec l’algorithme de type séparation et évaluation BB, divisés par BBi. - PMoy : moy (( NIRi − BBi) / BBi) , la moyenne des écarts entre la valeur de la solution i =1..10 trouvée par notre heuristique (NIR) et la résolution avec l’algorithme de type séparation et évaluation BB, divisés par BBi. m=5 PMin. PMax. PMoy. m = 10 PMin. PMax. PMoy. n=5 0,0093 0,0811 0,0408 n=5 0,0000 0,1116 0,0405 n = 10 0,0476 0,0989 0,0764 n = 10 0,0342 0,1593 0,1037 n = 15 0,0391 0,1557 0,0937 n = 15 0,0409 0,2060 0,1004 n = 20 0,0231 0,1306 0,0752 n = 20 0,0354 0,1376 0,0993 n = 25 0,0257 0,1433 0,0666 n= 23 0,0409 0,1756 0,1024 n = 30 0,0107 0,1569 0,1007 Moyenne 0,0259 0,1277 0,0755 Moyenne 0,0302 0,1580 0,0892 Table 3.22. Cas de cinq machines Table 3.23. Cas de dix machines En reprenant les mêmes valeurs des tests pour le cas de 5 machines, nous avons obtenu exactement les mêmes résultats que ceux de la comparaison avec Lingo (voir table 3.22). Les exécutions sont cependant plus rapides et elles atteignent au maximum 7 heures (pour n = 20). L’algorithme de type séparation et évaluation est meilleur si nous considérons les durées d’exécution. 104 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle Pour 10 machines (voir table 3.23), nous avons obtenu aussi des résultats identiques uniquement pour n = 5 et n = 10, puisque Lingo ne donne plus l’optimal à partir de n = 15. Le maximum dans les durées d’exécution est de 17 heures (pour n = 20 et n = 23), le nombre de tests demandant du temps d’exécution est plus grand. Pour 15 machines (voir table 3.24), nous avons les mêmes résultats que la résolution avec Lingo pour n = 5 et n = 10. A partir de 15 travaux, les durées commencent à augmenter et, pour certains tests, elles atteignent des jours (au maximum 7 jours) ; les C max sont cette fois-ci précis s’appuyant sur une résolution véritablement exacte. m = 15 PMin. PMax. PMoy. n=5 0,0168 0,1254 0,0564 n= 10 0,0173 0,1416 0,0732 n = 15 0,0576 0,1540 0,1102 n = 21 0,059 0,1675 0,0955 Moyenne 0,0376 0,1471 0,0838 Table 3.24. Cas de quinze machines A partir de 20 machines, les durées d’exécution avec l’algorithme de type séparation et évaluation deviennent très grandes. Concernant l’allure du comportement de l’heuristique, nous avons constaté que les écarts moyens en fonction de n et de m restent à peu près dans la même fourchette autour de 7% à 8%. 2.3.4. Comparaison dans le cas de trois machines Nous comparons ici, les résultats de l’heuristique NIR avec ceux de l'heuristique proposée dans la première section pour le cas de trois machines. Pour générer les données du problème, nous avons gardé la même loi. Nous avons fait varier n de 5 à 99 par pas de 5. Pour chaque configuration de problème (20 au total), nous avons généré 32 tests. La complexité de l'heuristique NIR est en O(n3). L'heuristique H utilise la règle de Johnson qui a une complexité en O(n*log(n)). H donne un résultat meilleur que NIR dans plusieurs cas ; les résultats sont rapportés dans la table 3.25. 105 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle n PMin. PMax. PMoy. Pourcentage de cas où Pourcentage de cas où le rapport le rapport est est compris entre 0,0 et 0,05 strictement négatif 5 -0,1753 0,0818 -0,0226 53,13% 37,5% 10 -0,1020 0,1467 -0,0079 50,00% 25,00% 15 -0,1350 0,0872 -0,0073 53,13% 31,25% 20 -0,0325 0,1465 0,0379 12,50% 53,13% 25 -0,0126 0,1344 0,0577 3,13% 34,38% 30 -0,0118 0,1406 0,0432 6,50% 53,13% 35 -0,0287 0,1200 0,0572 3,13% 28,13% 40 0,0020 0,1025 0,0524 0,00% 43,75% 45 0,0112 0,1443 0,0638 0,00% 34,38% 50 -0,0014 0,1333 0,0574 3,13% 43,75% 55 0,0072 0,1209 0,0729 0,00% 18,75% 60 0,0129 0,1960 0,0657 0,00% 28,13% 65 0,0120 0,1032 0,0627 0,00% 34,38% 70 0,0068 0,1671 0,0696 0,00% 31,25% 75 0,0295 0,1196 0,0765 0,00% 25,00% 80 0,0359 0,1251 0,0769 0,00% 12,50% 85 0,0039 0,1201 0,0744 0,00% 18,75% 90 0,0182 0,1190 0,0787 0,00% 12,50% 95 0,0363 0,1166 0,0743 0,00% 16,63% 99 0,0041 0,1312 0,0787 0,00% 16,63% Moyenne -0,0160 0,1245 0,0531 2,95% 29,85% Table 3.25.Comparaison entre les résultats de NIR et ceux de H Il est indiqué, dans cette table, pour chaque configuration de problème : - n : le nombre de travaux, - PMin : min (( Hi − NIRi ) / NIRi ) où Hi et NIRi sont, respectivement, les valeurs des i =1..32 C max obtenus par l’heuristique H et l’heuristique NIR pour le ième test, - PMax : max (( Hi − NIRi) / NIRi) , i =1..32 - PMoy : moy (( Hi − NIRi) / NIRi) , - le pourcentage de cas où le rapport (Hi- NIRi)/ NIRi est négatif sur 32 tests, i =1..32 106 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle - le pourcentage de cas où le rapport (Hi- NIRi)/ NIRi est entre 0% et 5% sur 32 tests. Cette table montre que le minimum des rapports ne dépasse pas –17,3%, le maximum est entre 8,18% et 19,6% et la moyenne varie de –2,26% à 7,87%. Le nombre de cas où la solution donnée par H est meilleure que la solution donnée par NIR est plus important quand le nombre de travaux est inférieur à 20. Pour un nombre de travaux plus grand, l'heuristique NIR est meilleure. n PMin. PMax. PMoy. 5 0,0101 0,3026 0,1193 10 0,0321 0,2138 0,1162 15 0,0226 0,2154 0,1180 20 0,0195 0,0909 0,0544 25 0,0000 0,0915 0,0454 30 0,0025 0,0808 0,0462 35 0,0088 0,0713 0,0404 40 0,0071 0,0647 0,0311 45 0,018 0,0727 0,0330 50 0,0045 0,0611 0,0283 55 0,0059 0,0645 0,0334 60 0,0041 0,0572 0,0569 65 0,0064 0,484 0,0240 70 0,0058 0,0558 0,0232 75 0,0056 0,0486 0,0221 80 0,0063 0,0620 0,0220 85 0,0086 0,0501 0,0239 90 0,0045 0,0457 0,0194 95 0,0070 0,0377 0,0200 99 0,0024 0,0325 0,0160 Moyenne 0,0088 0,0884 0,0432 Table 3.26. Comportement de NIR vis-à-vis de la borne inférieure D'après les résultats trouvés dans le cas de trois machines, cette étude confirme que NIR est meilleure quand le nombre de travaux est supérieur à 20. L’heuristique NIR a donc l’avantage, non seulement de pouvoir s’appliquer pour m plus grand que trois, mais aussi de donner de 107 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle meilleurs résultats lorsque n augmente et ceci même pour le cas de m = 3. Nous avons aussi comparé les résultats de NIR avec la borne inférieure proposée dans le cas de trois machines. La table 3.26 donne le comportement de l'heuristique NIR vis-à-vis de la borne inférieure pour le cas de trois machines. Pour chaque problème, nous définissons le minimum, le maximum et la moyenne des écarts entre la valeur de la solution NIR et la valeur de la borne inférieure LB divisés par la valeur de la borne. 3. Etude d’un cas particulier d’application Dans la pratique du terrain, le fonctionnement continu peut n’être exigé que de certains composants seulement du système. Dans cette section, nous étudions un cas particulier de flow-shop à trois étages où la contrainte no-idle est appliquée uniquement au second étage. Il s’agit d’une application inspirée du cas réel d’un atelier de fonderie. Aussi, contrairement à l’hypothèse adoptée dans ce qui précède, le fonctionnement de cet atelier est celui d’un flowshop libre et non d’un flow-shop de permutation. Des heuristiques sont proposées et testées pour un nombre de travaux allant jusqu’à 30. Nous étendons, ensuite, l’application en remplaçant le troisième étage par des machines parallèles [Saadani et al., 2002b]. Nous nous intéressons tout d’abord à un problème flow-shop à trois étages composé d’une seule machine par étage où la contrainte no-idle doit être respectée sur le second étage. Comme nous l’avons déjà fait remarqué auparavant, cette contrainte est implicite sur la première et dernière machine, les travaux peuvent toujours être décalés vers la droite pour respecter la contrainte et sans que le makespan ( C max ) ne soit modifié. Le problème étudié dans cette section peut se rencontrer dans une fonderie de fontes qui comprend généralement trois étages (W1, W2, W3). A l’étage W1, des noyaux en sable sont fabriqués sur plusieurs machines travaillant en parallèle. Le regroupement des noyaux entrant dans un moule (collection) s’effectue dans le cadre de la gestion d’un stock intermédiaire. Au deuxième étage (W2), des machines reliées par un convoyeur automatique fabriquent le brut de fonderie. Le dernier étage (W3) est composé d’un ensemble de machines parallèles permettant l’ébarbage des bruts de fonderie. Nous supposons la présence d’un tampon de taille illimitée entre les étages. L’étage W2 peut être considéré comme une seule machine (opérations synchrones cadencées par le convoyeur) avec la contrainte no-idle puisque nous avons besoin de remplir les moules avec la fonte qui ne doit pas trop baisser en température. Pour simplifier notre travail, nous considérons que le premier et le dernier étage contiennent chacun une seule machine, en divisant la somme des durées opératoires par le nombre de machines de chaque 108 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle étage. Chaque travail doit passer par W1, ensuite W2 et enfin W3, mais l’ordre de passage des travaux sur chacune des machines peut être quelconque. Nous commençons par rechercher l’ordre qui minimise le C max de ce problème où chaque étage est réduit à une seule machine, ensuite nous étendons nos travaux pour le cas de plusieurs machines sur le dernier étage. Dans la sous-section suivante, nous présentons un modèle d’un problème flow-shop à trois machines respectant la contrainte no-idle sur la deuxième machine, F 3 / 2 − no − idle / C max et nous rappelons que le problème n’est plus un flow-shop de permutation. Ensuite, nous proposons deux heuristiques pour résoudre ce problème, ainsi qu’une étude expérimentale est présentée. Dans la sous-section 3.4, nous étendons ce travail pour plusieurs machines parallèles au dernier étage. 3.1. Analyse du problème Nous rappelons que le problème étudié F 3 / 2 − no − idle / C max est un flow-shop sans permutation à trois machines respectant la contrainte no-idle sur la seconde machine. Il s’agit d’ordonner n travaux (J1, J2,.., Jn) sur trois machines (M1, M2, M3). Un travail Ji (pour i = 1 .. n) a au plus trois opérations (Oi,1, Oi,2, Oi,3). Une opération Oi,r doit être exécutée sur la machine Mr sans interruption durant pi,r unités de temps. Ces durées sont fixes et positives, elles peuvent être nulles si certains travaux ne sont pas exécutés sur une machine. Deux opérations d’un même travail ne peuvent pas être exécutées simultanément, chaque machine exécute au plus un travail à un instant donné et chaque travail est exécuté au plus une fois sur chaque machine selon la même séquence M1, M2, M3. La séquence de travaux n’est pas forcément la même pour chaque étage. Sur la deuxième machine, si un travail commence à être exécuté, cette dernière ne doit jamais attendre le travail suivant s’il existe, mais un travail peut attendre une machine. Considérons les paramètres suivants : n : le nombre de travaux à exécuter, P = { pi , r }: la durée opératoire du travail Ji sur la machine Mr (matrice n × 3). Z = { Zi , j , r }: une matrice binaire, Zi , j , r = 1 si le travail Ji est à la position j dans la séquence de travaux sur la machine Mr, 0 sinon. Pour toute solution, il y a uniquement n variables dont la valeur est égale à 1. C = { Cj , r }: la date d’achèvement du travail à la jème position dans la séquence des travaux sur la machine Mr. 109 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle F = { Fi , r }: la date de fin du travail Ji sur la machine Mr. Les contraintes sont les suivantes : n ∑Z i, j, r =1 (i = 1, ..., n; r = 1, .., 3) (12) i, j, r =1 (j = 1, ..., n; r = 1, .., 3) (13) (r = 2; j = 1, ..., n - 1) (14) (r = 1 ou r = 3; j = 1, ..., n - 1) (15) j =1 n ∑Z i =1 n C j , r + ∑ pi , r * Z i , j + 1 , r = C j + 1 , r i =1 n C j , r + ∑ pi , r * Z i , j + 1 , r ≤ C j + 1 , r i =1 n Fi , r + ∑ pi , r + 1 * Zi , j , r + 1 ≤ Fi , r + 1 (r = 1, ...,3; j = 1, ..., n) (16) j =1 n ∑ p *Z = C i ,1 i ,1,1 (17) 1, 1 i =1 Fi , r ≥ C j , r − ( Zi , j , r − 1) * HV Cj , r ≥ Fi , r − ( Zi , j , r − 1) * HV ∀ i, j, r (j = 1, ..., n; r = 1, .., 3 ; i = 1, ..., n) et HV une grande valeur (18) Et la fonction objectif : C max = Cn , m (19) Min( Cmax ) (20) La fonction objectif (19) et l’équation (20) précisent que l’objectif est de minimiser le maximum des dates d’achèvement. Les contraintes (12) expriment le fait que chaque travail doit être affecté à une seule position dans la séquence et les contraintes (13) spécifient le fait que chaque position est affectée à un seul travail sur chaque machine. Avec les contraintes (14), la date d’achèvement du travail à la position j+1 sur la seconde machine est égale à la somme de la date d’achèvement du travail à la position j sur cette machine et la durée opératoire d’un travail à la position j+1 sur la même machine. Aucun temps mort n’est permis. Les contraintes (15) montrent que la date d’achèvement du travail à la position j+1 sur la machine Mr (la première ou la dernière) est au moins égale à la somme de la date 110 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle d’achèvement du travail à la position j sur la machine Mr et de la durée opératoire du travail à la position j+1 sur la machine Mr. Sur ces machines les temps morts sont permis. Les contraintes (16) expriment le fait que la date de fin du travail Ji sur la machine Mr+1 est au moins égale à la somme de la date de fin du travail Ji sur la machine Mr et de la durée opératoire du travail Ji sur la machine Mr+1. Les contraintes (17) spécifient que la date d’achèvement du premier travail sur la première machine est égale à sa durée opératoire sur cette machine. Les contraintes (18) égalisent la date d’achèvement et la date de fin d’un travail Ji à la position j sur la machine Mr. 3.2. Heuristique La NP-complétude du problème F 3 / no − idle / C max a été montrée au premier chapitre. Pour deux machines, la résolution est similaire à celle du problème F 3 // C max qui est trouvée en appliquant la règle de Johnson. Cette dernière caractéristique F 3 / 2 − no − idle / C max . peut être utilisée pour résoudre le problème Deux heuristiques utilisant le même principe peuvent être proposées : le problème à trois machines est réduit à un problème flow-shop de permutation à deux machines. Le meilleur ordre est obtenu par la règle de Johnson, que nous appliquons ensuite sur chaque machine. H1 présente l’heuristique utilisant l’ordre de Johnson du problème réduit (flow-shop de permutation à deux machines) où la durée opératoire du travail Ji sur la première machine est la somme de celles sur M1 et M2, et la durée opératoire sur la deuxième machine est la même que celle sur M3. H2 présente l’heuristique utilisant l’ordre de Johnson du problème réduit où la durée opératoire sur la première machine est la même que sur M1 et la durée opératoire sur la deuxième machine est la somme de celles sur M2 et M3. 3.3. Expérimentations Dans ce paragraphe, nous comparons les résultats des heuristiques proposées avec une borne inférieure. 3.3.1. Données La qualité de notre heuristique a été examinée en résolvant 448 problèmes. Les données d’un problème sont générées selon la même loi. Nous avons fait notre étude pour un nombre de travaux variant dans [4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]. Pour chaque configuration de problème, 32 tests sont générés. 111 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle 3.3.2. Borne inférieure L’organisation étudiée est un flow-shop hybride à trois étages avec une seule machine au deuxième étage et plusieurs pour les autres. Pour évaluer les performances de ces heuristiques, plusieurs bornes inférieures ont été définies. Un ensemble de bornes inférieures LB(h) sont dérivées en réduisant un problème à m étages en série avec des machines parallèles à chaque étage à m problèmes de machines parallèles : [ ] h −1 n l =1 i =1 [ m LB (h) = Minimum ∑ p i ,l + ∑ p i , h / x(h) + Minimum ∑ p i ,l ∀i =1.. n ∀i =1.. n l = h +1 ] ∀h = 1,..., m LB = Maximum [LB(h)] LB(0) = 0 ∀h = 0 ,..., m où x(h) définit le nombre de machines à l’étage h. Le premier terme de la borne inférieure LB(h) est égal au minimum du temps d’attente du premier travail à l’étage h. Le second terme est égal à la date d’achèvement nécessaire pour exécuter tous les travaux à l’étage h dans le cas préemptif [Gupta, 1988], [Gupta et Tunc, 1991] et [Srikandarjah et Sethi, 1989]. Le troisième terme est égal au minimum de la durée opératoire pour terminer le dernier travail à l’étage h. Puisque nous traitons une organisation présentant un flow-shop simple avec trois machines, x(h) sera considéré égal à 1 pour chaque étage. 3.3.3. Résultats Pour chaque problème, les heuristiques H1 et H2 sont appliquées et le C max est évalué. Le détail des résultats est présenté par les trois tables suivantes : - La table 3.27 donne la moyenne des rapports ((Cmax(H1)-LB)/LB) et ((Cmax(H2)LB)/LB) sur les 32 problèmes générés pour chaque nombre de travaux, - la table 3.28 donne le maximum des rapports ((Cmax(H1)-LB)/LB) et ((Cmax(H2)LB)/LB) sur les 32 problèmes générés pour chaque nombre de travaux, - la table 3.29 donne le minimum des rapports ((Cmax(H1)-LB)/LB) et ((Cmax(H2)LB)/LB) sur les 32 problèmes générés pour chaque nombre de travaux. 112 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle En examinant le comportement des heuristiques (table 3.27), la tendance des moyennes s’inverse lorsque le nombre de travaux augmente. Ces moyennes atteindront au maximum 0,1014 pour H1 et 0,1073 pour H2. n H1 H2 n H1 H2 n H1 H2 4 0,1014 0,1073 4 0,2676 0,2958 4 0,0125 0,0000 6 0,1002 0,0974 6 0,3152 0,3696 6 0,0000 0,0000 8 0,0898 0,0953 8 0,2049 0,2376 8 0,0000 0,0083 10 0,0907 0,0844 10 0,2517 0,2657 10 0,0000 0,0000 12 0,0825 0,0866 12 0,1818 0,1569 12 0,0000 0,0000 14 0,0845 0,0703 14 0,2065 0,2258 14 0,0154 0,0103 16 0,0764 0,0702 16 0,2082 0,1959 16 0,0000 0,0046 18 0,0715 0,0741 18 0,1794 0,1839 18 0,0040 0,0000 20 0,0627 0,0691 20 0,1744 0,1203 20 0,0040 0,0038 22 0,0569 0,0535 22 0,1894 0,2143 22 0,0000 0,0035 24 0,0568 0,0595 24 0,1263 0,1480 24 0,0034 0,0091 26 0,0627 0,0661 26 0,1610 0,1672 26 0,0029 0,0121 28 0,0553 0,0525 28 0,1226 0,1239 28 0,0027 0,0028 30 0,0569 0,0600 30 0,1893 0,1825 30 0,0028 0,0080 Moy.: 0,0749 0,0749 Moy.: 0,1985 0,2062 Moy.: 0,0034 0,0045 Table 3.27. Variation des moyennes Table 3.28. Variation des Table 3.29. Variation des maximums minimums Les maximums de ces rapports ne dépassent pas 0,3152 pour H1 et 0,3696 pour H2. Considérons la table 3.28, nous pouvons constater que quelques cas donnent une valeur élevée. Concernant la table 3.29, le minimum du rapport est très proche de zéro pour les deux heuristiques. La figure 3.13 présente les courbes ch1 et ch2 de la moyenne des rapports de ((Cmax(H1)LB)/LB) et ((Cmax(H2)-LB)/LB) sur 32 problèmes pour chaque nombre de travaux. Les deux solutions proposées donnent le même résultat. 113 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle 12,00% 10,00% 8,00% ch1 6,00% ch2 4,00% 2,00% 0,00% 4 6 8 10 12 14 16 18 20 22 24 26 28 30 Nombre de travaux Figure 3.13. Evolution de la moyenne du rapport. 3.4. Extension au flow-shop hybride Pour revenir au problème considéré (la fonderie), nous étudions maintenant le problème d’un flow-shop hybride à trois étages où les deux premiers étages contiennent une seule machine chacun et le dernier dix machines parallèles. La contrainte no-idle est toujours uniformément appliquée au second étage. Pour résoudre ce problème (heuristique H3), nous avons appliqué l’heuristique H1 à un ensemble de deux étages et n travaux. L’ordre obtenu est ensuite utilisé pour ordonner les travaux sur M1 et M2, et pour l’étage M3 le premier travail disponible est affecté à la première machine libre de cet étage. Les nouvelles bornes inférieures sont les suivantes : [ ] + Minimum[∑ p ] [ h −1 n LB1(h) = Minimum ∑ p i ,l + Maximum ∑ p i , h / x(h), Maximum( p i , h ) ∀i =1.. n l =1 m ∀i =1.. n l = h +1 i ,l i =1 ] ∀h = 1,..., m LB1 = Maximum [LB(h)] LB1(0) = 0 ∀h = 0 ,..., m où x(h) désigne le nombre de machines dans l’étage h, donc x(1) = x(2) = 1, x(3) = 10 et m représente le nombre d’étages. La qualité de l’heuristique a été examinée en résolvant 448 problèmes générés avec la même loi et le nombre de travaux varie dans [4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]. Nous avons toujours 32 tests pour chaque taille de problème et configuration. Nous considérons les courbes de la figure 3.14 : - Courbe min donne le minimum du rapport ((Cmax(H3)-LB1)/LB1) sur 32 problèmes générés pour chaque nombre de travaux. 114 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle - Courbe moy donne la moyenne du rapport ((Cmax(H3)-LB1)/LB1) sur 32 problèmes générés pour chaque nombre de travaux. - Courbe max donne le maximum du rapport ((Cmax(H3)-LB1)/LB1) sur 32 problèmes générés pour chaque nombre de travaux. 30,00% 25,00% 20,00% 15,00% 10,00% 5,00% 0,00% min max moy 4 6 8 10 12 14 16 18 20 22 24 26 28 30 Nombre de travaux Figure 3.14. Comparaison entre le Cmax obtenu par H3 et la borne inférieure n Min. Max. Moy. n Nombre de machines en moyenne 32 0,0000 0,0267 0,0109 32 2,9 36 0,0000 0,0331 0,0128 36 3 40 0,0000 0,0241 0,0087 40 3,2 44 0,0019 0,0245 0,0093 44 2,9 48 0,0000 0,0305 0,0103 48 3,1 52 0,0000 0,0163 0,0076 52 3 56 0,0000 0,0116 0,0050 56 2,8 60 0,0028 0,0264 0,0108 60 3 64 0,0013 0,0192 0,0094 64 2,9 68 0,0000 0,0262 0,0072 68 3 72 0,0000 0,0205 0,0094 72 3,3 76 0,0011 0,0147 0,0078 76 3,4 80 0,0000 0,0262 0,0066 80 3,2 84 0,0000 0,0127 0,0049 84 3,3 88 0,0039 0,0113 0,0066 88 3,2 92 0,0018 0,0117 0,0063 92 3,4 96 0,0000 0,0101 0,0062 96 3,5 Moyenne : 0,0008 0,0203 0,0082 Table 3.30. Comparaison de H3 par Table 3.31. Variation du nombre rapport à la borne inférieure pour un de machines nécessaires en nombre de travaux supérieur à 30. fonction de n. 115 Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle La figure 3.14 montre que la moyenne de l’écart entre le C max trouvé par H3 et la borne inférieure divisé par la borne inférieure ne dépasse pas 5%. La courbe moy est décroissante lorsque le nombre de travaux augmente. La courbe min est toujours nulle et la courbe max est décroissante lorsque n augmente. Ces résultats sont toujours bons même lorsque n atteint 96. La table 3.30 présente les différents rapports obtenus sur les 32 tests générés pour chaque nombre de travaux. Cependant, dix machines sont disponibles au dernier étage. Il serait plus intéressant de déterminer la moyenne du nombre de machines réellement nécessaires. La table 3.31 donne la moyenne du nombre de machines utilisées sur les 32 tests et ceci pur chaque nombre de travaux. Nous pouvons noter que quatre machines au dernier étage sont suffisantes pour avoir une bonne solution concernant le makespan. Dans cette section, un cas particulier du flow-shop hybride à trois étages a été étudié. Ce problème est connu pour être NP-difficile. Une contrainte additive est appliquée au second étage, no-idle, afin de respecter des caractéristiques industrielles. Notre travail montre que des heuristiques en O(n*log(n)) peuvent être proposées et offrant une date d’achèvement maximale avec une erreur ne dépassant pas 3,31% par rapport à une borne inférieure [Saadani et al., 2002b]. 4. Conclusion Nous avons présenté dans ce chapitre une heuristique de résolution du flow-shop avec contrainte no-idle dans le cas de trois machines et nous avons prouvé son efficacité en la comparant par rapport à une borne inférieure. En suite, une heuristique pour traiter le problème pour un nombre quelconque de machines et basée sur la modélisation du problème initial en un problème du voyageur de commerce est proposée. Les résultats de cette heuristique ont été comparés à ceux obtenus par un solveur de programmation linéaire entière mixte. La dernière partie s’est intéressée à l’étude d’un cas pratique, celui d’une fonderie ainsi que la proposition d’une méthode en O(n*log(n)). Dans ce chapitre, nous nous sommes intéressés qu’aux heuristiques contrairement au chapitre précédent. Dans le chapitre suivant, nous traitons un autre aspect qui est la relaxation de la contrainte no-idle en insérant un ou plusieurs temps morts. 116