


Le 28 avril 1998
Professeur responsable :
M Michel Van Caneghem
Le projet ............................................................................................................................................................................ 2
Présentation de l’ACS............................................................................................................................................... 3
Les déplacements :................................................................................................................................................... 3
Les phéromones :........................................................................................................................................................ 4
Initialement :................................................................................................................................................................ 4
Localement :................................................................................................................................................................. 4
Globalement :............................................................................................................................................................... 4
L’algorithme............................................................................................................................................................... 5
Test de minimalité, distance et précision................................................................................................ 5
Les Résultats.................................................................................................................................................................. 6
Expérimentation Reflexion ................................................................................................................................. 7
Le
code ............................................................................................................................................................................... 8
A la fin de notre cours de programmation complexité, nous avons eu à faire un tp nous permettant de mettre en application les théories acquises. Ce projet consiste à faire parcourir l’ensemble des villes à un voyageur de commerce en utilisant les mœurs d’une colonie de fourmis.
Ce projet s’est fait en plusieurs étapes. Il nous à fallu dans un premier temps comprendre les mécanismes de l’algorithme ACS (ant colony system).
La biocybernétique des fourmis est de minimiser le chemin lors de leurs quêtes de nourriture. Pour se faire-elles déposent une phéromone lors des déplacement :
Il y a deux types de phéromone : une phéromone locale qui sera déposée à chaque déplacement et une phéromone globale qu’une fourmi virtuelle déposera sur le chemin le plus court.
Les déplacements sont choisis suivant une probabilité q. Nous choisissons aléatoirement un nombre que nous comparons avec q0 où q0 est le résultat de l’accumulation d’expérimentation
Si q £ q0 nous maximisons la fonction rech(vk,u) ou vk est la ville où se trouve la
fourmi et u les villes où elle n’est pas encore allée.
Nous définissons rech() par :

Sinon Nous définissons les probabilités pk(u)

comme suit :
En pratique le dénominateur étant constant nous calculons p1k (u)

Nous choisissons aléatoirement un nombre q1 compris entre 0 et p1k(max.) avec max. la dernière ville non visitée.

Les phéromones sont déposées localement et globalement . Localement une quantité de phéromone sera ajoutée à chaque déplacement c’est à dire entre la ville d’où nous venons et la ville où nous allons et inversement car nous avons choisi l’émission d’une phéromone bidirectionnelle. Globalement une fourmi virtuelle parcourra le chemin mémorisé le plus court afin d’y déposer une quantité de phéromone globale ( pour simplifier nous n’avons pas tenu compte de l’évaporation des phéromones au cours du temps )
vk est la ville où se trouve la fourmi et u la ville où elle va.
t0 est la phéromone de base définie plus loin
Lmeilleur est le chemin le plus court trouvé
Lglouton est la distance calculée par l’algorithme du glouton
N est le nombre de ville
a est un coefficient de communication ... (!!)
r est une constante de persistance 1-r une constante d’évaporation de la phéromone par rapport au nombre de passage nous l’avons fixé à 0,1

![]()

Chargement des données tsp
Calcul des distances
Choix aléatoire d’une ville de départ pour le glouton
Calcul du glouton
Initialisation de la phéromone dans chacune des villes
Choix
des villes de départ parmi N, pour les fourmis M fourmis, 1 fourmi par ville
une redistribution à chaque itération pourrait être envisagé ...
For
iter :=1 to NbIter
For u :=1 to N
For vk :=1 to M
Choix de la prochaine ville pour la fourmi vk
Dépôt de la trace locale
End
End
Choix de la fourmi ayant pacouru le plus court chemin dans cette itération
Test de minimalité avec cette fourmi et la turbofourmi
Dépôt de la trace globale avec la turbofourmi
End
Turbofourmi : fourmi virtuelle ayant courru le plus court chemin sur l’ensemble des iterations
NbIter est une constante à partir de laquelle nous estimons la solution trouvé satisfaisante.
Les résultats sont dans certains cas sensiblement différents selon la précision choisie.
Nous avons eu besoin de comparer nos résultats entre eux mais surtout avec ceux déjà trouvés sur ce type de problème.
Notre algorithme calcule dans un premier temps les distances entre chaque ville en entier et en réel. Nous avons choisi de calculer les distances suivant la norme euclidienne.
Dx=tabx[v]-tabx[u];
Dy=taby[v]-taby[u];
Dist(u,v)=sqrt(Dx*Dx+Dy*Dy);
Pour les distances entières nous avons pris comme convention :
Si ( Dist(u,v)-(long)Dist(u,v) > 0,5 )
Alors Dist(u,v)=(long)Dist(u,v)+1
Sinon Dist(u,v)=(long)Dist(u,v)
Le test de minimalité intervient lorsque nous cherchons la distance minimale nous avons choisi de faire ce test en réel pour favoriser les fourmis aventurières en effet il peut exister des chemins différents mais ayant la même distance entière que le chemin minimum.
Attention : Pour la distance du chemin en entier nous avons conservé le test de minimalité en réel. Le turbochemin est recalculé en entier à la fin.
Ces résultats ont été obtenus avec un colonie proportionnelle à 50% du nombre de ville. Q0=0.94 a=r=0.1

