• Aucun résultat trouvé

Evaluation des métaheuristiques

Mémoire commune + règles de fonctionnement

4.4 Evaluation des métaheuristiques

Dans cette section, nous présentons les résultats des évaluations des métaheuristiques développées dans le chapitre précédent. Nous comparons quatre méthodes : génération complètement aléatoire, suite à la suggestion d’un des rapporteurs du papier (Portmann et Mouloua, 2007), mais ceci uniquement pour les tests de recherche de solutions faisables ; recuit simulé, algorithme génétique simple avec l’opérateur 2X, et enfin, l’algorithme

présentés au chapitre 3 pour 2/3 des croisements et avec 2X pour 1/3 des croisements et chaque fois que les nouveaux croisements ne sont pas applicables (un des parents non faisables).

Nous avons programmé en langage C++, et nous avons réalisé les expériences sur un ordinateur Pentium 4 à 1.7 Ghz, et une mémoire de 1 Giga. Comme pour l ‘évaluation du Pert coût, les expériences ont été effectuées sur des problèmes de flowshop de permutation dans lesquels on cherche à minimiser la somme des pénalités d’avance et de retard par rapport à la première opération et à la dernière opération de chaque job.

Dans une première partie, nous évaluons le pourcentage de solutions faisables créées par chaque méthode par rapport au nombre total de solutions générées. Pour cela, nous générons des fichiers de données avec plus ou moins de marge (coefficient de mou). Plus le mou est grand, plus il y a de chances de trouver des solutions faisables.

Dans la deuxième partie, nous comparons la qualité des meilleures solutions faisables générées par les différentes méta-heuristiques. Sauf si une méthode n’arrive pas à trouver le nombre demandé de solutions faisables au bout d’un temps limité, on génère le même nombre de solutions faisables pour chaque méthode.

4.4.1 Pourcentage de faisabilité

Dans cette première partie, nous évaluons le pourcentage de permutations faisables générées par chacune des quatre méthodes au bout de 1000 solutions générées. Nous utilisons des jeux de données avec des temps opératoires de la première famille, et des pénalités de la troisième famille. Selon le mou utilisé, nous distinguons quatre catégories de fichiers de données : (10, 20, 40, 50, 80). Pour tous les fichiers de données utilisés, on a le nombre de job égal à dix, et le nombre de machines égal à cinq. On exécute les programmes trois fois pour chaque fichier et on donne le résultat moyen. Dans les deux types d’algorithmes génétiques testés, nous avons pris une taille de population égale à 30, et une probabilité de mutation de 0,2. Concernant l’algorithme génétique simple, la probabilité de recopier un parent est de 0,33. Les résultats sont donnés par les tableaux suivants :

Mou Random SA AGE AGS

10 0,93 % 2,43 % 17,9% 45,63 %

20 18,93 % 34,86 % 69,53% 69,63 %

40 8,5 % 20,13 % 53,83% 72,23 %

50 9,26 % 20,8 % 61,76% 71 %

80 61,03% 83,4 % 89,9% 91,03 %

Figure 4.3 degré de faisabilité des solutions.

Dans le tableau précédent, Random désigne la génération aléatoire, SA le recuit simulé,

AGS l’algorithme génétique simple, et AGE pour l’algorithme génétique élitiste. Nous pouvons constater que l’algorithme génétique est clairement meilleur que le recuit simulé et la génération aléatoire du point de vue du pourcentage de création de solutions faisables. L’algorithme génétique parcourt, donc, l’espace de solution d’une manière plus intelligente que ne le fait le recuit simulé (en outre, on a vérifié de visu sur les déroulements numériques que les solutions générées par AGS et de l’AGE étaient diversifiées). On a donc plus de

l’AGE.

4.4.2 Qualité des solutions trouvées

