Voyageur de commerce et solution exacte uteurs :. Védrine,. Monsuez e 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 est un problème bien connu en recherche opérationnelle sous le nom de «Traveling Salesman Problem» ou TSP. e problème est NP-omplet. iverses 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). e problème a donné lieu à beaucoup de recherches et a fourni pas mal de résultats en algorithmique et en recherche opérationnelle. Scénario : Vous vous trouvez dans la situation où votre supérieur vous demande : 1. nalysez le problème, sachant qu il est souhaitable d avoir la solution optimale 2. Réalisez un démonstrateur pour convaincre tel client que nous sommes capables de traiter ce problème et/ou de lui fournir une première solution. 3. Si le client est convaincu, vous aurez vraisemblablement des ressources supplémentaires pour transformer le démonstrateur en outil afin de le faire rentrer de manière opérationnelle chez le client. Votre objectif est d une part d arriver à finaliser le premier démonstrateur, tout en sachant que les personnes qui transformeront l outil seront des spécialistes de leur domaine et qu ils ne pourront pas connaître l ensemble de l outil pour faire leurs améliorations. 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. e 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é. 1/6
Étape 1 : nalyse du problème Question : éterminez l architecture qui permet de faire évoluer les trois phases fonctionnelles (acquisition, algorithmique et affichage) indépendamment les unes des autres. Question : n 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, 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. ertaines 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. e 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 ranch & ound permettant une résolution exacte du problème du voyageur de commerce. ette présentation peut être sautée par le lecteur dans un premier temps. Vous pouvez y revenir lorsque vous implanterez les algorithmes. Nous présentons deux algorithmes différents. Noter que pour l étape 2, vous pouvez implanter un algorithme de recherche de type ranch & ound, comme un algorithme plus approché que vous aurez fait ou trouvé sur le Web. ans ce dernier cas, vous pouvez consacrer l étape 3 à remplacer l algorithme approché par un algorithme de recherche assez poussé parmi les deux que nous vous présentons. Représentation des villes Nous représentons l ensemble des villes placées sur un plan par une matrice de coût. ette matrice stocke la distance entre deux points. H G J I matrice de coût... I J... I J 2 4 7... 7 6 2 2 6... 7 7 4 2 4... 5 5 7 6 4... 3 5.................. 7 7 5 3... 2 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). 2/6
L algorithme d insertion de nœud peut être bien optimisé pour une distance euclidienne, alors que l algorithme d insertion d arc fonctionne bien sans cette contrainte. lgorithmes de type ranch & ound (séparation-évaluation) Les algorithmes de type ranch & ound (séparation-évaluation) cherchent généralement à minimiser une fonction de coût. La fonction de coût dans notre cas est la fonction qui à un trajet associe sa la longueur totale. La partie ranch ou séparation est une méthode de parcourt de l espace des solutions. ette partie porte ce nom, car le parcourt est généralement un parcourt d arbre en profondeur d abord pour avoir rapidement. À chaque nœud de l arbre s offrent alors plusieurs possibilités. Le branchement consiste à choisir une de ces possibilités, généralement celle qui a le plus de chance d être choisie : l aspect «plus de chance» est en liaison avec la partie ound ou évaluation. La partie ound ou évaluation donne une borne minimale pour le meilleur trajet (au sens de la fonction de coût), validant les décisions (branchements ou séparations) déjà effectuées : ce meilleur trajet aura alors une fonction de coût supérieure à cette borne. L algorithme effectue un certain nombre de décisions jusqu à avoir un chemin complet. e chemin a alors une fonction de coût que nous stockerons dans l max. Nous savons que la meilleure fonction de coût pour toutes les sous-branches d un nœud est comprise entre l évaluation de la borne minimale du nœud et l max. insi si l max est supérieur à cette borne minimale, alors nous n avons aucune chance de trouver une meilleure fonction de coût dans tous les descendants du nœud. Il est inutile d explorer dans cette partie ce qui peut faire gagner énormément de temps. branch 1 l 1 min evaluation part = lower bound branch 1 l 1 min branch 1 l 1 min inutile d'explorer si l max l 5 min branch 2 l 2 min branch 2 l 2 min inutile d'explorer branch si l max l 4 min 4 branch 2 l 2 min branch 5 l 4 min branch 3 l 3 min = l max priori l 3 min l2 min l1 min branch 3 l 3 min l 4 min branch 3 l 3 min exploration si l max > l 5 min l max peut alors diminuer exploration si l max > l 4 min l max peut alors diminuer si une meilleure fonction de coût est découverte Nous concrétisons cet algorithme de deux manières différentes pour résoudre le problème du voyageur de commerce. 3/6
lgorithme d insertion de nœuds L algorithme par insertion de nœuds procède en partant d un trajet de longueur 3 et en insérant progressivement des nœuds dans ce trajet. La première décision (branch) consiste à choisir le trajet initial de longueur 3. Étant donné que les points se trouveront dans cet ordre dans le trajet optimal, il n y a pas lieu de revenir sur cette décision. Les 3 points initiaux ont donc tout intérêt à se trouver éloignés les uns des autres. Les décisions suivantes consistent à choisir un nœud en même temps que son emplacement d insertion. La borne minimale de coût peut être la longueur du trajet déjà construit. ette borne est bien minimale si nous avons affaire à une distance euclidienne. L algorithme se comporte de la manière suivante sur un petit exemple, ne comparant que 10 trajets complets au lieu des (6-1)!/2 = 60 possibilités. = 27 = 19 = 21 = 30, abandonné si l max 30 = 27 = 26 = 24 trajet final = 23 = 25 = 21, trajet conservé = 25 = 24 finalement ces 2 possibilités et les 3 autres sont abandonnées = 26 = 28 = 25 4/6
lgorithme d insertion d arc et algorithme est généralement plus efficace que le précédent. Il détermine si des arcs peuvent faire partie du trajet optimal. La décision (branchement ou séparation) est tel arc appartient au trajet optimal ou tel arc n y appartient pas. La borne minimale de coût est un peu plus complexe à calculer. lle contient la somme des longueurs des arcs insérés + min({d(x,y) / y n'est pas une destination d'arc présent}) = soustrait des x non en origine d' un arc présent lignes + ce qui reste à soustraire des colonnes. Il est possible d améliorer cette fonction de coût, sachant qu elle fonctionne aussi bien pour des distances euclidiennes que d autres distances. On soustrait de chaque ligne l'élément minimal.idem pour les colonnes valuation minimale = ce qui a été soustrait + Σ longueurs des arcs sélectionnés matrice de coût 4 4 8 6 3 4 5 5 6 2 4 5 5 2 3 8 5 5 3 4 6 6 2 3 4 3 2 3 4 4 = 16 1 1 4 3 0 1 3 3 4 0 1 3 2 0 1 4 2 2 0 1 3 4 0 0 2 0 0 1 1 2 = 17 1 1 4 3 0 (1) 1 3 3 4 0 (2) 2 2 3 1 3 3 4 0 (1) 1 3 2 0 1 3 2 0 (1) 1 3 2 0 (1) 1 4 2 2 0 4 2 2 0 (2) 4 2 2 0 (1) 1 3 4 0 0 3 4 0 (1) 0 (1) 3 4 0 (1) 0 (1) 2 0 0 1 1 2 0 (0) 0 (2) 1 1 2 0 (1) 0 (1) 1 1 2 = exclus = 17 = 19 Séparation : On essaye de choisir si un couple n'est pas dans le chemin optimal (estimer de combien augmentera la fonction de coût 1 1 4 3 2 2 3 3 2 0 = ce qui peut être soustrait) 1 3 3 4 0 1 3 2 0 2 2 0 l max = = 20 ncore des 1 3 2 0 1 4 2 2 0 4 0 0 branches 4 2 2 0 1 3 4 0 0 1 1 2 potentielles avec l 3 4 0 0 2 0 0 1 1 2 max = 20 0 0 1 1 2 = 21 = 22 2 2 3 0 (0) 0 (0) 1 1 3 2 0 1 3 2 0 (1) 1 2 0 (1) 4 2 2 0 4 2 2 0 (2) 0 (1) 2 0 (0) 3 4 0 0 3 4 0 (0) 0 (0) 2 0 (0) 0 (0) 0 0 0 1 1 2 0 (1) 0 (2) 1 1 2 0 (0) 0 (0) 1 invalidé par le 0 2 nd l invalidé par le max inutile, car dans 2 nd l max ce cas, = 22 0 0 0 2 1 3 2 2 0 = 20 3 4 0 0 0 = 20 0 0 1 1 0 (0) 0 (0) 0 (0) 0 (0) 0 0 0 (1) 2 1 l max = = 22 0 (4) 1 0 1 3 4 0 (0) 0 (0) 3 0 (0) 0 (0) 3 0 0 0 (0) 0 (2) 1 1 5/6
Étape 2 : Réalisation du démonstrateur Question : 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 : éfinissez et implantez la notion de trajet pour le voyageur de commerce. Question : Implantez un algorithme exact de type ranch & ound ou un algorithme approché pour la résolution du problème. Question : Visualisez et estimez le temps que vous avez passé pour atteindre ce premier objectif. onservez l ensemble des fichiers du projet. Étape 3 : mé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. Une amélioration naturelle est de faire en sorte que l algorithmique de recherche de trajet ranch & ound traite de plus en plus de villes dans votre plan. L implantation d un algorithme de type exact est conseillée pour les personnes qui ont implanté un algorithme approché à l étape 2. Vous pouvez également améliorer l acquisition des données et faire en sorte qu elle s effectue sur des notions plus naturelles pour un utilisateur externe au projet. ref, n hésitez pas à laisser libre court à votre imagination, tout en restant dans le domaine du réalisable dans le temps que vous avez décidé de consacrer au projet. 6/6