Algorithme de recherche avec tabou -...

35
INF6953 La recherche avec tabou 1 Algorithme de recherche avec tabou

Transcript of Algorithme de recherche avec tabou -...

  • INF6953 La recherche avec tabou 1

    Algorithme de recherche avec tabou

  • INF6953 La recherche avec tabou 2

    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 3

    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 4

    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 5

    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 6

    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 7

    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 8

    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 consiste à remplacer la couleur courante S(x) du

    sommet x par la nouvelle couleur v.

  • INF6953 La recherche avec tabou 9

    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 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 .

  • INF6953 La recherche avec tabou 10

    Liste taboue : exemple du k-coloriage

    • Le mécanisme décrit revient, quand le mouvement est effectué, à

    interdire à x de retrouver son ancienne valeur S(x).

    • Autrement dit, quand on effectue le mouvement , on interdit le

    mouvement «inverse»

  • INF6953 La recherche avec tabou 11

    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 12

    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 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 13

    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 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 14

    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 15

    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

    - 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

    - L’attribut (x, v) est acquis

    - L’attribut (x, S(x)) est perdu

  • INF6953 La recherche avec tabou 16

    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 17

    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’à

    • Retourner S*

  • INF6953 La recherche avec tabou 18

    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 19

    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 20

    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 21

    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 22

    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 23

    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 24

    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 25

    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 26

    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

    - 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é)

  • INF6953 La recherche avec tabou 27

    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 28

    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 29

    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 30

    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 31

    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 32

    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 33

    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 34

    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 35

    Algorithme tabou : conclusions

    • Même l’algorithme tabou de base est souvent d’une efficacité remarquable.