Eirbot1A-2020
|
Implémentation (en C) du problème du voyageur avec le système de colonie de fourmis. Plus de détails...
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <math.h>
Aller au code source de ce fichier.
Classes | |
struct | ville |
permet de faire une liste chainée de ville Plus de détails... | |
Macros | |
#define | C_IMPORTANCE_VISIBILITE_VILLE 0.5 |
Importance donnée à la visibilité des villes. | |
#define | C_IMPORTANCE_QUANTITE_PHEROMONE 0.5 |
Importe donnée à la quantité de phéromones déposées. | |
#define | C_VITESSE_EVAPORATION_PHEROMONE 0.75 |
Définit la vitesse d'évaporation des phéromones. | |
#define | C_PISTE_PHEROMONE 0.5 |
Constante utilisée pour l'initialisation des pistes de phéromones. | |
#define | C_QUANTITE_PHEROMONE 100 |
Constante utilisée dans le calcul de la quantité de phéromones déposés par les fourmis. | |
#define | C_NB_CYCLE 50 |
Nombre d'itérations de l'algorithme. | |
Définitions de type | |
typedef struct ville | ville |
typedef ville * | list_ville |
Fonctions | |
void | effacerliste (list_ville list) |
Efface la liste des villes. Plus de détails... | |
void | initPremiereVilleParcourue () |
Définit la première ville parcourue. | |
void | initQuantitePheromones () |
Initialise la quantité de Phéromones. | |
void | initMatriceVisibilite () |
Initialisation la matrice de visibilité | |
list_ville | getvilleNonVisite (int num_fourmi) |
Permet de savoir les villes non explorées par une fourmi. Plus de détails... | |
float | calcul_probabilite (int num_fourmi, int ville_actuelle, int ville_non_visite) |
Calcul la probabilité qu'une fourmi passe sur un arc. Plus de détails... | |
float | getLongueur_cycle_hamiltonien (int num_fourmi) |
Renvoie la longueur du cycle hamiltonien d'une fourmi. | |
void | reinitialiser_ville_fourmis () |
Vide la liste des villes pour toutes les fourmis. | |
float | get_quantite_pheromones_deposes_par_une_fourmi (int num_fourmi, int i, int j) |
Calcule la quantité de phéromone déposée par une formi sur l'arc i j. | |
float | get_quantite_pheromones_deposes (int i, int j) |
Calcule la quantité de phéromone déposée sur un arc i j. | |
void | ant_system () |
Coeur de l'algorithme : algorithme de colonie de fourmi https://fr.wikipedia.org/wiki/Algorithme_de_colonies_de_fourmis. | |
void | initMatriceVille (int taille) |
Lit le fichier de ville pour remplir la matrice des villes. Plus de détails... | |
void | CalculeBest () |
Trouve le meilleur voyage parmis ceux calculés par ant_system. | |
void | ecocup_pdv (int taille) |
Fonction récapitulative permettant de faire tout le système (initialisation, ant_system, trouver le meilleur) Plus de détails... | |
void | ecocup_print (int taille) |
Permet d'afficher le chemin trouvé | |
Implémentation (en C) du problème du voyageur avec le système de colonie de fourmis.
float calcul_probabilite | ( | int | num_fourmi, |
int | ville_actuelle, | ||
int | ville_non_visite | ||
) |
Calcul la probabilité qu'une fourmi passe sur un arc.
num_fourmi | identifiant de la fourmi |
ville_actuelle | : départ de l'arc |
ville_non_visite | fin de l'arc |
void ecocup_pdv | ( | int | taille | ) |
Fonction récapitulative permettant de faire tout le système (initialisation, ant_system, trouver le meilleur)
taille | nombre de ville à considérer |
void effacerliste | ( | list_ville | list | ) |
Efface la liste des villes.
list | la liste de ville |
list_ville getvilleNonVisite | ( | int | num_fourmi | ) |
Permet de savoir les villes non explorées par une fourmi.
num_fourmi | identifiant de la fourmi |
void initMatriceVille | ( | int | taille | ) |
Lit le fichier de ville pour remplir la matrice des villes.
taille | le nombre de ville à lire |