Les Problèmes d’Ordonnancement à Machines Parallèles de Tâches Dépendantes : une Evaluation de Six Listes et d’un Algorithme Génétique. Hocine Boumédiène-Merouane et Ali Derbala Département de mathématiques, Faculté des sciences Université de Blida BP 270, Route de Soumaa, Blida, ALGERIA. Tel et Fax : (+) 213-25-43-36-42 Email: [email protected] Résumé. Nous considérons les problèmes difficiles d’ordonnancement de tâches à contraintes de précédence sur des machines parallèles identiques afin de minimiser la longueur de l’ordonnancement. Ils sont tellement difficiles qu’il est important pour un décideur d’être capable de déterminer des bornes de calculs et de leur associer des solutions réalisables. Six listes de priorités ont été définies, implémentées et comparées. Leur comportement est reproduit par une représentation graphique. Elles sont basées sur le plus long chemin, le nombre de successeurs immédiats d’une tâche, le temps d’exécution le plus court d’abord, l’ordre aléatoire et une variante du plus long chemin. Beaucoup d’expériences de calculs ont été développés pour mesurer la qualité et l’efficacité de chaque liste. Un algorithme génétique noté AG basé sur deux types de croisement est implémenté et il est comparé avec ces listes. Après de nombreuses expériences numériques et avec des tests, les meilleurs résultats sont obtenus avec des variantes utilisant les listes comme population initiale de l’algorithme génétique. De même un second graphe comparatif avec les listes est obtenu. Les temps d’exécution des six listes et de quatre variantes d’AG sont donnés sous forme d’un tableau récapitulatif. Les algorithmes génétiques ne sont pas l’ultime réponse aux problèmes difficiles à résoudre. 1 Introduction Un domaine bien connu de la théorie de l’ordonnancement déterministe concerne l’attribution de tâches à un système multiprocesseurs afin de minimiser la longueur de l’ordonnancement. Ce critère est important pour les problèmes d’ordonnancement à machines parallèle où l’ordonnanceur assurera l’équilibre de la charge des machines, qui est la somme des temps d’exécution des tâches à exécuter sur la dite machine. Les machines sont supposées identiques, le temps requis pour exécuter une tâche donnée ne dépend pas de la machine utilisée. A chaque tâche est associé un temps d’exécution, connu d’avance. Des relations de précédence existent pour un ensemble de tâches. Nous considérons les ordonnancements non- préemptives où une tâche une fois débute son exécution, elle ne peut être interrompue. Les problèmes d’ordonnancement à contraintes de précédence sur les machines parallèles notés PprecCmax sont souvent difficiles et des bornes inférieures peuvent être utilisées pour évaluer des heuristiques. Ces approches sont pratiques pour les applications d’ingénieries tels le calcul parallèle, la synthèse d’un système digital, la compilation de haute performance qui a un besoin urgent en estimation de ressources de calculs ( Fernandez et Bussel [5], Eichenberger et Meleis[4]). Pour beaucoup de problèmes difficiles dans une grande variété de domaines, les métaheuristiques ont reçu un intérêt considérable et sont avérées efficaces pour les problèmes difficiles de l’optimisation combinatoire apparaissant dans des domaines variés, industriels, économique, logistique, ingénierie, commerce, domaines scientifiques etc. Des exemples de métaheuristiques sont les algorithmes évolutionnistes de type génétique. Schurman et Woeginger [12] ont évoqué ce qu’ils appellent les questions ouvertes les plus vexantes pour les problèmes d’ordonnancement déterministes NP-difficiles, au sens où ils restent ouverts depuis un fort long temps. Nous avons voulu répondre à ceux des machines parallèles de tâches dépendantes, donnée par un graphe de précédence quelconque, respectivement PprecCmax et P prec, pj = 1 Cmax. Les problèmes sont respectivement de fournir un algorithme approximatif en temps polynomial et un algorithme polynomial avec un facteur de garantie du plus mauvais cas de 2 - δ, δ > 0 ( en fait, même un algorithme de complexité temporelle exponentielle en "m", le nombre de machines, peut être intéressant). Nous rappelons qu'un algorithme qui donne des solutions presque optimales est appelé algorithme d’approximation. S’il le fait en un temps polynomial, il est appelé algorithme d’approximation en temps polynomial. Un algorithme d’approximation qui fournit toujours une solution presque optimale avec un coût au plus à un facteur approché ρ de la solution optimale ( où ρ > 1 est un nombre fixé) est appelé un ρ-algorithme d’approximation, et la valeur ρ est appelé le facteur de garantie du plus mauvais cas. Dans un article récent, Aytug et al. [1] fournissent un état de l’art sur l’utilisation des algorithmes génétiques pour résoudre les problèmes d’ordonnancement. Les articles dans cet état de l’art sont référencées par type de problème qu’ils résolvent. Pour le problème PCmax, Chiu et al.[2] ont été incapables de comparer un algorithme génétique avec un autre algorithme. Au lieu d'affronter ces problèmes "ouverts" frontalement, nous avons préféré et nous étions motivé, pour le problème à contraintes de précédence P/prec/ Cmax, à étudier et comparer six algorithmes de types listes avec un AG. L’organisation de l’article est la suivante. On définit les six listes de priorités dans le paragraphe suivant et l’algorithme génétique dans le troisième. Ils ont été testés sur beaucoup de problèmes générés aléatoirement. Le paragraphe 4 présente les essaies de calcul où ces heuristiques et méta heuristique sont évaluées. Une comparaison au paragraphe5, fait que les règles d’ordonnancement de type listes sont meilleures que l’algorithme génétique. Nous concluons brièvement l’article. 2 Les Algorithmes d’Ordonnancement De Type Liste Dans le cas des problèmes NP-difficiles, les algorithmes les plus utilisés sont basés sur les listes. Ils déterminent pour un ordre de tâches, qui peut être donné par une liste, un ordonnancement correspondant. Ils considèrent les tâches une par une et prennent la décision d’ordonnancer sur la base d’un ordonnancement partiel de tâches ordonnancées auparavant. Les décisions pour les premières tâches ordonnancées ne seront pas changées. Le résultat de l’algorithme d’ordonnancement de type liste est celui établi par cette liste. En général il n’est pas optimal. De telles approches sont aussi appelées règles de priorité statique. On utilise la règle d’affectation sans délai : si une machine se libère, on lui affecte la tâche libre la plus prioritaire, même s’il y a des tâches plus prioritaires non encore libre. Les règles ou listes de priorités sont définies par : PLC: définissons récursivement PLC(i), en fonction du plus long chemin à i, comme suit. Pour une tâche sans successeurs , PLC(i) = Pi . Sinon PLC(i) est { PLC(j) + Pi } Max { j, j successeur de i } SPT: plus court temps d’exécution Pi le premier. SUCC: En fonction du nombre de successeurs immédiats . RAND: un ordre aléatoire. SOMPLC: VPLC(i), En fonction d’une variante de PLC, p i si i n' a pas de successeur ∑ {PLC(j) + Pi} VPLC(i)= j, j successeur de i Max{,} : en fonction de l’expression ∑ {PLC(j) + Pi} max { PLC(i), { j, j successeur de i } Nombre de machines } On a testé, évalué et comparé les six listes. Les résultats obtenus pour des ensembles d’instances de tailles différentes sont les mêmes, on a généré 100 instances pour chaque densité. On donne le pourcentage de fois qu’une liste donne le meilleur résultat des six listes, ceci en fonction de la densité moyenne du graphe de précédence. Les résultats sont reproduits dans le graphe suivant. Si les temps d’exécution des tâches sont distribués uniformément, graphiquement, les listes PLC, SOM et MAX sont les meilleures. Pour des densités faibles, les performances des listes PLC, SOM et MAX sont proches. Fig. 1. Performance des listes, durées d’exécution uniformément distribuées 3 Description et Implémentation d’un AG Dans un problème particulier PprecCmax, il faut prendre en compte les spécificités des contraintes de précédence entre les tâches. Pour les introductions et des détails aux AG, voir Michalewicz [11]. 3.1 Codage On a choisit de coder indirectement la liste de priorité qui donne suivant la règle d’affectation l’ordonnancement. La permutation de tâches représentant la liste est le chromosome représentant l’individu ou la solution. Une population sera donc un ensemble de permutations de « n » tâches. 3.2 La population initiale On a étudié deux approches pour construire la population initiale: - En générant aléatoirement des permutations réalisables, respectant la relation de précédence. - En prenant les permutations construites en utilisant les six règles vues auparavant, PLC, SPT, SUCC, RAND, SOM, Max{.,.}. 3.3 Fonction d’évaluation ou finesse La finesse croit inversement avec la fonction objectif quand le problème est de minimisation. La fonction finesse d’un individu xi, f(xi) est 1/C(xi) où C(xi) la longueur de l’ordonnancement obtenu. La probabilité de sélection d’un individu xi, prob(xi) est proportionnelle à sa finesse f(xi), et tel que ∑ f(xi) = 1. Les probabilités de sélection sont proches. Les valeurs objectifs le sont aussi, ce qui est souvent le cas dans le problème PprecCmax. On a utilisé une deuxième fonction, qui calcule une mesure de finesse en prenant compte le dispersement des valeurs objectifs de toute la population. max − C( x i ) + ε 1 où C(xi) la longueur de l’ordonnancement obtenu par xi, f (x i ) = + max − min + ε T max = max{ C(x), x individu } et min = min{ C(x), x individu }, ε, évite le débordement de calcul. Il est choisit de l’ordre de 10-5, T : la taille de la population, « 1/T » représente un minimum de chance d’un individu. Les probabilités de sélection sont dispersées tout en reflétant les finesses des individus. 3.4 Sélection A chaque génération ou itération, on cherche à choisir les individus à reproduire. La probabilité de sélectionner un individu est proportionnelle à sa finesse. La méthode de sélection utilisée est basée sur le principe de la roulette biaisée ( Goldberg [7] ). Un individu fort peut être sélectionné plusieurs fois, et un individu faible peut ne pas l’être. 3.5 Croisement On a testé les deux opérateurs de croisement : Le croisement simple à un point et le croisement uniforme. Ils préservent la faisabilité des parents. Si les deux parents sont réalisables alors leurs fils le seront aussi. 3.6 Mutation On a utilisé la mutation qui pour le chromosome d’un individu, transpose un certain nombre de fois, deux tâches consécutives choisies aléatoirement. L’opérateur de croisement, ainsi que le mode de sélection peuvent produire plusieurs individus identiques appelés « clones ». Un algorithme anti-clones a été utilisé pour regénèrer une population. 3.7 Critère d’arrêt On a choisi d’arrêter le déroulement de l’algorithme si on atteint un certain nombre de générations. Ce nombre ne doit pas être très grand, sinon l’AG génère une grande partie de l’espace des solutions réalisables et diminue l’efficacité de l’algorithme. Aussi, ce nombre ne doit pas être trop petit, sinon on ne donne pas suffisamment de temps à l’algorithme pour améliorer la population. L’idéal, est d’avoir une fonction qui calcule ou estime le nombre de solutions réalisables dans un temps raisonnable. On choisit d’arrêter si on explore un certain pourcentage des solutions réalisables. La population étant de six individus. On a fixé le nombre d’itération à 30, donc 180 solutions réalisables. Ce choix est efficace car avec 100 tâches et une densité forte, nombre de solutions réalisables faible, le nombre de solutions réalisables est de l’ordre de 103, donc 180 est inférieur à 20% de 10 3. On a étudié l’influence des différents paramètres de l’algorithme génétique sur la taille de la population, le nombre de générations, le type de croisement utilisé, la mutation et la structure de l’algorithme. On a utilisé de différentes variantes de l’algorithme génétique : Croisement simple, sans mutation ; Croisement uniforme sans mutation ; Pas de croisement, mutation; Croisement et mutation. 4 Expérimentations On a fait une analyse expérimentale de six listes de priorités, et de quelques variantes d’un algorithme génétique, utilisés pour résoudre le problème PprecCmax. Pour ce problème, deux paramètres sont considérés, les durées d’exécution constantes ou distribuées uniformément sur un intervalle ]0, b], avec « b » constante positive et la densité du graphe de précédence. 4.1 Générateur de jeux d’essai Nous avons réalisé un outil permettant de générer des instances du problème PprecCmax. Il est paramétrique et comporte des paramètres qu’on peut régler pour avoir des instances avec des caractéristiques voulues. On génère des durées d’exécution constantes et unitaires pour P prec, pj = 1Cmax ou variables distribuées uniformément entre 0 et une constante b, entières ou réelles pour le problème P/prec, pj∈]0,b] /Cmax. La densité d’un graphe arbitraire est une valeur réel de [ 0, 1]. Pour les graphes sans circuits, la densité est entre 0 et 0.5 ( si un arc xy ∈U alors l’arc yx ∉U ). Si on veut garder la densité entre 0 et 1, on la mesure par d =2 U/ (n(n-1)). On a généré des graphes sans circuits avec une densité fixée d. Elle est de complexité (n6), ce qui n’est pas pratique. De plus la densité seule, ne donne pas beaucoup d’informations sur le graphe. On utilisera une autre façon pour générer des graphes sans circuits. 4.2 Critères de performance Avec les méthodes approchées deux critères sont à considérer : le temps pour calculer une solution approchée et l’éloignement de cette solution de l’optimum. L’idéal serait de pouvoir comparer les résultats avec la longueur d’un ordonnancement optimal, ce qui est bien sûr coûteux en temps de calcul. On a comparé entre les valeurs objectifs des solutions données par les méthodes et une borne inférieure de la valeur optimale. On prend comme mesure de performance le rapport d’approximation expérimental, A (I ) C A ( I ) C max défini par : ρexp(I) = max où : I, le jeu d’essai. ≥ LB ( I ) OPT ( I ) CmaxA(I), la valeur de la solution obtenue par la méthode A. OPT(I), la valeur optimale. LB(I), une borne inférieure de la valeur optimale. On a utilisé LB = max (LB1, LB2), ∑ pi avec : LB1 = PLC (i ) et max i sans prédécesseur LB2 = i m . Un nombre important d’expérimentations a été réalisé, sur les six listes et sur différentes variantes de l’algorithme génétique. On commence par comparer les listes entre elles, puis on essaye d’améliorer les solutions données par les listes en utilisant les AG. Le nombre de tâches doit être suffisamment grand. Notre choix est de 100 tâches pour 3 machines. 4.3 Résultats des listes PLC favorise les tâches à la tête d’un chemin critique, puisque les tâches d’un chemin critique augmente probablement la longueur de l’ordonnancement si elles sont retardées. Les listes MAX et SOM cherchent un compromis entre d’une part, la priorité des tâches d’un chemin critique et d’autre part, la priorité des tâches permettant l’exploitation du parallélisme. MAX est meilleure pour des graphes de densité inférieure à 45% et SOM est meilleure pour des densités fortes, supérieure à 45%. Une liste combinant MAX et SOM, est définie par : Max si d = 0.45 MS = . MS est meilleure que MAX et SOM. SOM si d = 0.45 Pour un échantillon de 100 jeux d’essai, on mesure le rapport d’approximation ∑ ρexp (I ) expérimental en moyenne: figure2. ρmoy = I 100 . On a obtenu le graphe de la Fig. 2. Rapport d'approximation moyen. pi∈U]0,1]. Les résultats des listes sont proches. Cela découle du fait qu’une liste quelconque est déjà 2-approximative. Graphiquement PLC et MAX sont les meilleures en moyennes. L’éloignement de la borne par rapport à l’optimum est fonction de la densité. 4.4 Résultats des AG Le nombre de variantes possible de l’AG est grand à cause du nombre de paramètres réglables. Nous remarquons qu’elles donnent des performances proches les unes des autres, en ajustant convenablement les paramètres. Ainsi on peut avoir la variante ‘croisement simple et une mutation à pm = 0.2, proche de la variante « croisement uniforme et une mutation à pm = 0.1 ». On note une variante de l’algorithme génétique par 0 : pas de croisement 0 : population initiale aléatoire AG(a,b,c) où : a = , b = 1 : croisement à un po int 1 : population initiale des listes 2 : croiement uniforme 0 : pas de mutation , c= p m : mutation avec une probabilité p m AG(1, 2, 0.2) désigne la variante avec une population initiale générée par les listes définies, et un croisement uniforme et une mutation de probabilité 0,2. Pour les instances avec des pj constants, les AG n’apportent pas des améliorations, ces instances sont en général des cas faciles, PLC les résout polynômialement. Pour des instances avec un graphe de précédence dense de l’ordre de 70% et des pj∈U]0,1], que ce soit avec une population initiale aléatoire ou en utilisant les listes, les AG améliorent les résultats des listes, même avec un grand nombre de tâches supérieur à 400. Pour des instances de 100 tâches et 3 machines, on observe environ 25% d’améliorations des résultats des listes. Les différentes variantes étudiées améliorent, après un nombre d’itération considérable, la population initiale choisie aléatoirement mais lentement. La population obtenue est de coûts plus faibles que ceux des listes. Il est préférable de prendre les six listes comme population initiale et essayer de l’améliorer par l’algorithme génétique. Pour toutes les listes, le temps de calcul est polynomial. Il n’est pas le cas avec les AG, pour des jeux d’essais avec m = 3 et une densité de graphe de précédence de 50% , on a obtenu le tableau suivant en secondes. Pour insérer un tableau dans les marges, notons par α1 = AG(0,1,0) , α2 = AG(0,0,1) , α3 = AG(0,1,1) et α4 = AG(0,2,0) Tableau 1. Temps d’exécution des listes et de l’AG PLC SPT SUC RAND C SOM MAX α1 α2 α3 α4 100 <1 <1 <1 <1 <1 <1 0.44 0.82 0.77 0.44 200 <1 <1 0.05 <1 <1 0.17 1.76 3.07 3.07 1.92 300 0.06 0.05 <1 0.06 0.05 0.55 6.31 10.71 10.87 5.98 400 0.05 0.11 0.06 0.06 0.11 1.3 15.54 27.46 27.57 15.82 500 0.16 0.11 0.17 0.11 0.16 2.64 29.99 55.69 54.49 28.4 800 0.5 0.55 0.49 0.5 0.55 11.4 97.55 175.04 198.82 105.96 Nomb De Tâches 4.5 Comparaison des listes et l’AG conçu Les deux meilleurs listes PLC et Max {.} sont comparus à l’algorithme génétique à l’AG AG(1,1,1). Les listes donnent des résultats en un temps très réduit. Elles sont efficaces. Si on dispose d’un horizon de temps, l’AG peut être utilisé et améliore les résultats des listes qui sont utilisées comme une population initiale. Son comportement est représenté par le graphe de la figure 3. Les cas de graphes de précédence de faible, moyenne et forte densité sont représentés. On donne le pourcentage de fois où l’AG améliore les résultats des listes. Pour les instances de faible densité, les graphes de précédences sont en général des arbres. PLC donne un résultat optimal ou proche de l’optimum. L’AG obtient rapidement l’optimum. Pourcentage des améliorations Pour ceux de forte densité, l’espace des solutions réalisable est réduit. L’AG explore rapidement la totalité ou presque des solutions. Pour les instances de moyenne densité, les graphes sont de différentes formes et le nombre de solutions réalisables est suffisamment grand pour permettre à l’AG d’améliorer les résultats des listes à travers les générations. 90% densité faible 10% 80% densité moyenne 40% densité élevé 70% 70% 60% 50% 40% 30% 20% 10% 10gen 30gen 190gen 50gen 210gen 70gen 230gen 90gen 110gen 130gen 150gen 170gen nombre de générations Fig. 3. Comparaison graphique des listes et de l’AG 5 Conclusion et perspectives Les algorithmes de type listes sont des algorithmes gloutons qui prennent une décision en se basant sur l’information local. Ne pas décider optimalement à une étape, affectera sûrement les décisions ultérieures et nous éloignera d’avantages de la solution optimale. L’utilisation d’informations sur les tâches successeurs d’une tâche (PLC, SOM, MAX) peut améliorer les performances d’un algorithme de liste. Ces informations, pour des raisons du temps de calcul, sont limitées. Une autre solution consiste à concevoir des algorithmes de liste dynamique, qui prennent en considération les informations nouvelles dues aux affectations. Nous avons essayer d’améliorer les résultats des listes par des AG où on a plusieurs degrés de libertés. Plusieurs combinaisons de paramètres, d’opérateurs et donc plusieurs variantes ont été considéré. Les résultats de calculs montrent qu’aucune variante de l’AG n’est forcément meilleure que les autres. Il serait intéressant de comparer ces résultats avec d’autres méthodes d’amélioration par voisinage qui réduisent la population à un seul individu comme par le recuit simulé en utilisant les mêmes codages et les mêmes techniques de construction de solutions que pour les AG où la mutation deviendrait la fonction de voisinage. PLC ne s’éloigne pas beaucoup de l’optimum et plusieurs règles d’affectations donnent des ordonnancements proches de l’optimum Références 1. Aytug, H., M. Khouja, and F.E. Vergara. Use of genetic algorithms to solve production and operations management problems : a review. Int. J. Prod. Res, 41, N°17 (2003) 3955-4002. 2. Chiu, N., S. Fang, and Y. Lee. Sequencing parallel machining operations by genetic algorithms. Computers and Industrial Engineering, 36 (1999) 259-280. 3. Demange, M. and V. Paschos. Autour de nouvelles notions pour l’analyse des algorithmes d’approximation :formalisme unifié et classes d’approximation. RAIRO Operations Research ( 2002) 237-277. 4. Eichenberger, A., and Meleis., W. Balance scheduling: Weighting branch tradeoffs in superblocks. In proceeding of the 32th Symposium on Microarchitecture (1999) 272-283. 5. Fernandez, E., and B. Bussel. Bounds on the number of processors and time for multiprocessor optimal schedules. IEEE Trans. On Computers (1973) 745-751. 6. Fleury, G., and M. Gourgand. Genetic algorithms applied to workshop problems. Int. J. Computer Integrated Manufacturing, 11 (1998), 183-192. 7. Goldberg, D.E. Genetic algorithms in Search, optimization & Machine Learning. AddisonWesley Publishing Company, Inc(1989). 8. Graham, R.L., E.L. Lawler, J.K. Lenstra, and A.H.G. Rinnoy Kan. Optimal And Approximation In Deterministic Sequencing And Scheduling: A survey. Annals discrete mathematics 5 (1979) 287-326. 9. Hurink, J., and S. Knust. List scheduling in parallel machine environment with precedence constraints and setup times. Operations research letters 29 (2001) 231-239. 10. Lopez, P., and F. Roubellat, Ordonnancement de la production ,chapitre2. Hermes Science Europe Ltd .(2001) 11. Michalewicz, Z.: Genetic Algorithms + Data Structures = Evolution Programs. 3rd edn. Springer-Verlag, Berlin Heidelberg New York (1996) 12. Schuurman, P., and G.J. Woeginger, 1999. Polynomial time approximation algorithms for machine scheduling: ten open problems. J. sched. 2 (1999) 203-213.