210 likes | 316 Views
Kilhoffer Steeve De-Melo Sébastien Mohr Alexandre. AG41 – Printemps 2007 Réalisation d’un emploi du temps. Plan. Choix du Langage de programmation. Nous avons choisi le C++ pour les raisons suivantes : Rapidité d’exécution Langage orienté objet Gestion des entrées – sorties performantes
E N D
Kilhoffer SteeveDe-Melo SébastienMohr Alexandre AG41 – Printemps 2007Réalisation d’un emploi du temps
Choix du Langage de programmation Nous avons choisi le C++ pour les raisons suivantes : • Rapidité d’exécution • Langage orienté objet • Gestion des entrées – sorties performantes • Bibliothèque STL • Conteneurs : vector, list • Iterators • Gestion des chaînes de caractères avancée
Structure de Données • Remplissage de la classe Donnees • lUvs : Liste des UV (list) : Uvs.txt et Enseignements.txt • lEnseignants : Liste des enseignants (list) : Enseignants.txt • lSeances : Tableau des séances (vector) : Enseignements.txt • lEtudiants : Liste des étudiants (list) : Inscriptions.txt
Structure de DonnéesCodage des Solutions • Une population est composée de chromosomes : • Une liste de ChromEtudiants • Une liste de listes circulaires de ChromSeance
Structure de DonnéesCodage des Solutions • une solution se caractérise par le codage des informations suivantes : • Les horaires de chaque séance • Code horaire dans les ChromSeances • Les groupes de cours, TD et TP auxquels sont affectés les étudiants • Pointeurs sur les ChromSeances correspondantes
Structure de DonnéesCodage des Solutions • Codage des horaires : • codeSemaine : 0 pour A/B, 1 pour A, 2 pour B • codeJour : 0 pour Lun, 1 pour Mar… 5 pour Sam • codeHoraire : • Journée découpée en 11 tranches = Heures de début de séance possibles • 4 durées possibles : 1h, 2h, 3h, 4h • 1h -> 0 à 10 , 2h -> 11 à 21 , 3h -> 22 à 32 , 4h -> 33 à 43
Algorithme génétiquePopulatioN Initiale • Au départ, génération d'un nombre de chromosomes très supérieur à la taille de la population prévue. • But : avoir une bonne population initiale (après sélection)
Algorithme génétiqueOpérateur de Sélection • Principe : sélection des k meilleurs individus, complétés par des chromosomes pris au hasard parmi les restants • On revient à la taille ordinaire.
Algorithme génétiqueOpérateur de Croisement • Les chromosomes présents sont regroupés par paires, puis croisés selon une certaine probabilité. • Création de deux nouveaux individus, par copie des parents puis modification en fonction des fitness partielles. Meilleurs caractères attribués au fils. • Particularité : les nouveaux individus ne remplacent pas les anciens mais se rajoutent à la liste.
Algorithme génétiqueOpérateur de Mutation • Mutation des individus présents selon une probabilité. • Puis, mutations des caractères en fonction des fitness partielles associées • Par exemple, si une séance provoque beaucoup de conflits, son horaire aura de grandes chances d'être modifié.
Algorithme génétiqueModification des paramètres • But : s'adapter aux situations de blocage • Si la fitness reste longtemps identique, on favorise les mutations et la sélection de mauvais chromosomes. • Dès la sortie du puits : retour aux paramètres initiaux.
Algorithme génétiqueLes Fonctions d’Evaluations • Optimisation du calcul des fitness : on ne recalcule que ce qui est modifié • Un Chromosome contient 4 tableaux de fitness : • tabf1 : Fitness partielles de f1, taille = nombre de séances • tabf2 : Fitness partielles de f2, taille = nombre d’étudiants • tabf3 : Fitness partielles de f3, taille = nombre de séances • tabf4 : Fitness partielles de f4, taille = nombre d’enseignants • + 4 sommes partielles : f1, f2, f3, f4
Algorithme génétiqueLes Fonctions d’Evaluations • Procédure de calcul des fitness : • Calculer toutes les fitness partielles des 4 fonctions de fitness de tous les Chromosomes de la 1ère génération, et les stocker dans les tableaux correspondants • Recalculer les fitness partielles des éléments modifiés par mutation • Procédure de calcul des fitness partielles : • f1 : lorsque le nombre d’étudiants affectés à un groupe change • f2 : lorsqu’un étudiant change de groupe et une séance change d’horaire • f3 : lorsqu’une séance change d’horaire • f4 : lorsqu’une séance change d’horaire
Bilan • Difficultés rencontrées • Trouver une modélisation des données permettant une résolution optimale du problème • Les tentatives d’optimisations n’apportent pas toujours le résultat attendu • Améliorations possibles • Implémentation d’une recherche tabou • Optimisations des opérateurs en se basant d’avantage sur les fitness partielles