Exploration informée

Transcription

Exploration informée
Exploration informée
Jerôme Champavère
jerome.champavere @ lifl.fr
http://www.grappa.univ-lille3.fr/~champavere/?page=Enseignement
Stratégies d'exploration informée
Exploration « meilleur d'abord »
●
●
Best-first search
Algorithme d'exploration en arbre (ou en graphe) avec une
fonction d'évaluation f(n)
–
–
–
●
●
Dépend, en général, de la description du nœud n, de la description du
but, de l'information cumulée jusqu'à ce point, et de toute autre
connaissance relative au problème (Pearl, 1984)
Sélection du nœud avec l'évaluation la plus faible
Implémentation via une file de priorité maintenant la frontière dans
l'ordre croissant des valeurs de f
Choix du nœud qui semble le meilleur, compte-tenu de la
fonction d'évaluation
Fonction heuristique h(n) : coût estimé du chemin le moins
coûteux menant du nœud n à un but
Recherche gloutonne
●
Greedy search
●
Développe le nœud le plus proche de but
●
Évaluation des nœuds avec f(n) = h(n)
Recherche gloutonne
●
Itinéraire : aller de Toulouse à Paris
●
Heuristique : distance à vol d'oiseau
Bordeaux
498
Brest
504
Clermont-F.
346
Dijon
346
Grenoble
481
Limoges
346
Lyon
392
Marseille
661
Montpellier
595
Nantes
342
Rennes
308
Rouen
111
Toulouse
588
Recherche gloutonne
Toulouse
588
1
2
Limoges
346
Bordeaux
498
3
Bordeaux
498
Montpellier
595
Toulouse
588
Nantes
342
Limoges
346
Brest
504
4
Nantes
342
Rennes
308
5
Paris
0
Rouen
108
Recherche gloutonne
A
54
63
B
65
C
31
75
E
58
47
D
© Editor at Large / Wikimedia Commons
Recherche gloutonne
●
Similaire à l'exploration en profondeur d'abord
●
Ni optimale, ni complète
●
Complexité en temps et en espace : O(bm)
Exploration A*
●
●
« A étoile »
Minimisation du coût total estimé
de la solution : f(n) = g(n) + h(n)
–
–
–
●
g(n) : coût du chemin entre le nœud
de départ et le nœud n
h(n) : coût estimé du chemin le
moins onéreux de n au but
f(n) : coût estimé de la solution la
moins onéreuse passant par n
Équivaut à l'exploration à coût
uniforme si h(n) = 0 pour tout n
S
g(n)
f(n)
n
h(n)
G
Exploration A*
●
Optimalité
–
–
Exploration en arbre : oui si h(n) est admissible,
c'est-à-dire si h(n) ne surestime jamais le coût pour
atteindre le but
Exploration en graphe : oui si h(n) est consistante,
càd, pour tout n, n', a, h(n) ≤ coût(n,a,n') + h(n')
A
10
8
h(A) = 10
coût(A,A→B,B) + h(B) = 2 + 5 = 7
⇒ h(A) > coût (A,A→B,B) + h(B)
⇒ inconsistance
2
B
5
7
G
0
Exploration A*
●
●
●
Complétude : oui si b est fini et coûts
d'étape > 0
Efficacité optimale quelle que soit la
fonction heuristique
Complexité en temps et en espace :
exponentielle dans la longueur de la
solution optimale
–
–
A* est généralement à court de mémoire
bien avant d'être à court de temps
Variantes de A* pour résoudre le
problème de l'espace
Explorations heuristiques
à mémoire limitée
IDA*
●
●
●
Iterative-Deepening A*
Exploration itérative en profondeur adaptée au
contexte de l'exploration heuristique
Limite utilisée : coût de f (g + h) au lieu de la
profondeur
RBFS
●
●
●
Recursive Best-First Search (Korf, 1993)
Exploration « meilleur d'abord » récursive qui
n'utilise qu'un espace linéaire
Mémorise la valeur f du meilleur chemin
alternatif parmi les ancêtres du nœud courant
RBFS
function RBFS(problème)
RBFS-REC(problème,CRÉÉR-NŒUD-ÉTAT-INITIAL(problème),∞)
function RBFS-REC(problème,nœud,limite)
if TEST-ÉTAT-FINAL(problème,ÉTAT(nœud)) then
return SOLUTION(nœud)
successeurs ← DÉVELOPPER(nœud,problème)
if successeurs est vide then
return échec,∞
foreach s ∈ sucesseurs do
f[s] ← max(g(s)+h(s),f[nœud])
loop
meilleur ← nœud ayant la plus faible valeur f dans successeurs
if f[meilleur] > limite then
return échec,f[meilleur]
alternative ← deuxième plus faible valeur f dans successeurs
résultat,f[meilleur] ← RBFR-REC(problème,meilleur,
min(limite,alternative))
if résultat ≠ échec then
return résultat
RBFS
●
Un peu plus efficace que IDA*
●
Optimal si h(n) est admissible
●
Complexité en espace : O(bd)
●
Complexité en temps : exponentielle
SMA*
●
●
Simple Memory-Bounded A*
Développe la meilleure feuille jusqu'à ce que la
mémoire soit pleine
–
–
Supprime le nœud feuille le moins favorable
Comme RBFS, mémorise la valeur du nœud oublié
au niveau de son parent
SMA*
●
●
●
Complétude : oui s'il existe une solution
accessible
Optimalité : oui s'il existe une solution optimale
accessible
Compromis espace / temps
Fonctions heuristiques
—
Jeu de taquin
Jeu de taquin à 8 pièces
●
Facteur de branchement : ≃ 3
●
Coût moyen de la solution : 22 étapes
–
Exploration exhaustive en profondeur : 322 ≈ 3.1010 états
–
En mémorisant les états dupliqués : 181 440 états
–
Mais taquin à 15 pièces : 1013 états
26 étapes
Heuristiques pour le jeu de taquin
●
●
●
h1 : nombre de pièces mal
placées
h2 : somme des distances
des pièces par rapport à
leur position cible suivant
la distance de
Manhattan
h2 domine h1 :
h2(n) ≥ h1(n) pour tout n
h1 = 8
h2 = 3+1+2+2+2+3+3+2 = 18
Création d'heuristiques
Problème relaxé
●
●
●
●
●
●
Problème formel : « Une pièce peut passer de la case A à la case B
–
si A est adjacent à B et
–
si B est vide. »
Problème relaxé
–
« Une pièce peut passer de la case A à la case B si A est adjacent à B. » : h2
–
« Une pièce peut passer de la case A à la case B si B est vide. » (Gaschnig, 1979)
–
« Une pièce peut passe de la case A à la case B. » : h1
Le coût d'une solution optimale à un problème relaxé est une heuristique admissible
pour le problème initial
Si l'heuristique dérivée est un coût exact pour le problème relaxé, elle est consistante
Les problèmes relaxés doivent pouvoir être résolus facilement, idéalement sans
exploration
Si l'on dispose d'une collection d'heuristiques admissibles h1,…,hm et qu'aucune ne
domine, on peut définir h(n) = max{h1(n),…,hm(n)}
Création d'heuristiques
Bases de données de motifs
●
●
●
●
Définir des heuristiques à partir du coût de la solution d'un sous-problème
Mémoriser les coûts des solutions exactes de tous les exemples de sousproblèmes possibles
Base de données construite en explorant en amont à partir de l'état final et en
enregistrant le coût de chaque nouveau motif rencontré
Réduction du nombre de nœuds générés d'un facteur 1000 pour la résolution
du problème du taquin à 15 pièces
Création d'heuristiques
Apprentissage
●
●
Définir des heuristiques à partir du coût de
chaque solution optimale d'un problème
Algorithme d'apprentissage inductif pour
construire une fonction h(n) qui prédit les coûts
des solutions pour les autres états qui
surviennent dans l'exploration
Algorithmes d'exploration locale
et problèmes d'optimisation
Problèmes d'optimisation
●
Problèmes dans lesquels le chemin vers le but
n'est pas pertinent
–
–
●
Problème jouet : les 8 dames
Problèmes du monde réel : conception de circuits
intégrés, ordonnancement d'ateliers, de tâches,
programmation automatique, optimisation de
réseaux de télécommunication, routage de
véhicules, etc.
Trouver le meilleur état selon une fonction
objectif
Exploration locale
●
●
Algorithmes d'exploration locale
–
Ne tiennent pas compte des chemins
–
N'utilisent qu'un seul état courant
–
Ne s'occupent que du voisinage de l'état courant
Avantages par rapports aux algorithmes
systématiques
–
–
Consomment très peu de mémoire
Trouvent des solutions raisonnables dans des
espaces d'états de grande taille ou infinis (continus)
Paysage de l'espace des états
Exploration par escalade
●
●
Hill-climbing
Idée générale : « Atteindre le sommet de
l'Everest dans un épais brouillard tout en
souffrant d'amnésie. »
function HILL-CLIMBING(problème)
courant ← CRÉÉR-NŒUD-ÉTAT-INITIAL(problème)
loop
voisin ← un successeur de courant ayant une valeur plus élevée
if VALEUR(voisin) ≤ VALEUR(courant) then
return ÉTAT(courant)
courant ← voisin
Exploration par escalade
h = 17
h=1
minimum local
(5 itérations)
Exploration par escalade
●
●
Pour quelles raisons l'escalade échoue ?
–
Maxima locaux
–
Crêtes
–
Plateaux et paliers
Variantes
–
Déplacement latéral
–
Escalade stochastique
–
Escalade du premier choix
–
Escalade avec reprise aléatoire
Exploration par recuit simulé
●
●
●
Simulated annealing
Combine escalade (intensification) et parcours
aléatoire (diversification)
Inspiré de la métallurgie
–
–
Équilibre énergétique lors de la cristallisation des
métaux
Paramètre de température qui décroît avec avec le
temps
Exploration par recuit simulé
function SIMULATED-ANNEALING(problème,cadence)
courant ← CRÉÉR-NŒUD-ÉTAT-INITIAL(problème)
for t = 1 to ∞ do
T ← cadence[t]
if T = 0 then
return courant
suivant ← un voisin de courant choisi au hasard
∆E ← VALEUR(suivant) – VALEUR(courant)
if ∆E > 0 then
courant ← suivant
else
courant ← suivant avec une probabilité de e∆E/T
Exploration locale en faisceau
●
Local beam search
●
Mémorise k états au lieu d'un seul
–
–
–
–
●
Commence avec k états générés aléatoirement
À chaque étape, tous les successeurs des k états
sont générés
Si l'un d'eux est un but, l'algorithme s'arrête
Sinon, il sélectionne les k meilleurs successeurs et
recommence
Variante stochastique : sélectionne les k
successeurs au hasard
Algorithme génétique
●
●
●
●
Variante de l'exploration en faisceau
stochastique
États successeurs générés en combinant deux
états parents au lieu de modifier un seul état
Maintien d'une population de k individus,
autrement dit en ensemble de k états
Représentation des individus sous forme de
chaînes de caractères (généralement 0 et 1)
Algorithme génétique
24748552
32752411
24
32752411
327 48552
32748152
24748552
247 52411
24752411
32752411
32752 124
32252124
24415124
24415 411
24415417
Sélection
Recombinaison
Mutation
23
20
24415124
32543213
11
Population
Fonction
initiale
d'adaptation
Algorithme génétique
function GENETIC-ALGORITHM(population,ADAPTATION)
courant ← CRÉÉR-NŒUD-ÉTAT-INITIAL(problème)
do
nouvelle_population ← Ø
for i = 1 to TAILLE(population) do
x ← SÉLECTION-ALÉATOIRE(population,ADAPTATION)
y ← SÉLECTION-ALÉATOIRE(population,ADAPTATION)
enfant ← REPRODUIRE(x,y)
if [petite probabilité aléatoire] then
enfant ← MUTER(enfant)
nouvelle_population ← nouvelle_population ∪ {enfant}
population ← nouvelle_population
while un individu convienne suffisamment ou
suffisamment de temps s'est écoulé
return meilleur individu de le population selon ADAPTATION
function REPRODUIRE(x,y)
n ← LONGUEUR(x)
c ← nombre aléatoire compris entre 1 et n
return AJOUTER(SOUS-CHAÎNE(x,1,c),SOUS-CHAÎNE(y,c+1,n))
Exercice
Taquin à 8 pièces et A*
●
Développer l'algorithme A* pour le problème du
taquin à 8 pièces avec l'heuristique h2 puis h1.

Documents pareils