Algorithme de recherche avec tabou INF6953 La recherche avec tabou 1 Historique et principes • La recherche avec tabou a été proposée par Fred Glover en 1986. Depuis cette date, la méthode est devenue très populaire, grâce aux succès qu’elle a remportés pour résoudre de nombreux problèmes. • L’intention de l’auteur était de concevoir une méthode de recherche intelligente. • La méthode utilise une mémoire (ou plusieurs mémoires) qui sont mises à jour et exploitées au cours de la recherche. Algorithme tabou de base : mémoire à court terme (liste taboue) Algorithme tabou évolué : mémoire à court terme (liste tabou) + mémoire à long terme pour assurer l’intensification et/ou la diversification - INF6953 La recherche avec tabou 2 Concepts de base • L’idée de base de la liste taboue consiste à mémoriser les configurations ou régions visitées et à introduire des mécanismes permettant d’interdire à la recherche de retourner trop rapidement vers ces configurations. • Ces mécanismes sont des interdictions temporaires de certains mouvements (mouvements tabous). Il s’agit d’interdire les mouvements qui risqueraient d’annuler l’effet de mouvements effectués récemment (voir les exemples). • A chaque itération, l’algorithme tabou choisit le meilleur voisin non tabou, même si celui-ci dégrade la fonction de coût. Pour cette raison, on dit de la recherche avec tabou qu’elle est une méthode agressive. INF6953 La recherche avec tabou 3 Liste taboue • En général, la liste tabou contient des attributs. • Un attribut qui vient d’être rendu tabou le reste pendant quelques itérations (tabu tenure). Cette durée est fixée par un ou des paramètres. Ensuite, le mouvement perd son statut de mouvement tabou. On parle de stratégie de diversification à court terme. • Normalement, la liste taboue doit garantir l’absence de cycles de petite taille. INF6953 La recherche avec tabou 4 Critère d’aspiration • Dans certains cas, les interdictions occasionnées par la liste taboue peuvent être jugées trop radicales. En effet, on risque d’éliminer (en les rendant tabous), certains mouvements particulièrement utiles. Autrement dit, il s’agit d’assouplir le mécanisme de liste taboue. • Un mécanisme d’aspiration détermine un critère selon lequel un mouvement, bien que tabou, peut quand même être accepté. Il faut faire attention, cependant, au risque d’introduire à nouveau des cycles dans la recherche. • Par exemple, un critère d’aspiration rudimentaire peut consister à accepter un mouvement s’il conduit à une configuration meilleure que la meilleure configuration déjà trouvée. Des mécanismes plus sophistiqués peuvent être introduits. INF6953 La recherche avec tabou 5 Liste taboue : adaptation au problème à résoudre • Les principes énoncés ci-dessus doivent être adaptés au cas par cas au problème traité. Quelques exemples sont fournis par la suite. • - Il faut noter que : C’est au concepteur de l’algorithme de spécifier le mécanisme tabou. Pour un problème donné, plusieurs techniques différentes sont concevables. • - Dans la suite on présente deux exemples : k-coloriage et TSP Le mécanisme de liste taboue présenté est seulement une possibilité. D’autres techniques seraient également possibles. INF6953 La recherche avec tabou 6 Spécification du mécanisme de liste taboue • Pour décrire le mécanisme tabou, il faut spécifier : - La structure de la liste taboue (la nature des éléments qui la composent). - Comment la liste est mise à jour quand un mouvement est effectué (quels éléments sont ajoutés). - Quels mouvements ou voisins sont interdits, selon le contenu de la liste. • Il faut par ailleurs déterminer combien de temps un élément reste tabou. INF6953 La recherche avec tabou 7 Exemple du k-coloriage de graphe : rappels • - Espace de recherche Une configuration S est une fonction S : V -> {1..k} • - Fonction d’évaluation (à minimiser) Pour toute configuration S, f(S) représente le nombre d’arêtes violées dans S. • - Voisinage Un mouvement consiste à changer la couleur d’un sommet unique. On représente un couple sommet / couleur. Le mouvement <x, v> consiste à remplacer la couleur courante S(x) du sommet x par la nouvelle couleur v. - INF6953 La recherche avec tabou 8 Liste taboue : exemple du k-coloriage • - Structure de la liste taboue La liste contient des couples variable/valeur • - Mise à jour de la liste Quand le mouvement <x, v> est effectué, on ajoute à la liste l’élément (x, S(x)). • - Mouvements interdits Si le couple (x, v) appartient à la liste, cela interdit le mouvement <x, v>. INF6953 La recherche avec tabou 9 Liste taboue : exemple du k-coloriage • Le mécanisme décrit revient, quand le mouvement <x, v> est effectué, à interdire à x de retrouver son ancienne valeur S(x). • Autrement dit, quand on effectue le mouvement <x, v>, on interdit le mouvement «inverse» <x, S(x)> INF6953 La recherche avec tabou 10 Liste taboue : exemple du k-coloriage • Une telle liste peut s’implanter facilement à l’aide d’une matrice IsTabuUntil[][] de dimension |V| x k. • Pour un sommet x et une couleur v, l’entier IsTabuUntil[x][v] indique jusqu’à quelle itération le mouvement (x, v) a été tabou, ou sera tabou. • - Condition pour déterminer si un mouvement est tabou : VRAI ssi IsTabuUntil[x][v] > iter (iter = numéro de l’itération courante) • - Procédure pour rendre l’élément (x, v) tabou pendant h itérations : Faire : IsTabuUntil[x][v] := iter + h INF6953 La recherche avec tabou 11 Liste taboue : exemple du TSP • On peut se représenter une configuration comme l’ensemble des arcs qui constituent la tournée – les arcs sont tous orientés dans un même sens choisi arbitrairement. • Un mouvement <(a, b), (c, d)> consiste à retirer les deux arcs (a, b) et (c, d) et à introduire deux nouvelles arcs (a, c) et (b, d). • On peut envisager d’utiliser deux listes taboues contenant des arêtes (paires non orientée) : Une liste appelée IN Une liste appelée OUT - INF6953 La recherche avec tabou 12 Liste taboue : exemple du TSP • - Structure des listes taboues Les listes IN et OUT contiennent des arêtes (non orientées). • Mise à jour de la liste : Quand un mouvement <(a, b), (c, d)> est effectué : - On ajoute à la liste OUT les éléments {a, c} et {b, d} (arêtes insérées). - On ajoute à la liste IN les éléments {a, b} et {c, d} (arêtes supprimées). • - Mouvements interdits Si la paire {a, b} appartient à la liste IN, cela interdit tout mouvement qui conduirait à introduire l’arête dans la configuration. Si la paire {a, b} appartient à la liste OUT, cela interdit tout mouvement qui conduirait à retirer l’arête dans la configuration. - INF6953 La recherche avec tabou 13 Attributs • En général, la liste taboue contient des attributs de solutions. • Un attribut p est un prédicat (une fonction booléenne) défini sur S p : S -> {VRAI, FAUX} • - Exemple du TSP A chaque arête xy, on peut associer un attribut pxy pxy (S) = VRAI si, et seulement si, l’arête xy appartient à S • - Exemple du k-coloriage A chaque couple sommet/couleur (x, v), on peut associer un attribut p(x,v) p(x,v) (S) = VRAI si, et seulement si, S(x)=v INF6953 La recherche avec tabou 14 Attributs et mouvements • Quand on effectue un mouvement, certains mouvements sont acquis par la solutions et certains autres sont perdus • - Exemple du TSP Quand on effectue le mouvement <(a,b), (c, d)> - les attributs (a,c) et (b, d) sont gagnés - les attributs (a,b) et (c, d) sont perdus • - Exemple du k-coloriage Quand on effectue le mouvement <x, v> - L’attribut (x, v) est acquis - L’attribut (x, S(x)) est perdu INF6953 La recherche avec tabou 15 Attributs et liste taboue • - Pour définir le mécanisme tabou, il suffit de spécifier : Que les mouvements acquis sont introduits dans la liste OUT: on interdit les mouvements qui conduiraient à les perdre. Que les mouvements perdus sont introduits dans la liste IN : on interdit les mouvements qui conduiraient à les reprendre. • Dans l’exemple proposé pour le TSP, on a utilisé deux listes IN et OUT et appliqué les principes énoncés ci-dessus. • Dans le cas du coloriage de graphe, on a utilisé seulement une liste OUT et appliqué les principes énoncés ci-dessus. INF6953 La recherche avec tabou 16 Schéma de l’algorithme tabou de base • • • • • • Engendrer une configuration initiale S0 ; S := S0 S* := S ; f* := f(S) T := {} // liste taboue Répéter – m := le meilleur mouvement parmi les mouvements non tabous et les mouvements tabous exceptionnels (critère d’aspiration) – S := S (+) m – Si f(S) < f(S*) faire S* := S ; f* := f(S) – Mettre T à jour ; Jusqu’à <condition fin> Retourner S* INF6953 La recherche avec tabou 17 Critère d’arrêt • - On peut arrêter la recherche à tout moment. Contrairement au recuit simulé… • - Des critères d’arrêt possibles sont : Si une solution prouvée optimale a été trouvée. Si une limite a été atteinte en ce qui concerne - Le nombre d’itérations ; - Le temps de calcul. Si la recherche semble stagner : nombre d’itérations sans amélioration de la meilleure configuration trouvée. - INF6953 La recherche avec tabou 18 Listes de candidats • Dans la recherche avec tabou, on cherche «normalement» le meilleur mouvement non tabou. Cependant, cette manière de procéder peut se révéler trop coûteuse. • Pour y remédier, on peut se limiter à engendrer seulement un sous-ensemble des voisins (ou mouvements). On parle de liste de candidats. • - Construction d’une liste de candidats Les candidats de la liste peuvent être engendrés de manière aléatoire (échantillon aléatoire). Une autre approche consiste à sélectionner les voisins qui semblent les plus prometteurs – selon un critère quelconque. - INF6953 La recherche avec tabou 19 Comportement de l’algorithme tabou • • - Si la liste taboue est courte Il y a moins d’interdictions (mouvements tabous). La recherche épouse mieux les optima locaux rencontrés. L’algorithme tend à parcourir de moins grandes distances dans l’espace de recherche. Il explore moins l’espace de recherche. Le risque de cycles est plus grand. Si la liste taboue est longue Il y a davantage d’interdictions (mouvements tabous). La recherche risque de manquer de nombreux optima locaux sur son chemin. L’algorithme tend à parcourir de plus grandes distances dans l’espace de recherche. Il explore davantage l’espace de recherche. Le risque de cycles est réduit. INF6953 La recherche avec tabou 20 Comportement de l’algorithme tabou • - Le comportement de l’algorithme dépend De la longueur de la liste taboue. Mais aussi de la taille de la liste de candidats (si on en utilise une). • - Dans le cas où une liste de candidats est utilisée : Les meilleurs mouvements risque de ne pas appartenir à la liste. Une liste de taille réduite joue donc un rôle de randomisation. • Il y a donc deux «forces» qui conjuguent leurs effets pour ressortir des optima locaux : la liste taboue et la liste de candidats. Plus la liste de candidats est petite, moins la liste taboue a besoin d’être grande. - INF6953 La recherche avec tabou 21 Réglage de la longueur de la liste taboue • Un point complexe mais crucial pour les performances de l’algorithme est de fixer le nombre d’itérations pendant lequel un attribut reste tabou = longueur de la liste (=tabu tenure). • Ce nombre d’itérations peut être constant et fixé par un paramètre lgtl. • Une technique plus robuste semble être de fixer deux valeurs lgltMax et lgtlMin et de choisir aléatoirement une valeur entre les deux. • Dans certains cas, la taille du voisinage évolue pendant la recherche. Dans ce cas, on fait généralement la taille de la liste. Voir l’exemple de l’algorithme TabuCol. INF6953 La recherche avec tabou 22 Réglage auto-adaptatif de la longueur de la liste taboue • • - - Une autre technique consiste à laisser la longueur de la liste taboue se régler elle-même au cours de la recherche : Si on observe que l’algorithme tend à cycler (ou tend à rester confiné dans la même région), on augmente la longueur de la liste Sinon on la réduit légèrement Dans l’algorithme tabou réactif (Reactive Tabu Search, Battiti) : La longueur de la liste taboue est auto-adaptative - Quand on rencontre une configuration déjà visitée, on augmente la durée. - Sinon, on diminue progressivement la longueur de la liste. Implémentation : au cours de la recherche, on mémorise les configurations visitées à l’aide d’une table de hachage. INF6953 La recherche avec tabou 23 Techniques additionnelles • - Un algorithme tabou de base comprend une liste taboue (mémoire à court terme) et un critère d’aspiration. • - Un algorithme tabou «évolué» comprend en outre une technique de diversification et / ou une technique d’intensification. • Les techniques de diversification et d’intensification font appel à des mémoires à long terme. INF6953 La recherche avec tabou 24 Mémoire à long terme • Dans la méthode tabou, on peut utiliser des mémoires à long terme. Celles-ci peuvent servir à implanter des techniques d’intensification et/ou de diversification (voir plus loin). • - Les mémoires à long terme permettent de stocker : Des solutions entières - par exemple, des solutions particulièrement performantes (elite solutions) ; La fréquence selon laquelle un attribut a appartenu à la solution courante ; La fréquence selon laquelle un mouvement a été effectué, ou selon laquelle un attribut a été réintroduit dans la solution. - INF6953 La recherche avec tabou 25 Mémoire à long terme • • - • - Solution d’élite On mémorise certaines de meilleures solutions rencontrées au cours de la recherche. Recency memory Pour chaque attribut (ou composant = solution component), nombre d’itérations consécutives pendant lesquelles l’attribut a été présent dans la solution courante (sans interruption) Frequency memory Pour chaque attribut - INF6953 nombre total d’itérations pendant lesquelles l’attribut a été présent dans la solution courante depuis le début de la recherche. Ou nombre de fois que l’attribut a été impliqué dans un mouvement (a été modifié) La recherche avec tabou 26 Techniques d’intensification • L’idée à la base de l’intensification est qu’on devrait explorer de façon plus approfondies les régions qui semblent les plus prometteuses. • Le principe de l’intensification consiste à retourner périodiquement visiter des zones de l’espace de recherche qui semblent particulièrement prometteuses. • - De nombreuses techniques ont été proposées : Repartir de bonnes solutions déjà rencontrées ; Reconstruire une solution de départ qui tente de combiner des attributs qui ont été présents souvent dans les configurations visitées ; Geler certains attributs qui ont été souvent présents dans les configurations visitées ou dans les configurations d’élite relevées. - INF6953 La recherche avec tabou 27 Techniques d’intensification • - Technique 1 Redémarrer la recherche à partir d’une solution d’élite Et geler les composants qui semblent les plus intéressants. • - Technique 2 Redémarrer la recherche à partir d’une solution d’élite Et changer le voisinage pour autoriser davantage de types de mouvements, de manière à élargir le voisinage. Si une liste de candidats est utilisée, augmenter l’échantillon. - INF6953 La recherche avec tabou 28 Techniques de diversification • Le principe de la diversification consiste à inciter l’algorithme à se diriger vers des régions qui n’ont pas encore été visitées. • - De nombreuses techniques ont été proposées : Repartir d’une configuration aléatoire Reconstruire une solution de départ qui tente de combiner des attributs qui ont été présents le moins souvent dans les configurations visitées. Modifier la fonction de coût pour - favoriser les attributs peu fréquents - pénaliser les attributs fréquents - INF6953 La recherche avec tabou 29 Techniques de diversification • Difficulté typiquement rencontrée : la recherche est «trop locale» et reste confinée dans une portion de l’espace de recherche. On risque donc d’omettre d’explorer certaines régions contenant de bonnes solutions. • Diversification : C’est un mécanisme par lequel on arrête le cours habituel de la recherche et on oblige temporairement la recherche à se diriger vers des régions inexplorées. INF6953 La recherche avec tabou 30 Techniques de diversification • - • - • Diversification par relance On construit une solution qui contient des composants rarement utilisés, et on effectue une relance à partir de cette solution. Diversification en continu On biaise l’évaluation des mouvements en ajoutant à l’objectif un terme relié à la fréquence des attributs : Les attributs les plus fréquents sont pénalisés Les attributs les moins fréquents sont encouragés Oscillations stratégiques : INF6953 La recherche avec tabou 31 Utilisation de l’intensification et de la diversification • L’intensification et la diversification visent des objectifs opposés. • L’intensification n’est pas forcément nécessaire, car on peut estimer que les régions explorées l’ont été suffisamment minutieusement. • La diversification est généralement plus importante, car il est fréquent que la recherche reste confinée dans certaines régions. INF6953 La recherche avec tabou 32 Algorithme tabou stochastique • L’idée de tabou stochastique est d’introduire de l’aléatoire au sein de l’algorithme tabou. A chaque itération, on choisira un mouvement non tabou en privilégiant les meilleurs d’entre eux. • - Choix d’un mouvement Les mouvements candidats sont parmi les mouvements non tabous et les mouvements tabous exceptionnels (critère d’aspiration). La probabilité de choisir un mouvement candidat m croît avec sa qualité Par exemple, la probabilité de choix d’un mouvement peut être proportionnelle à exp(-delta(m)/T), que le mouvement améliore ou non. - INF6953 La recherche avec tabou 33 Algorithme tabou stochastique • - • - Différences avec le recuit simulé Les mouvements qui améliorent n’ont pas tous la même probabilité d’être choisis. Le paramètre noté T (analogue à la température) ne varie pas pendant la recherche. Autre technique On peut également soumettre le caractère tabou d’un mouvement à des probabilités. Dans ce cas, tout mouvement peut être choisi a priori, mais la probabilité d’un mouvement décroît s’il a été introduit récemment dans la liste taboue. INF6953 La recherche avec tabou 34 Algorithme tabou : conclusions • Même l’algorithme tabou de base est souvent d’une efficacité remarquable. INF6953 La recherche avec tabou 35