Algorithme de recherche avec tabou

publicité
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
Téléchargement