Année 2007-2008 Projet informatique «Voyageur de commerce» Résolution approchée par algorithme génétique du problème du voyageur de commerce B. Monsuez
Projet informatique «Voyageur de commerce» Résolution approchée par algorithme génétique du problème du voyageur de commerce But du projet Ce projet consiste à réaliser un outil capable de trouver le plus court trajet pour un commercial qui doit visiter n villes, les n villes étant placées sur un plan. une solution parmi les plus courtes C est un problème bien connu en recherche opérationnelle sous le nom de «Traveling Salesman Problem» ou TSP. Ce problème est NP-Complet. Diverses approches ont été proposées pour les résoudre : des approches exactes (l outil retourne effectivement le plus court trajet) et des approches approchées (l outil retourne un trajet proche du plus court). Ce problème a donné lieu à beaucoup de recherches et a fourni pas mal de résultats en algorithmique et en recherche opérationnelle. Tâches demandées Vous vous trouvez dans la situation où vous devez réaliser une analyse quant à la faisabilité du logiciel, proposer une architecture de ce logiciel et ensuite implanter un démonstrateur reposant sur cette analyse. 1. Analysez le problème, sachant qu il est souhaitable d avoir une solution évolutive, permettant d ajouter au fur et à mesure des fonctionnalités au logiciel, notamment progressivement étendre les règles du jeu. Il est notamment demandé de faire : a. Une analyse d usage du logiciel (use case analysis) b. Une analyse fonctionnelle du logiciel c. Une architecture gros grains du logiciel 2. Réalisez un démonstrateur pour valider l approche et les choix techniques et s assurer que ces derniers sont pertinents. Dans le cas d une approche évolutive, il sera possible tout d abord d implanter les premières phases (par exemple une stratégie de mutation et de sélection relativement simple ) et ensuite d ajouter les éléments supplémentaires (stratégie plus 1
avancée, évolution des meilleurs solutions à l'écran, critère d'arrêt). Il est notamment demandé de faire : a. Une description du modèle objet précis (par ex. sous UML) b. Eventuellement une liste des «design pattern» utilisés s il y a recours à des «design pattern». c. Une implantation documentée du logiciel. Pour le projet, vous aurez à réaliser les étapes 1 et 2 et à mettre en place et réaliser un axe d amélioration pour l étape 3. Ce projet peut alors être décomposé en 3 phases fonctionnelles : la première phase correspond à l acquisition des données soit au fait de représenter n villes dans un plan, la seconde phase correspond à la résolution de l algorithmique soit la recherche du trajet optimal, la troisième phase correspond à afficher le trajet optimal trouvé. Étape 1 : Analyse du problème Question A : Déterminez l architecture qui permet de faire évoluer les trois phases fonctionnelles (acquisition, algorithmique et affichage) indépendamment les unes des autres. Question B : En pensant aux états dans lequel se trouve votre système (avant l acquisition des données, après l acquisition et avant la résolution, après la résolution sachant que l affichage ne modifie pas le système), définissez l interface exportée par chaque partie du système pour effectuer les trois phases fonctionnelles. Pour la question B, une des personnes du projet peut travailler à l aide de diagrammes UML (c est simplement une option parmi d autres), pendant que les autres réfléchissent à ce qui peut bouger entre les différentes phases et comment ce sera exploité. Il faut voir que lors de l évolution de votre projet, l acquisition des données pourra être partiellement découplée de la recherche du meilleur trajet, et qu il est assez dur d anticiper sur le couplage acquisition/résolution. Certaines structures de données correspondant au résultat de l acquisition des n villes dans le plan sont plus adéquates que d autres pour l algorithmique. Ce couplage n est pas forcément visible au niveau de l interface que vous définirez. L analyse architecturale du projet étant terminée, voici une présentation succincte d algorithmes de type Algorithme Génétique permettant une résolution approchée du problème du voyageur de commerce. Représentation des villes 2
Nous représentons l ensemble des villes placées sur un plan par une matrice de coût. Cette matrice stocke la distance entre deux points. A H B F C G J E D I matrice de coût A B C D... I J A 2 4 7... 7 6 B 2 2 6... 7 7 C 4 2 4... 5 5 D 7 6 4... 3 5..................... I 7 7 5 3... 2 J 6 7 5 5... 2 La matrice de coût peut être symétrique ou non : Si elle est symétrique, cela signifie que d(x,y) = d(y,x) quelles que soient les villes concernées. La matrice de coût peut représenter une distance euclidienne, reflétant la propriété d(x,y)+d(y,z) d(x,z). Fonctionnement d un algorithme génétique Avant de pouvoir utiliser un algorithme générique, il est nécessaire de pouvoir définir pour le problème donné : Une méthode permettant de représenter la solution sous une forme manipulable par la machine, la plupart du temps, il s agit d un vecteur de valeurs booléennes. Une fonction permettant de calculer la qualité d une solution. 1. Initialisation Un ensemble de plusieurs solutions est engendré de manière aléatoire. Cet ensemble constitue ce qui est appelé la population initiale. La taille de la population initiale dépend de la nature du problème et surtout de l existence de nombreux optima locaux. Typiquement, les populations peuvent contenir plusieurs milliers de solution possible. Habituellement, la population initiale est engendrée de manière aléatoire afin de couvrir complètement le domaine des solutions possibles. 2. Sélection A une époque donnée, un échantillon de la population existante est sélectionné afin d engendre la nouvelle génération. La sélection s effectue selon un processus de sélection des solutions ayant la meilleure adéquation. Plusieurs fonction de sélection sont possibles, la plus simple consisté à sélectionner les solutions ayant la meilleur adéquation, d autres fonctions stochastiques de sélections sont moins sélectives et ont pour but de préserver des solutions ayant une «médiocre adéquation» afin d éviter une convergence vers un optimum local. 3. Reproduction L étape suivante consiste à construire un nouvel ensemble de solutions à partie de l ensemble des solutions venant d être sélectionné. Des nouvelles solutions peuvent être engendrées à partir de solutions courantes par deux techniques, soit par le croisement d une paire de solutions, soit par la mutation de deux solutions. a. Croisement 3
Une paire de solutions parmi les solutions précédemment est sélectionnée. Chacune des solutions est en fait un vecteur de bits, et,. Nous choisissons au hasard un point de coupure tel que et. Un premier descendant des solutions, et, est construit en concaténant aux premiers bits de la première solutions les derniers bits de la seconde solution. De même un deuxième descendant en concaténant aux premiers bits de la seconde solutions les derniers bits de la première solution. Au final la paire de solutions s écrit comme suit :, et, b. Mutation La mutation standard dans le cadre d un algorithme génétique consiste en la probabilité qu un bit appartenant à une séquence de bits représentant une solution possible puisse changer d état, c est-àdire passer de zéro à un ou passer de un à zéro. La méthode standard consiste à générer une variable aléatoire pour chacun des bits dans une séquence. Cette variable aléatoire va permettre de déterminer si le bit doit être modifier ou non. 4. Terminaison Le processus générationnel continue tant qu une condition de terminaison n est pas atteinte. Les conditions de terminaison sont plus diverses et parmi les conditions de terminaisons les plus courantes nous pouvons citer : Une solution vérifie un critère d adéquation Le nombre maximal d itérations est atteint Le temps d exécution maximal est atteint La qualité des meilleures solutions a atteint un plateau et les itérations successives ne semblent plus produire de meilleurs résultats. Bien entendu, ces conditions de terminaisons peuvent être combinées entre elles. 5. Description de l algorithme en pseudo-code Sélection la population initiale Repeat Sélectionne une partie de la population en fonction de leur adéquation Sélectionne les paires des meilleures solutions pour construire de nouvelles solutions. Produit une nouvelle génération en combinant les paires des meilleures solutions et en introduisant des mutations. 4
Until la condition de terminaison est vérifiée Étape 2 : Réalisation du démonstrateur Question C : Implanter une façon d effectuer l acquisition des données pour un démonstrateur. Il est possible de stocker le résultat dans une matrice de coût, mais vous pouvez utiliser tout autre représentation. Question D : Définissez et implantez la notion de trajet pour le voyageur de commerce. Définissez les fonctions de fitness associés à la notion de trajet Question E : Implantez un algorithme génétique manipulant des populations formées de trajet pour un voyageur de commerce. Question F : Evaluez les performances de l algorithme pour un nombre conséquent de villes. Question G : Visualisez et estimez le temps que vous avez passé pour atteindre ce premier objectif. Conservez l ensemble des fichiers du projet. Étape 3 : Amélioration de l outil Vous avez le choix pour améliorer votre outil, mais n oubliez pas de conserver le résultat de l étape 2, il est possible notamment de modifier la fonction de fitness, les croisements de population, etc. Pour ce faire, n hésitez pas à laisser libre court à votre imagination et à consulter les références mises sur la page WEB associée à ce projet, tout en restant dans le domaine du réalisable dans le temps que vous avez décidé de consacrer au projet. 5