Skip to content
Snippets Groups Projects
Commit d1de56b6 authored by agnon.kurteshi's avatar agnon.kurteshi
Browse files

Upload New File

parent 6ebea867
No related branches found
No related tags found
No related merge requests found
# Énoncé
## Mise en contexte
Dans le cadre du cours de programmation séquentielle en C, nous avons du réaliser un énoncé afin de réaliser le projet de ce dernier. Le but de ce projet est d'utiliser l’algorithme d'optimisation de colonies de fourmis afin de trouver le chemin le plus court entre deux sommets définis dans un graphe. Les fourmis fonctionnent de manière collective afin de trouver leurs sources de nourritures. De ce fait, chaque fourmis parcours un chemin aléatoirement puis laisse de la phéromone sur son chemin lorsqu'elle a trouvé la nourriture. La phéromone influence donc le passage des prochaines fourmis qui vont elles aussi laisser de la phéromone pour les suivantes. Ainsi, au bout d'un certain temps, le chemin le plus emprunté et donc le plus court, sera bien plus choisi par les fourmis que les autres chemins et le chemin le plus court sera défini.
## Les graphes
Nous allons avoir besoin d'un "terrain de jeu" qui sera représenté par un graphe. Un graphe est composé de sommets et d’arêtes. Les arêtes représentent un lien directionel qu'il y a entre deux sommets et, dans notre cas, elles contiendront également une longueur représentant le cout pour aller d'un sommmet a un autre ainsi qu'un taux de phéromones qui servira plus tard a influencer le déplacement des fourmis dans le graphe.
Pour la représentation d’un graphe, il a deux implémentations majeures qui ressortent du lot :
- Matrice d’adjacence
<img title="Matrice" alt="Alt text" src="./Matrice.png">
- Liste de voisins
<img title="Liste chaine" alt="Alt text" src="./liste_chaine.jpg">
## Algorithme des fourmis
Tant que critère de fin non atteint, on répète :
1. La fourmi va choisir un chemin qui sera influencé par le taux de phéromones déposé par les fourmis précédentes.
2. Une fois arrivé a destination, on dépose un taux de phéromones dépendant de la longueur du chemin emprunté par la fourmi
3. A chaque fin d’itération, les phéromones sur les arêtes vont s’évaporer d’un certain taux défini au préalable
4. si on a trouvé un chemin plus court, on le sauvegarde
## Cahier des charges
Afin de réaliser correctement ce travail pratique, il faudra produire différentes fonctions :
- création / initialisation / suppression / affichage de graphe
- création / initialisation / suppression de fourmis
- lecture d'un fichier pour créer le graphe
- choix de chemin pseudo aléatoire
- calcul du taux de phéromones à déposer
- évaporation de la phéromone
- affichage du chemin le plus court
- comparé le chemin trouvé avec notre algo avec un autre algo (ex: dijkstra)
- Bonus : affichage graphique du chemin le plus court
## Détails d'implémentation
Lors de l'implémentation on laisse à l’utilisateur le choix d’un nombre N de fourmis ”nombre d'itération" pour lequel le programme affiche le graphe.
Le format du fichier d’entrée / sortie est “.txt”.
Il peut être sous forme diverse comme une matrice/liste.
Le fichier de sortie représente le chemin le plus court.
## Tests et vérification des fonctionnalités
Afin de vérifier que le programme est correctement réaliser, ces différentes fonctionnalités devront être testées:
NB : CRUD = CreateReadUpdateDelete , read entendu comme affichage
- CRUD Graphe
- CUD nœuds
- CUD arête
- CUD fourmi
- l'évaporation est fonctionnelle, si une évaporation est constatée
- le choix de la fourmi est pseudo aléatoire et influencé par les phéromones présentes
- la phéromone est correctement calculée
- la phéromone est correctement déposée
- Le chemin le plus court retourné est correct
## Références
- https://www.i3s.unice.fr/~crescenz/publications/travaux_etude/colonies_fourmis-200605-rapport.pdf
- https://fr-academic.com/dic.nsf/frwiki/81455
- http://pagesperso.univ-brest.fr/~bounceur/cours_pdf/ao/representation_graphe.pdf
- https://fr-academic.com/dic.nsf/frwiki/1033396
- https://www.youtube.com/watch?v=T5MU8NDMMj4https://www.programiz.com/dsa/graph
- https://eduscol.education.fr/document/30085/download
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment