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