340 likes | 814 Views
Recherche Tabou pour la coloration de graphe - TP Metaheuristiques et Optimisation -. Plan. Cette présentation a 2 parties: Description théorique de problème Présentation des expérimentations à mener. Coloration et K-coloration. K-coloration:
E N D
Recherche Tabou pour la coloration de graphe - TP Metaheuristiques et Optimisation -
Plan • Cette présentation a 2 parties: • Description théorique de problème • Présentation des expérimentations à mener
Coloration et K-coloration • K-coloration: • Coloration : déterminer le nombre minimal K tel que le graphe G est K-coloriable • Un graphe G=(V,E) et K-coloriable si on peut étiqueter tous les sommets avec exactement K couleurs de sorte que n'importe quels sommets adjacents ont deux couleurs différentes • nombre chromatique χ(G)
Représentation et codage • Configuration C = un vecteur <c1,|c2|…,|c|V||> de couleurs • Nombre de conflitsde C: • Nombre d’arêtes avec les deux extrémités de la même couleur • Problème de K-coloration ≈ trouver la configuration C* en minimisant le nombre de conflits • Le problème est résolu si C* n'a pas de conflits Configuration C=<3|1|1|1|2> nombre de conflits = 2 (V3-V2 et V3-V4)
Descente “pure” • Partir d'une configuration aléatoire • A chaque itération: la configuration courante est remplacée par la meilleure dans le voisinage • Arrêt quand il n'est plus possible de trouver un meilleur voisin (minimum local) L L G=Minimum global L=Minimum local L L L G
Recherche Tabou • Descente qui considère aussi les mouvements augmentant le nombre de conflits • Quand on ne peux plus descendre (minimum locale), la recherche monte • Risque: cycler dans un plateau => liste tabou : liste de mouvements interdites
Recherche Tabou: évolution du nombre de conflits Graphe = dsjc250.5 K = 27 Meilleur K trouvé = 28
Nouvelle fonction d'évaluation • Généralement, toutes les configurations sont évaluées avec la fonction d'évaluation classique f • Les conflits ne sont pas associés à la même difficulté de résolution : • Des arêtes avec des conflits faciles(V3-V4) • simplement changer la couleur sur une extrémité de l’arête • Des arêtes avec des conflits difficiles (V3-V2) • Un changement de couleur sur une extrémité génère des nouveaux conflits
Evaluation basée sur le degré • {i,j} conflit facile {i,k} conflit difficile • sommet V1: degré=1 sommet V2: degré=6 Chaque arête a un poids/pénalisation en accord avec le degré des extrémités
Longueur de la liste Tabou • Le rôle de la liste tabou est d'empêcher l'algorithme de cycler dans un plateau local • Longueur: tl = RandomInt(0,10) + f • A chaque mouvement m, on empêche l'algorithme de re-appliquer m sur les tl mouvements suivants • tl = 2suffisant pour détruire un cycle de longueur 2 Col(v)=1 Col(v)=4 Col(v)=1
Longueur de la liste Tabou • La même longueur 2 n'est plus suffisante pour détruire un cycle plus grand • Liste Tabou longue pour les grands plateaux et petite pour les petits plateaux
Expérimentations À Mener 1 • Problème: comparer 3 algorithmes Tabou: • La recherche Tabou classique (alg. A1) • La recherche Tabou avec la nouvelle fonction d’évaluation (alg. A2) • La recherche Tabou avec la nouvelle fonction d’évaluation ET le mécanisme pour ajuster la longueur de la liste Tabou • Objectif : dire si une méthode est meilleure que les autres, si oui, dans quels cas et pourquoi?
Expérimentations À Mener 2 Méthodologie : • Établir les critères de comparaison (quelles sont les informations nécessaires lors des expérimentations?) • Mettre au point le protocole expérimental pour effectuer une comparaison correcte (comparaison « équitable » des méthodes) et effectuer les calculs • Présenter de façon rigoureuse les résultats et les conclusions
Fichiers fournis • Main.cpp – un exemple d’un appel de l’algorithme Tabou, le seul fichier qu’on a besoin à changer • config.txt – une liste de nombres de couleurs (un nombre de couleurs est associé à chaque graphe) • ./input/ – le répertoire de graphes • ./src/ - le répertoire de toutes les sources
Compiler et lancer • Compilation • make lib • make • Execution • Appeler main • Normalement, on lance Tabou pour tous les graphes dans le répertoire input • Note: lire README avant de commencer