Dans cette deuxième partie des tests sur les métaheuristiques, nous évaluons la qualité des solutions trouvées par chacune des métaheuristiques. Pour cela, nous générons quatre fichiers de données tel que les durées d’exécutions des jobs sur les machines appartiennent à la première famille (pour les expériences faites pour le mémoire provisoire), et les pénalités appartiennent à la troisième famille (idem). Le nombre de jobs est dix, et le nombre de machines est cinq. Nous arrêtons l’exécution lorsqu’on a créé 300 solutions faisables, ou bien si l’on arrive à une certaine limite de temps (génération de 30000 permutations, faisables et infaisables confondues). Nous répétons l’exécution de chaque méthode cinq fois pour chaque instance, et nous retenons à chaque fois, et à chaque instant, la meilleure solution.

Les résultats sont résumés sur les figures suivantes.

Instance 1 : les meilleures solutions sont trouvées par l’AGE et SA pour une somme de pénalité d’avance retard SPAR égale à 3819, ce qui donne un gain de 0.01% par rapport à la solution trouvée par l’AGS (3891). Il faut noter toutefois que SA ne trouve pas 300 individus faisables.

Instance 2 : la meilleure solution est trouvée par SA (SPAR = 1395), mais celle trouvée par AGE est très proche (1396). Le gain par rapport à AGS est de 0.01% (SPAR = 1418).

Instance 3 : la meilleure solution est trouvée par AGE (SPAR = 1559), avec un gain de 0.01% par rapport à SA, et de 0.05% par rapport à AGS.

Instance4 : la meilleure solution est trouvée par AGS (SPAR = 2064), avec un gain de 0.01% par rapport à SA, et de 0.05% par rapport à AGE.

Les figures suivantes illustrent les résultats obtenus.

0 1000 2000 3000 4000 5000 6000 1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 Générateur de solutions V a le u rs SA AGS AGE

1250 1300 1350 1400 1450 1500 1550 1600 1650 1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 Générateur de solutions V a le u rs SA AGS AGE

Figure 4.5 SA Vs AGS Vs AGE ; instance 2.

0 500 1000 1500 2000 2500 1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 Générateur de solutions V a le u rs SA AGS AGE

Figure 4.6 SA Vs AGS Vs AGE ; instance 3.

Instance 4 0 1000 2000 3000 4000 5000 6000 1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 Générateur de solutions V a le u rs SA AGS AGE

une qui est franchement meilleure qu’une autre. Toutefois, nous n’avons pas menés assez d’expériences (contrainte de temps) pour affirmer une telle conclusion. Nous pensons que si on mène des expériences plus longtemps, nous pourrons probablement les départager. Néanmoins l’objectif de la thèse était de montrer que l’on peut traiter, en un temps raisonnable, des problèmes d’ordonnancement pour organiser des négociations dans la chaîne logistique en croisant une métaheuristique et une technique de PERT COUT et cet objectif est atteint.

4.4.3 Evaluation des opérateurs génétiques

Dans cette section, nous mettrons les résultats de la comparaison des opérateurs développés pour le schéma élitiste de l’algorithme génétique (nouvelle expérience à venir).

4.5 Conclusion

Nous avons menés dans ce chapitre des expériences pour évaluer les méthodes de résolution proposées pour les problèmes de juste à temps définis dans les chapitres précédents. Nous n’avons pas pu mener toutes les expériences nécessaires pour pouvoir juger d’une manière irréfutable la qualité de chaque méthode. Des expériences qui ont pu être menées, il en ressort que :

1. L’évaluation du Pert coût nous permet d’avoir l’assurance de trouver les solutions optimales par rapport à une séquence donnée de traitement des travaux. Ceci est fait en un temps relativement court, ce qui est pratique pour une utilisation en milieu réel. En outre, notre méthode de calcul du pas de compression a permis d’avoir un nombre d’itérations du Pert coût relativement petit et très loin de la borne supérieure définie la section 3.3.4.

2. L’utilisation des métaheuristiques nous permet de parcourir l’espace de solutions d’une manière intelligente. Les deux algorithmes génétiques utilisés donnent plus de chances de trouver des solutions faisables par rapport au recuit simulé, mais ceci n’assure pas de trouver de meilleures solutions. En effet, les trois méthodes testées se valent.

Il serait très intéressant de poursuivre la série des expériences sur les métaheuristiques avec des temps d’exécutions plus longs, et sur les différents types de données que l’on peut générer grâce à notre méthode de génération de données décrite dans la première section du présent chapitre.