eil51.tsp
D :429.117931179311793 Dint : 426 Iter : 198
Chemin :
21 16 50 34 30 9 49 10 39 33 45 15 44 42 19 40 41 13 25 14 24 43 7 48 6 27 51 46
12 47 18 4 17 37 5 38 11 32 1 22 8 26 31 28 3 36 35 20 2
eil76.tsp
D :
544.369053690536905 Dint : 538 Iter :1569
Chemin :
46 34 67 26 76 75 4 68 6 51 17 40 12 58 72 39 9 32 44 3 16 63 33 1 73 62 22 64 42 43 41 56 23 49 24 18 50 25 55 31 10 38 65 66 11 59 14 53 7 35 8 19 54 13 57 15 5 37 20 70 60 71 69 36 47 21 61 28 74 2 30 48 29 45 27 52
kprA100.tsp
D : 21285.443184431844318 Dint : 21282 Iter :888
Chemin :
33 37 5 52 78 96 39 30 48 100 41 71 14 3 43 46 29 34 83 55 7 9 57 20 12 27 86 35 62 60 77 23 98 91 45 32 11 15 17 59 74 21 72 10 84 36 99 38 24 18 79 53 88 16 94 22 70 66 26 65 4 97 56 80 31 89 42 8 92 75 19 90 49 6 63 1 47 93 28 67 58 61 51 87 25 81 69 64 40 54 2 44 50 73 68 85 82 95 13 76
d198.tsp
D : 15894.937969379693796 Dint : 15864 Iter :1408
Chemin :
112 106 107 111 110 109 108 167 168 182 183 181 177 175 176 173 174 198 197 196 195 194 179 178 180 184 185 187 186 193 192 191 188 189 190 171 128 170 127 129 137 172 166 165 164 163 151 150 162 152 149 148 153 161 160 159 158 157 156 155 154 139 138 134 140 142 147 146 145 144 143 141 136 135 133 132 131 130 126 125 169 124 123 120 119 118 117 121 122 116 115 104 103 102 93 94 101 95 96 90 89 97 98 88 83 82 75 62 53 46 36 37 32 31 38 45 54 61 66 74 70 67 60 55 44 56 59 68 72 73 84 87 99 100 86 85 71 69 58 57 43 42 41 13 12 11 10 9 8 5 4 3 6 7 2 1 40 14 15 16 17 18 19 20 21 24 25 26 27 22 23 29 30 28 33 34 35 39 47 51 52 65 81 76 77 78 64 50 48 49 63 79 80 91 92 105 114 113
Détermination du nombre d’itérations est étroitement lié à la saturation en phéromone d’une ville. Nous avons constaté qu’un grand nombre d’itérations n’apportait pas toujours de meilleur résultat. En effet si nous prenons 1 fourmi et un nombre d’itération infinie il y a peu de chance d’obtenir de meilleurs résultats qu’avec N=M fourmis et un nombre fini d’itération ce dernier dépendant alors du nombre de villes.
Détermination du nombre de fourmis quand nous avons un nombre faible de fourmis la saturation en phéromone a lieu rapidement sur certaines portions du graphe tandis que d’autres sont à peine explorées Il faut trouver un équilibre entre le nombre de fourmis et le temps mis pour chaque itération. Une nouvelle colonie pourrait être envisagé à chaque itération. Pour trouver en peu d’itérations une solution optimale nous choisirons de prendre Nb fourmis = Nb villes.
Détermination du chemin minimum par le glouton est primordial dans l’évolution de trace de phéromone en effet il permet de déterminer les phéromones initiales plus la distance du glouton est proche de la distance minimale et plus la situation évolue rapidement.
Choix des coefficients a r b : nous n’avons pas fait varier ces valeurs car leurs implications sur la quantité de phéromone nous ont paru bien difficile à interpréter malgré les publications de Doringo, Gambardella traitant du sujet. L’évaporation des phéromones au cours du temps n’a pas été implanté; r peut pallier cette absence puisqu’il traduit la persistance au cours des passages .
Choix de q0 seuil de probabilité pour les déplacements. Il semble avoir une influence marginale lorsqu’il varie peu cela se traduit par un vagabondage plus ou moins important en effet si q0 diminue les fourmis ne choisiront pas forcément le chemin le plus emprunté ou la ville la plus proche.
Nous n’avons pas utilisé la librairie TSP car nous avions déjà fait un système de récupération de donnée.