vers Labo Algo
Labo Algo

Les méthodes de résolution du problème du voyageur de commerce

Algorithme de la colonie de fourmis (ant colony)

Cette méthode a été inventée en 1996 par Marco Dorigo de L'Université Libre de Bruxelles.
L'idée initiale provient de l'observation des fourmis. Celles-ci ont la capacité de trouver le chemin le plus court entre leur nid et une source de nourriture en contournant les obstacles qui jonchent leur chemin.

Vous pouvez faire l'expérience suivante : Vous avez remarqué que les fourmis se déplacent "en ligne", suivant le chemin des fourmis précédentes. Placez maintenant un obstacle sur cette ligne (une pierre ou une grosse brindille, par exemple), de manière à ce que le contournement de l'obnstacle par un côté soit nettement plus court que par l'autre. Au bout d'un certain temps vous verrez que toutes les fourmis contourneront l'obstacle par le côté le plus court.

Le phénomène s'explique de la manière suivante : les fourmis déposent en marchant des marqueurs chimiques appelés phéromones. Les autres fourmis suivent le chemin tracé par ces phéromones. Plus un chemin est marqué, plus elles ont tendance à le suivre. Lorsque l'on pose l'obstacle, le chemin de phéromones est coupé, et les fourmis choisissent au hasard l'un ou l'autre côté pour contourner l'obstacle.

Comme un chemin est plus court, plus de fourmis auront franchi l'obstacle en passant par ce côté. Par exemple, sur 6 fourmis, 3 fourmis pourront être passées par le côté court alors que les 3 fourmis ayant passé par le côté long n'auront pas encore fini de contourner l'obstacle. Une fourmi arrivant en sens inverse verra donc plus de phéromone sur le chemin qui passe par le côté court, et prendra donc ce chemin.

contournement de l'obstacle

Les fourmis rouge ont pris un plus court chemin, plus ont franchi l'obstacles, donc plus de phéromones ont été déposées du côté rouge que du côté noir. La fourmi bleue venant de l'autre sens choisira donc le côté rouge.

En transposant informatiquement cette méthode et en l'adaptant au PVC, on obtient l'algorithme suivant (proposé par Marco Dorigo pour son logiciel ACS) :

Il faut faire des essais pour déterminer les valeurs optimales des différentes constantes (nombre de fourmis, alpha, K...)

En termes de performances cet algorithme est comparable à un algorithme génetique.

vers Labo Algo
Labo Algo

Alexandre Aupetit, Avril 2004