Professional Documents
Culture Documents
TSP Problem
TSP Problem
Département d’Informatique
Master 1:SIAD
Module: Méta-Heuristiques
Introduction
I. Colonie des fourmis
II. Application Réel de cette Algorithme
III implémentaion de l’algorithme
Conclusion (Les langages programmtions utilises )
Bibliographie
2
INTRODUCTION
Les algorithmes de colonies de fourmis (en anglais : ant colony optimization, ou ACO)
sont des algorithmes inspirés du comportement des fourmis, ou d'autres espèces
formant un superorganisme, et qui constituent une famille de métaheuristiques
d’optimisation.
Initialement proposé par Marco Dorigo et al. dans les années 19901,2, pour la recherche
de chemins optimaux dans un graphe, le premier algorithme s’inspire du comportement
des fourmis recherchant un chemin entre leur colonie et une source de nourriture. L’idée
originale s'est depuis diversifiée pour résoudre une classe plus large de problèmes et
plusieurs algorithmes ont vu le jour, s’inspirant de divers aspects du comportement des
fourmis.[1]
3
En anglais, le terme consacré à la principale classe d’algorithme est « Ant Colony
Optimisation » (ACO). Les spécialistes réservent ce terme à un type particulier
d'algorithme. Il existe cependant plusieurs familles de méthodes s'inspirant du
comportement des fourmis. En français, ces différentes approches sont regroupées
sous les termes : « algorithmes de colonies de fourmis », « optimisation par colonies
de fourmis », « fourmis artificielles » ou diverses combinaisons de ces variantes. [1]
4
Application Réel de cette Algorithme
Les variantes combinatoires peuvent avoir un avantage, par rapport aux autres
métaheuristiques, dans le cas où le graphe étudié peut changer dynamiquement
au cours de l’exécution : la colonie de fourmis s’adaptera de façon relativement
flexible aux changements. Ceci semble être intéressant pour le routage réseau.
5
II.2.Implémentation de cette algorithme en python:
Étape 1 :
Intialization important des parameters :
num_ants = 20
num_iterations = 100
alpha = 8
beta = 10
rho = 0.9
Q=1
6
Étape 2:
Sélectionnez Ville/Nœud au départ :
Entrez les coordonnées X,Y pour chaque ville
7
Étape 3:
Calculer la distance entre chaque ville [2]
8
Étape 3:
Selection de ville de départ
Étape 4:
Construire une chemin la ville actuelle à la ville non-visitée
9
next_city = np.random.choice(list(unvisited_cities), p=probabilities )
Cette ligne de code sélectionne la prochaine ville à visiter pour une fourmi donnée en utilisant
les probabilités calculées précédemment. La fonction `np.random.choice` de la bibliothèque
NumPy est utilisée pour choisir une ville parmi la liste des villes non visitées `unvisited_cities`.
Les probabilités de cette ville sont données par la liste `probabilités` calculées précédemment.
La clause `p=probabilities` spécifie à `np.random.choice` d'utiliser les probabilités pour
effectuer le choix. Ceci garantit que les personnes ne sont pas sélectionnées avec une
probabilité proportionnelle à leur attractivité, définie par la quantité de phéromones déposées
sur chaque arête et la distance entre la ville actuelle et la ville sélection.
11
ce bloc de code est chargé de mettre à jour les niveaux de phéromones sur les bords du
graphique en fonction de la distance parcourue par chaque fourmi. Il parcourt toutes les
fourmis de la colonie, calcule la distance parcourue par chaque fourmi à l'aide de la fonction
objective_function et met à jour les niveaux de phéromones sur les bords en conséquence.
Ensuite, il parcourt chaque arête visitée par ant j et met à jour le niveau de phéromone en
utilisant la formule suivante :
pheromone_matrix[ants[j][k]][ants[j][k+1]] = (1-f.rho)*pheromone_matrix[ants[j][k]][ants[j]
[k+1]] + f.rho*(f.Q/distance)
12
La première ligne de la fonction calcule la distance totale du chemin en additionnant les
distances entre chaque paire de villes adjacentes dans le chemin. Cela se fait à l'aide
d'une compréhension de liste qui itère sur la plage d'indices de la liste de chemins et
calcule la distance entre la ville actuelle et la ville suivante dans le chemin, à l'aide de la
matrice de distance. La somme de ces distances est stockée dans la variable
total_distance.
13
Distance entre (1,1)=0, [1]
15
16
17
Les langages programmtions utilises et les Paradigme de
programmation
18
Bibliographie :
[1] :https://fr.wikipedia.org/wiki/Algorithme_de_colonies_de_fourmis
[2] :https://en.wikipedia.org/wiki/Euclidean_distance
19