La recherche locale INF6953 La recherche locale 1 Sommaire • • • • • • • • Recherche locale et voisinage. Fonction de voisinage, optimum local Fonction de voisinage et mouvements Fonction de voisinage et mouvements Exemples : FAP, SAT, TSP Algorithme de descente Algorithme de descente avec relances Idées pour faire mieux que la descente INF6953 La recherche locale 2 Recherche locale et voisinage • La recherche locale est une famille de métaheuristiques fondée sur la notion de voisinage. • La recherche locale comprend les techniques de descente, mais aussi des métaheuristiques plus évoluées telles que le recuit simulé, tabou, etc. • - Pour résoudre un problème d’optimisation (S, f) par la recherche locale avec Un espace de solution S Une fonction de coût f : S -> R On doit successivement Définir une fonction de voisinage Choisir un mécanisme de visite des configurations, i.e. une métaheuristique (descente, recuit simulé, tabou, etc. - INF6953 La recherche locale 3 Fonction de voisinage, optimum local • Une fonction de voisinage N : S -> P(S) associe à toute configuration S de S l’ensemble N(S) des voisins de S (le voisinage de S). • Le voisinage N est le plus souvent symétrique : S’ appartient à N(S) ssi S appartient à N(S’). • On appelle optimum local (relativement au voisinage N) toute configuration S de S telle que f(S) ≤ f(S’), pour tout S’ élément de N(S). INF6953 La recherche locale 4 Fonction de voisinage et mouvements • Plutôt que de définir une fonction de voisinage, on définit souvent des mouvements. • On commence (généralement) par définir un ensemble de mouvements M. • Pour toute configuration S, on définit l’ensemble M(S) des mouvements applicables à la configuration S. La configuration obtenue en appliquant le mouvement m à S être notée S (+) m. - • Le voisinage d’une configuration S correspond à l’ensemble des configurations qu’on peut atteindre en utilisant un mouvement applicable à S : N(S) = { S (+) m | m appartient à M(S) } INF6953 La recherche locale 5 Voisinage : exemple du k-coloriage de graphe • - 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 locale 6 Voisinage : exemple de Max-SAT • - Espace de recherche Une configuration est une fonction S : {x1…xn} -> {VRAI, FAUX} • - Fonction d’évaluation (à maximiser) f(S) représente le nombre de clauses satisfaites dans S. • - Voisinage Un voisinage possible consiste à inverser la valeur d’une variable booléenne. Un tel mouvement peut être représenté par le nom de la variable modifiée. Le mouvement <x> consiste à remplacer la valeur S(x) de la variable x dans la configuration courante S par son inverse. - INF6953 La recherche locale 7 Voisinage : exemple du TSP • - Espace de recherche Une configuration est un cycle hamiltonien quelconque (tournées). • - Fonction d’évaluation (à minimiser) Pour toute configuration S, f(S) représente la longueur de la tournée S (somme des longueurs des arêtes qui composent la tournée). • - Voisinage Un voisinage possible est le voisinage 2-échange. Un mouvement de type 2-échange consiste à - remplacer deux arêtes non adjacentes (a, b) et (c, d) - par les deux nouvelles arêtes (a, c) et (b, d). INF6953 La recherche locale 8 Paysage de recherche locale • • - Étant donné l’espace de recherche S, la fonction de coût f et la fonction de voisinage N, on peut se représenter le triplet (S, f, N) comme un graphe parfois appelé paysage de recherche locale avec : S : ensemble de sommets N : ensemble des arêtes f(S) indique l’altitude du sommet associé à la configuration S Un algorithme de recherche locale simplifié consiste à engendrer une chaîne de recherche locale S0, S1, … On engendre au départ une configuration initiale S0. A chaque étape, on choisit Si+1 dans le voisinage N(Si) de la configuration courante Si. Le choix du voisin est guidé par la connaissance que l’on a de l’évaluation (altitude) des différents éléments de N(Si) INF6953 La recherche locale 9 Schéma d’algorithme de recherche locale • • • • • Engendrer une configuration initiale S0 S := S0 Répéter – Engendrer un ensemble {S’1, S’2,…} de voisin de S – Calculer f(S’1, f(S’2)), … – Choisir S’ dans l’ensemble {S’1, S’2,…} – S := S’ Jusqu’à <condition fin> Retourner la meilleure configuration trouvée INF6953 La recherche locale 10 Algorithme de descente • La métaheuristique de recherche locale la plus simple est l’algorithme de descente (ou amélioration itérative). • L’algorithme de descente consiste, à chaque itération, à choisir un voisin qui améliore strictement la fonction de coût. • - Remarque L’algorithme de descente s’arrête nécessairement quand un optimum local est atteint. • - Plusieurs manières de choisir le voisin : Choix aléatoire d’un voisin parmi ceux qui améliorent (first improvement). Choix du meilleur voisin qui améliore (best improvement). INF6953 La recherche locale 11 Schéma d’algorithme de descente • • • • Engendrer une configuration initiale S0 S := S0 Tant que S n’est pas un optimum local, répéter – Choisir S’ de N(s) tel que f(S’) < f(S) – S := S’ Retourner S INF6953 La recherche locale 12 Algorithme de descente avec relances • - Typiquement, on observe que : l’algorithme de descente se termine rapidement. La solution trouvée est de qualité médiocre. • On peut poursuivre la recherche en acceptant des mouvements à coût égal. A noter que, dans ce cas, il faut définir un autre critère de terminaison. • Pour poursuivre la recherche, on peut relancer plusieurs fois l’algorithme de descente, en repartant à chaque fois d’une nouvelle solution engendrée de manière aléatoire. C’est l’algorithme de descente avec relances. INF6953 La recherche locale 13 Schéma d’algorithme de descente avec relances • • Répéter – Engendrer une configuration initiale S0 – S := S0 – Tant que S n’est pas un optimum local, répéter • Choisir S’ de N(s) tel que f(S’) < f(S) • S := S’ Jusqu’à <condition fin> Retourner le meilleur optimum local trouvé INF6953 La recherche locale 14 Algorithme de descente avec relances • La technique de relance possède l’avantage de permettre d’explorer différentes régions de l’espace de recherche : bonne propriété d’exploration. • - Inconvénient Une relance consiste à repartir d’une configuration aléatoire totalement nouvelle. On ne tire donc aucun profit des optima locaux déjà trouvés. Autrement dit, toute l’expérience acquise pendant la recherche est oubliée. En particulier, il est généralement plus efficace de ressortir du bassin d’attraction de l’optimum local atteint et d’atteindre un optimum local «voisin». - • C’est ce qui fait que cette technique est généralement assez peu efficace, en comparaison avec des techniques plus évoluées. INF6953 La recherche locale 15 Idées pour faire mieux que la descente • On ajoute en permanence de l’aléatoire à la technique de descente (randomisation). Autrement dit, on effectue en général un mouvement qui améliore, mais on accepte parfois d’effectuer un mouvement qui dégrade la fonction de coût. Ce type de stratégie est adopté par le recuit simulé et l’amélioration itérative randomisée. • On mémorise les configurations ou régions visitées. On évite ensuite d’y retourner. Ce type de stratégie est adopté par Tabou et GLS. • On effectue une succession de descentes. Quand un optimum local est atteint, on effectue un saut de taille réduite dans l’espace de recherche. Ce type de stratégie est adopté par Iterated Local Search et VNS. INF6953 La recherche locale 16 Idées pour faire mieux que la descente • Quand un optimum local est atteint, on utilise un autre voisinage, généralement un voisinage plus grand. Ce type de stratégie est adopté par VNS et Large Neihborhood Search. • - Algorithme hybride On effectue une succession de descentes. Un algorithme de plus haut niveau permet de construire des configurations en tenant compte des optima locaux déjà trouvés. Ce type de stratégie est adopté les algorithmes mémétiques et les colonies de fourmis. INF6953 La recherche locale 17