algorithme génétique

publicité
Licence Informatique 1ère année
2014-2015
Projet de Méthodologie de la programmation
du Problème du Voyageur du Commerce
Cahier des charges 2 (pour 3 séances de 4h00 de TP)
Résolution du Problème du Voyageur du Commerce via un algorithme
génétique – gestion des données
1. Définition de constantes
-
Définir une constante NOMBRE_SOLUTIONS_MAX, qui représente le nombre maximal de
solutions à gérer. Lui donner la valeur 100.
2. Définition de variables
-
Définir une variable nombreDeSolutions, de type entier, qui correspond au nombre de
solutions à gérer.
Définir une variable solutions, qui est un tableau de Solution.
Définir une variable solutionsAuxiliaires, qui est aussi un tableau de Solution.
3. Définition et appel de fonctions
-
-
-
-
Ecrire une fonction nommée saisirNombreDeSolutions qui demande la saisie d’un
entier compris entre 0 et NOMBRE_SOLUTIONS_MAX et qui renvoie cet entier. Appeler
cette fonction pour saisir dans la variable nombreSolutions le nombre de solutions à
gérer.
La fonction saisirNombreDeVilles étant très similaire à la fonction
saisirNombreDeSolutions,
définir
une
fonction
générique
nommée
saisirNombre, qui prend en paramètres une valeur minimum min et une valeur
maximum max et qui demande la saisie d’un nombre en vérifiant qu’il est compris entre min
et max. Cette fonction servira à toutes les saisies de nombres.
Ecrire une procédure nommée initialiserSolutions qui initialise solutions avec
nombreDeSolutions éléments :
o le
1er
élément
sera
une
solution
créée
avec
la
fonction
genererSolutionAvecHeuristique ;
o les (nombreSolutions-1) autres éléments seront des solutions aléatoires
obtenues avec la fonction genererSolutionAleatoire.
Ecrire une fonction nommée retournerIndiceMeilleureSolution qui retourne
l’indice de la meilleure solution dans le tableau solutions.
Ecrire une fonction nommée retournerMoyenneDesDistances qui calcule la
moyenne des distances des solutions du tableau solutions.
Ecrire une fonction nommée estUneBonneSolution qui détermine si une solution est
« bonne », c’est-à-dire que sa distance est inférieur à la distance moyenne des solutions dans
le tableau solutions. La fonction doit renvoyer TRUE si la solution testée est bonne et
FALSE sinon.
Université de Lorraine
1/2
Licence Informatique 1ère année
2014-2015
Résolution du Problème du Voyageur du Commerce via un algorithme
génétique – algorithme génétique
1. Définition de constantes
-
Définir une constante NOMBRE_GENERATIONS_MAX, qui représente le nombre de
générations maximal. Lui donner la valeur 100.
2. Définition de variables
-
Définir une variable nombreDeGenerations qui est un entier qui indique combien
d’itérations effectuer pour la recherche de la meilleure solution.
3. Définition et appel de fonctions
-
-
-
-
-
Ecrire une procédure nommée trierSolutions qui trie les solutions selon leur distance.
Ecrire une procédure nommée fusionnerSolutions qui reçoit deux tableaux de
solutions ayant le même nombre de solutions. La procédure remplit un troisième tableau de
solutions avec les meilleures solutions des deux tableaux précédents. Le nombre des
solutions retenues est le même que celui des deux autres tableaux.
Ecrire une procédure nommée croiserDeuxSolutions qui réalise le croisement entre
deux solutions parents parent1 et parent2 donnant naissance à deux enfants enfant1
et enfant2.
Ecrire une procédure nommée muterSolution qui transforme une séquence en une
autre séquence par permutation de 2 villes.
Demander la saisie du nombre de générations sur lequel dérouler l’algorithme génétique et
l’affecter à la variable nombreDeGenerations. La valeur devra être comprise entre 0 et
NOMBRE_GENERATIONS_MAX.
Ecrire le code de l’algorithme génétique suivant :
o Faire une boucle de nombreGenerations itérations.
o À chaque itération, prendre les « bonnes » solutions pour effectuer des croisements
et muter les autres solutions. Les nouvelles solutions seront stockées dans
solutionsAuxiliaires. Les nombreDeSolutions meilleures solutions
dans solutions et dans solutionsAuxiliaires seront déterminées et
stockées dans solutions.
La meilleure solution de l’algorithme génétique est celle retournée par la fonction
retournerIndiceMeilleureSolution sur solutions après la dernière itération.
Université de Lorraine
2/2
Téléchargement