Recherches locales et méta-heuristiques Méthodes de preuves Optimisation Satisfaction de contraintes Chapitre 6
Comparaison méthodes complètes / incomplètes
Comparaison méthodes complètes / incomplètes Les méthodes complètes utilisent un mécanisme de raffinement Décomposition : décomposer une instances en sous instances indépendantes Filtrage : interdire des affectations partielles qui sont infaisables ou sous optimales Les méthodes incomplètes utilisent un mécanisme de transformation Mouvement (flip), réparation locale Poursuite d’un gradient local Diversification, aléatoire Espace de recherche Coût
Cadre commun : optimisation combinatoire Définition Chercher une affectation complète A* dans un espace d’état E fini qui minimise une fonction objectif f(A) A* E / f(A*) = minAE f(A) A* est une solution optimale du problème f(A*) est l’optimum Exemples de fonctions objectifs SAT : f(A) = nombre de clauses insatisfaites par A problème Max-SAT CSP : f(A) = nombre de contraintes violées par A problème Max-CSP MPE : f(A) = 1 – P(A)
Schéma générique Recherche par améliorations successives Recherche locale Schéma générique Recherche par améliorations successives
Paysage de recherche locale plateau minimum local optimum
Recherche locale Voisinage d’une solution A Ensemble des solutions obtenues en appliquant une modification élémentaire sur A (par ex., modification de la valeur d’une variable) Propriété d’ergodicité (toute solution est atteignable) Mouvement Remplace la solution courante A par une solution sélectionnée dans le voisinage de A Essai Ensemble de mouvements; chacun part d’une solution initiale différente (fournie par une heuristique)
Recherche locale Fonction Recherche Locale ( ) A* Génère solution initiale () Pour t = 1 à Max Essais Faire A Génère nouvelle solution initiale () Pour m = 1 à Max Mouvements Faire A’ Sélectionne dans voisinage ( A ) Si f(A’) < f(A*) Alors A* A’ Si Accepter?( A, A’ ) Alors A A’ retourner Pas trouvé mieux que A* , f(A*) Cas particulier d’arret anticipé: une solution de cout zero a ete trouvee
Modes de sélection et d’acceptation Descente simple Sélection aléatoire et acceptation si f(A’) ≤ f(A) Descente gloutonne Sélection et acceptation du meilleur voisin (même si f(A’)>f(A)) Descente avec minimisation des conflits (cas CSP) Sélection aléatoire parmi les variables impliquées dans un conflit et choix aléatoire parmi les meilleures valeurs Sélection aléatoire parmi les solutions de même coût (évite de répéter la même séquence de mouvements)
Recherche par améliorations successives plateau minimum local optimum
Intensification et diversification Exploiter le passé de la recherche pour focaliser la recherche sur des zones prometteuses de l’espace de recherche Par ex., croisement de deux bonnes solutions en conservant les parties communes (même affectation des variables) et en faisant une affectation aléatoire pour le reste Diversification Explorer de nouvelles zones de l’espace de recherche Naïf : affectation aléatoire des variables Intelligent : affectation aléatoire biaisée par la fréquence d’apparition des valeurs des les solutions visitées Compromis entre intensification et diversification Par ex., réglage du compromis Max Mouvements / Max Essais
Méta-heuristiques Comment sortir des minima locaux Dégradation de la solution courante Marche aléatoire Recuit Simulé Recherche Tabou Modification du voisinage – Recherche à voisinages variables Modification de l’objectif – Recherche guidée Méthodes exploitant une population de solutions
Si p est grand alors « marche aléatoire ». Comment régler p ? Fonction Descente simple avec ajout de bruit ( p ) A* Génère solution initiale () Pour t = 1 à Max Essais Faire A Génère nouvelle solution initiale () Pour m = 1 à Max Mouvements Faire A’ Sélection aléatoire dans voisinage ( A ) Si f(A’) < f(A*) Alors A* A’ Si f(A’) ≤ f(A*) Alors A A’ Sinon Faire A A’ avec une probabilité p retourner Pas trouvé mieux que A* , f(A*) Cas particulier d’arret anticipé: une solution de cout zero a ete trouvee Si p est grand alors « marche aléatoire ». Comment régler p ?
(© Lionel Lobjois, CNAM 98)
Recuit simulé T1 T2
Recuit simulé Fonction Recuit Simulé ( Tinit, Tmin, g ) Tinit choisie telle que p 50% Tmin choisie telle que p proche de 0% Fonction Recuit Simulé ( Tinit, Tmin, g ) A* Génère solution initiale () ; A A* ; T Tinit Tant que (T Tmin) Faire Pour m = 1 à Max Mouvements Faire A’ Sélection aléatoire dans voisinage ( A ) Si f(A’) < f(A*) Alors A* A’ Si f(A’) ≤ f(A*) Alors A A’ Sinon Faire A A’ avec une probabilité T T . g retourner Pas trouvé mieux que A* , f(A*) Cas particulier d’arret anticipé: une solution de cout zero a ete trouvee
Recherche tabou
Recherche tabou Fonction RechercheTabou ( p ) A* Génère solution initiale () Pour t = 1 à Max Essais Faire A Génère nouvelle solution initiale () ListeTabou Pour m = 1 à Max Mouvements Faire A Sélection gloutonne dans voisinage(A) excepté voisins dans ListeTabou Si f(A) < f(A*) Alors A* A MiseAJour(ListeTabou) retourner Pas trouvé mieux que A* , f(A*) Cas particulier d’arret anticipé: une solution de cout zero a ete trouvee
Recherche Tabou Liste tabou Permet d’éviter les cycles dans la séquence de mouvements Implantation par une liste circulaire ou un âge des mouvements Trop coûteux de mémoriser des solutions, mémorise seulement une liste d’attributs de solutions, par ex. des mouvements interdits ({x=a} {x=b}) Perte d’information (1 mvt interdit = nombreuses solutions interdites) Réglage dynamique de la longueur de la liste tabou à augmenter si solutions fréquemment répétées (diversification) à diminuer en cas d’absence d’améliorations (intensification) réglage aléatoire périodique parmi [Lmin, Lmax] Critère d’aspiration Autoriser des mouvements tabou qui mènent à une meilleure solution
Recherche Tabou guidée par l’historique de la recherche Mémoire court-terme Liste tabou Mémoire long-terme Dernière date (itération) à laquelle une valeur a été choisie Fréquence d’affectation d’une valeur à une variable diversification : favoriser le choix de valeurs rarement utilisées Qualité : identifier des parties de solution de bonne qualité exploiter ces parties dans la construction d’une solution initiale
Recherche à voisinage variable Différents minima locaux suivant le voisinage.
Recherche à voisinage variable 3 constats Un minimum local par rapport à un voisinage n’en est pas nécessairement un par rapport à un autre Un minimum global est un minimum local par rapport à tous les voisinages possibles Pour de nombreux problèmes, les minimaux locaux par rapport à un ou à plusieurs voisinages sont relativement proches l’un de l’autre Plusieurs variables d’une solution localement optimale gardent la même valeur dans une solution optimale Comment savoir quelle partie conserver ? Idée : tester différents voisinages remettant en cause plus ou moins de variables
Recherche à voisinage variable
Recherche à voisinage variable (VNS) Fonction Variable Neighborhood Search ( N1,N2,…, Nkmax ) A* Génère solution initiale () ; A A* Pour t = 1 à Max Essais Faire k 1 Tant que k ≤ kmax Faire A’ Sélection aléatoire dans voisinage Nk ( A ) A’’ Recherche locale simple( A’ ) Si f(A’’) < f(A*) Alors A* A’’ Si f(A’’) < f(A) Alors A A’’ ; k 1 Sinon k k + 1 retourner Pas trouvé mieux que A* , f(A*) Cas particulier d’arret anticipé: une solution de cout zero a ete trouvee |N1| < |N2| <… < |Nkmax|
Recherche locale à l’intérieur de VNS Fonction Descente gloutonne avec voisinages multiples ( A, N1,N2,…, Nkmax’ ) Répéter jusqu’à absence d’amélioration k 1 Tant que k ≤ kmax’ Faire A’ Sélection gloutonne dans voisinage Nk ( A ) Si f(A’) < f(A) Alors A A’ Sinon k k + 1 retourner Pas trouvé mieux que A , f(A) Methode deterministe. |N1| |N2| … |Nkmax’| , souvent kmax’ ≤ 2
Recherche décomposée à voisinage variable (VNDS) Fonction VariableNeighborhoodDecompositionSearch( kmax ) A* Génère solution initiale () A A* Pour t = 1 à Max Essais Faire k 1 Tant que k ≤ kmax Faire Sélection aléatoire de k variables libres, le reste étant fixé A’ Recherche locale simple sur le sous-problème à k var Si f(A’) < f(A*) Alors A* A’ Si f(A’) < f(A) Alors A A’ ; k 1 Sinon k k + 1 retourner Pas trouvé mieux que A* , f(A*) Cas particulier d’arret anticipé: une solution de cout zero a ete trouvee Possibilité d’hybridation avec une méthode complète pour explorer le ss-pb
Modification de l’objectif
Modification de l’objectif Définition d’un ensemble de m attributs caractérisant une solution Par exemple, la violation d’une clause en SAT ou d’une contrainte en CSP pi : paramètre de pénalité : note l’importance (i.e. le coût) d’avoir l’attribut i dans la solution : paramètre de régularisation Ii(A) : fonction indicatrice Ii(A) = 1 : si attribut i présent dans la solution A Ii(A) = 0 : sinon
Modification de l’objectif Recherche locale guidée (GLS) Fonction Guided Local Search ( ) A* Génère solution initiale () A A* pi 0 Pour t = 1 à Max Essais Faire A’ Recherche locale simple (A, f ’ ) Si f(A’) < f(A*) Alors A* A’ Pour tous les attributs i d’utilité maximum Ui(A’) Faire pi pi + 1 Si t mod T = 0 Alors pi pi. /* [0,1[ : facteur d’atténuation */ retourner Pas trouvé mieux que A* , f(A*) Cas particulier d’arret anticipé: une solution de cout zero a ete trouvee ci : contribution de l’attribut i au coût
Méthodes exploitant une population de solutions = recherches locales en parallèle ?
(© Lionel Lobjois, CNAM 98) recherche locale dirigée par des mémoires oscillations stratégiques : alterner intensification et diversification
Programmation à mémoire adaptative Initialiser la mémoire Répéter Construire une solution en s’aidant de la mémoire Améliorer la solution avec une recherche locale Mettre à jour la mémoire Eric Taillard, EIVD, Yverdon, JFRO2003
Problème de planification des prises de vues du satellite Pleiades
Example of a solution Transition time constraint Image duration, reward and acquisition angle constraint
Target and polygon requests Polygons are composed of several strips Every strip has two possible images
Stereo and mono requests A stereo strip must be acquired twice (twin strip) and both in the same direction
Piecewise linear convex objective function : factor applied on the reward of the request : percentage of the total request area that is acquired
Large Neighborhood Search [Shaw98] Initial solution Resulting solution Additional image 1) Remove one (V) image 2) Keep the order between the remaining selected images 3) All the rejected images are candidates 4) Partial exploration of the neighborhood
Total of 10 millions of moves in 5 minutes!!! Enhanced simulated annealing algorithm E.J. Kuipers, TNO, The Netherlands Part A. Find a most promising solution Fast simulated annealing (60% cpu time, i.e. 6-12 runs) Initial temperature: 0.5 * AverageGain, cooling factor: 0.9, plateau length: 8000. Stops after 80 iterations. Performs 40,000 moves/sec on a PIII 850Mhz with a large neighborhood Step 1: Removing 1, 2, 3 or 4 requests (or part of requests) uniform randomly Step 2: Adding 1, 2, 3 or 4 requests (or part of requests) weighted randomly w_req_i = sum_strips_i( gain_k / duration_k ) Greedy insertion of strips that minimizes the total transition time Only feasible solutions Library of good partial schedules (5 strips) learnt at runtime: post-optimization Progressive de-focusing on the largest strips Modified objective function: increasing solution flexibility Part B. Further optimize the best solution of part A Fast simulated annealing without restarting from the empty solution Total of 10 millions of moves in 5 minutes!!!
Unified Tabu Search Algorithm [2001] J. -F. Cordeau & G Unified Tabu Search Algorithm [2001] J.-F. Cordeau & G. Laporte, HEC, Canada Neighborhood with possible infeasible solutions Insert or remove a mono strip or two twin stereo strips with orientations Reverse the direction of a mono strip or two twin stereo strips Choose best insertion position (solution flexibility) Possible violations of time window constraints Modified objective function objective = gain(solution) – α . w(solution) with w(solution) = sum( time window violation ) and α = 1, then α multiplied by 1+ if feasible or by 1- if infeasible randomly chosen in [0,1] at each iteration Post-optimization and diversification mechanisms Every 100 iterations, best reinsert every selected strip Insertion penalty proportional to the strip frequency in the solutions Restarts every 100 iter. from the best known solution with some shuffling
ROADEF'2003 : Results of the final stage Teams (senior category) Grades based on ONERA-CNES evaluations Solving method Language Ranking TNO-PEL: Kuipers - The Netherlands 31.76 (0.4) Simulated annealing - 1 HEC-Crt-GERAD: Cordeau, Laporte - Canada 30.84 (1.1) Tabu search C 2 LGI2P-EMA-EERIE: Vasquez, Vimont, Vlasak - France 30.28 C / C++ 3 DIRO-Crt: Gendreau, Jaumard, Morales - Canada 30.10 (0.8) 4 Poznan Univ. of Technology: Jaszkiewicz - Poland 29.91 (0.8) 5 TNO-PEL: Bloemen - The Netherlands 29.69 (0.7) 6 Bouygues e-Lab: Caseau - France 29.08 Large Neighborhood Search in Constraint Programming Claire 7 Thales-INRA: de Givry, Jeannin - France 23.56 Claire / Eclair / ToOLS 8