0% ont trouvé ce document utile (0 vote)
43 vues55 pages

ch4 1pp

Le document présente différentes stratégies d'exploration informées et non informées, en mettant l'accent sur des algorithmes tels que A*, IDA*, et RBFS. Il explique les concepts de fonctions heuristiques, l'optimalité et la complétude des algorithmes, ainsi que des exemples d'application comme le voyage en Roumanie. Enfin, il aborde la création d'heuristiques et les algorithmes d'amélioration itérative pour résoudre des problèmes d'optimisation.

Transféré par

hibabhs2004
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
43 vues55 pages

ch4 1pp

Le document présente différentes stratégies d'exploration informées et non informées, en mettant l'accent sur des algorithmes tels que A*, IDA*, et RBFS. Il explique les concepts de fonctions heuristiques, l'optimalité et la complétude des algorithmes, ainsi que des exemples d'application comme le voyage en Roumanie. Enfin, il aborde la création d'heuristiques et les algorithmes d'amélioration itérative pour résoudre des problèmes d'optimisation.

Transféré par

hibabhs2004
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Stratégies d’exploration informées

 Stratégies d’exploration non informées


 Ne sont pas très efficaces dans la plupart des
cas.
 Elles ne savent pas si elles approchent du but.
 Stratégies d’exploration informées
 Elles utilisent une fonction d’estimation
 Fonction heuristique.
 Pour choisir les nœuds à visiter.

39
Stratégies d’exploration informée
 Meilleur d’abord (BFS - Best-first)
 Meilleur d’abord gloutonne (Greedy best-first)
 A* (A-Star)
 Algorithmes heuristiques à mémoire limitée
 IDA*, RDFS et SMA*
 Par escalade (Hill-climbing)
 Par recuit simulé (Simulated annealing)
 Exploration locale en faisceau (Local beam)
 Algorithmes génétiques

40
Exemple d’exploration:
Voyage en Roumanie (avec coûts en km)

41
Meilleur d’abord
A
 L’idée principale
 Utiliser une fonction d’évaluation f(B)
 Estimer l’intérêt des nœuds g(B)

 Développer le nœud le plus intéressant. B


 Le nœud à développer est choisi selon une
fonction d’évaluation f(n) h(B)

 Une composante importante de ce type .


.
d’algorithme est une fonction heuristique h(n) .
 Elle estime le coût du chemin le plus court pour se
rendre au but.
 Deux types de recherche meilleur d’abord
but
 Meilleur d’abord gloutonne.
 A*

42
Meilleur d’abord gloutonne
A
 f(n) = h(n) g(B)
f(B) = h(B)

 Donc on choisit toujours de B

développer le nœud le plus h(B)


.

proche du but.
.
.

but

43
Exemple meilleur d’abord gloutonne

366 Arad

253 Sibiu 329 Timisoara 374 Zerind

366 Arad 176 Fagaras 380 Oradea 193 Rimnicu Vilcea

253 Sibiu 0 Bucharest

44
Propriétés - Meilleur d’abord gloutonne

 Complétude : Non
 Car elle peut être prise dans des cycles.
 Mais oui, si l’espace de recherche est fini avec vérification des
états répétés.
 Complexité en temps : O(bm)
 Mais une bonne fonction heuristique peut améliorer grandement
la situation.
 Complexité d’espace : O(bm)
 Elle retient tous les nœuds en mémoire.
 Optimale : Non
 Elle s’arrête à la première solution trouvée.

45
A* (A-star)
 Fonction d’évaluation: f(n) = g(n) + h(n)
 g(n) : coût du nœud de départ jusqu’au nœud n
 h(n) : coût estimé du nœud n jusqu’au but
 f(n) : coût total estimé du chemin passant par n pour se rendre
au but.
 A* utilise une heuristique admissible
 c’est-à-dire h(n) ≤ h*(n)
 h*(n) est le véritable coût pour se rendre de n au but.
 Demande aussi que :
 h(n) ≥ 0, et que
 h(G) = 0 pour tous les buts G.

46
Exemple A*
366 = 0 + 366 Arad

393 = 140 + 253 Sibiu 447 = 118 + 329 Timisoara Zerind


449 = 75 + 374

Arad 415 = 239 + 176 Fagaras Oradea 413 = 220 + 193 Rimnicu Vilcea
646 = 280+ 366 671 = 291 + 380

Craiova 417 = 317 + 100 Pitesti Sibiu


Sibiu Bucharest 526 = 366 + 160 553 = 300 + 253
591 = 338 + 253 450 = 450 + 0

Bucharest Craiova Rimnicu Vilcea


418 = 418 + 0 615 = 455 + 160 607 = 414 + 193

But atteint, la recherche arrête.


47
Propriétés de A*
 Complétude : Oui
 À moins qu’il y est une infinité de nœuds avec f ≤ f(but).
 Complexité de temps : Exponentielle
 Selon la longueur de la solution.
 Complexité en espace : Exponentielle
 Selon la longueur de la solution.
 Elle garde tous les nœuds en mémoire.
 Optimale : Oui
 Habituellement, on manque d’espace longtemps avant de
manquer de temps.

48
Optimalité de A*
 A* développe les noeuds en ordre croissant de valeur f
 Ajoute graduellement des “f-contours” aux noeuds
 Le contour i a tous les noeuds avec f=fi, tel que fi < fi+1

49
Exploration heuristique à mémoire limitée

 A* est parfois trop gourmand en mémoire.


 Il existe des algorithmes pour surmonter ce
problème dont:
 IDA*;
 RBFS;
 SMA*.
 Ces algorithmes permettent de préserver
l’optimalité et la complétude.
 L’augmentation du temps d’exécution est
raisonnable.

50
Exploration heuristique à mémoire limitée

 IDA* (Iterative-deepening A*)


 C’est un algorithme de profondeur itérative
 Utilise la valeur f(n) comme limite
 Contrairement à la profondeur pour IDS.
À chaque itération :
 On fixe la limite à la plus petite valeur f(n) de tous
les nœuds qui avaient une valeur plus grande que
la limite au tour précédent.

51
Exemple IDA*
366 = 0 + 366 Arad Limite: 366

393 = 140 + 253 Sibiu 447 = 118 + 329 Timisoara Zerind


449 = 75 + 374

52
Exemple IDA*
366 = 0 + 366 Arad Limite: 393

393 = 140 + 253 Sibiu 447 = 118 + 329 Timisoara Zerind


449 = 75 + 374

Arad 415 = 239 + 176 Fagaras Oradea 413 = 220 + 193 Rimnicu Vilcea
646 = 280+ 366 671 = 291 + 380

53
Exemple IDA*
366 = 0 + 366 Arad Limite: 413

393 = 140 + 253 Sibiu 447 = 118 + 329 Timisoara Zerind


449 = 75 + 374

Arad 415 = 239 + 176 Fagaras Oradea 413 = 220 + 193 Rimnicu Vilcea
646 = 280+ 366 671 = 291 + 380

Craiova 417 = 317 + 100 Pitesti Sibiu


526 = 366 + 160 553 = 300 + 253

54
Exemple IDA*
366 = 0 + 366 Arad Limite: 415

393 = 140 + 253 Sibiu 447 = 118 + 329 Timisoara Zerind


449 = 75 + 374

Arad 415 = 239 + 176 Fagaras Oradea 413 = 220 + 193 Rimnicu Vilcea
646 = 280+ 366 671 = 291 + 380

Craiova 417 = 317 + 100 Pitesti Sibiu


Sibiu Bucharest 526 = 366 + 160 553 = 300 + 253
591 = 338 + 253 450 = 450 + 0

55
Exemple IDA*
366 = 0 + 366 Arad Limite: 417

393 = 140 + 253 Sibiu 447 = 118 + 329 Timisoara Zerind


449 = 75 + 374

Arad 415 = 239 + 176 Fagaras Oradea 413 = 220 + 193 Rimnicu Vilcea
646 = 280+ 366 671 = 291 + 380

Craiova 417 = 317 + 100 Pitesti Sibiu


Sibiu Bucharest 526 = 366 + 160 553 = 300 + 253
591 = 338 + 253 450 = 450 + 0

Bucharest Craiova Rimnicu Vilcea


418 = 418 + 0 615 = 455 + 160 607 = 414 + 193

56
Exemple IDA*
366 = 0 + 366 Arad Limite: 418

393 = 140 + 253 Sibiu 447 = 118 + 329 Timisoara Zerind


449 = 75 + 374

Arad 415 = 239 + 176 Fagaras Oradea 413 = 220 + 193 Rimnicu Vilcea
646 = 280+ 366 671 = 291 + 380

Craiova 417 = 317 + 100 Pitesti Sibiu


Sibiu Bucharest 526 = 366 + 160 553 = 300 + 253
591 = 338 + 253 450 = 450 + 0

Bucharest Craiova Rimnicu Vilcea


418 = 418 + 0 615 = 455 + 160 607 = 414 + 193

But atteint, la recherche arrête.


57
Exploration heuristique à mémoire limitée

 RBFS (Recursive best-first search)


 Ressemble au meilleur d’abord.
 Idée:
 Conserve en mémoire la valeur f(n) de la meilleure
alternative d’un des ancêtres.
 Si le nœud courant excède cette valeur :
 on garde en mémoire la valeur f(n) du meilleur descendant
 on essaie une autre branche.
 Optimal : comme A* si f(n) est admissible.
 Complexité d’espace : linéaire -- O(bd).
 Plus efficace que IDA*.

58
Exemple RBFS
infini

366 Arad

447

393 Sibiu 447 Timisoara 449 Zerind

417 447
415
646 Arad 671 Oradea 417 413 Rimnicu Vilcea
450 415 Fagaras

447
526 Craiova 417 Pitesti 553 Sibiu
591 Sibiu 450 Bucharest

418 Bucharest 615 Craiova 607 Rimnicu Vilcea


But atteint, la recherche arrête.
59
Algorithme RBFS

60
Recherche à mémoire limitée
 SMA* (Simplified memory bounded A*)
 Exactement comme A*, mais avec une limite sur la mémoire.
 S’il doit développer un nœud et que la mémoire est pleine, il
enlève le plus mauvais nœud et comme RBFS, il enregistre au
niveau du père la valeur du meilleur chemin.
 Complétude : Oui
 S’il y a une solution atteignable
 Optimale : Oui
 Si la solution optimale est atteignable
 Complexité en temps : Peut être très long
 S’il doit souvent regénérer des nœuds.
 Complexité en espace : C’est la mémoire allouée.

61
Fonctions heuristiques
7 2 4
 h1(n) = nombre de tuiles mal placées.
 h2(n) = distance Manhattan totale 5 6
(nombre de cases pour se rendre à la 8 3 1
position désirée pour chaque tuile).
État initial

 h1(n) = 8
1 2
 h2(n) = 3 + 1 + 2 + 2 + 2 + 3 + 3 + 2
3 4 5
= 18
6 7 8

État but
62
Facteur de branchement effectif
 Si N nœuds traités avec une solution de profondeur d
 Alors le facteur de branchement effectif (b*) est le facteur de
branchement d’un arbre uniforme de profondeur d contenant N
nœuds.
 N = 1 + b* + (b*)2 + … + (b*)d
 Plus la valeur de b* s’approche de 1, plus l’heuristique
est efficace.
 Pour déduire la valeur de b*, il suffit de faire des tests de
complexité variable et de calculer la valeur moyenne.
 b* donne une bonne idée de l’utilité de l’heuristique et
permet aussi de comparer des heuristiques.

63
Comparaison

64
Dominance
 Si h2(n) ≥ h1(n) pour tout n (les deux étant admissibles)
 Alors h2(n) domine h1(n)
 Et par conséquent h2(n) est meilleure que h1(n).
 Il est toujours préférable de choisir l’heuristique
dominante, car elle va développer moins de noeuds
 Tous les nœuds avec f(n) < C* vont être développé.
 Donc, tous les nœuds avec h(n) < C* - g(n) vont être développé.
 Par conséquent, tous les nœuds développé par h2(n) vont aussi
être développé par h1(n).
 Et h1(n) peut aussi développé d’autres nœuds.

65
Inventer une heuristique
 Simplifier le problème
 La solution exacte du problème simplifié peut
être utilisée comme heuristique.
 h1(n) est exacte, si une tuile peut être déplacée
à tout endroit.
 h2(n) est exacte, si une tuile peut être déplacée
dans toute cellule adjacente.
 Le coût de la solution optimale pour le problème
simplifié n’est pas plus grand que le coût de la
solution optimale du vrai problème.

66
Algorithmes d’amélioration itérative
 Dans plusieurs problèmes d’optimisation, le chemin n’est
pas important, l’état but est la solution.
 Avec ce type d’algorithme, l’espace de recherche est
l’ensemble des configurations complètes et le but est
soit:
 De trouver la solution optimale
 Ou de trouver une configuration qui satisfait les contraintes
 On part donc avec une configuration complète et, par
amélioration itérative, on essaie d’améliorer la qualité de
la solution.

67
Exemple
 Le problème des n reines
 Mettre n reines sur une planche de jeu de n x
n sans qu’il y ait deux reines sur la même
colonne, ligne ou diagonale.

68
Algorithmes d’amélioration itérative

 Par escalade (Hill-climbing)

 Par recuit simulé (Simulated annealing)

 Exploration locale en faisceau (Local beam)

 Algorithmes génétiques

69
Algorithmes d’amélioration itérative

Par escalade (Hill-climbing)


 À chaque tour, on choisit le successeur ayant la
meilleure évaluation
 Si celle-ci est meilleure que l’évaluation du noeud courant.
 Condition d’arrêt
 Quand aucun des successeurs n’a une meilleure valeur que le
nœud courant.
 Avantage:
 Pas d’arbre de recherche à maintenir
 Pas de retour en arrière.

C’est comme escalader le mont Everest en


plein brouillard en souffrant d’amnésie!

70
Algorithmes d’amélioration itérative
Par escalade (Hill-climbing)

71
Algorithmes d’amélioration itérative - Par escalade

Exemple 8-reines

 h: le nombre de pairs de
reines qui s’attaquent
 Pour cet état : h = 17
 On détermine la valeur
des successeurs
possibles
 c.-à-d. le coup qui permet
de minimiser le nombre
d’attaques

72
Algorithmes d’amélioration itérative - Par escalade

Problèmes de Hill-climbing

 Reste pris souvent :


 Maximum local
 Plateaux
 Crêtes (Ridges)

73
Algorithmes d’amélioration itérative - Par escalade

Exemple minimum local

 Pour cet état : h = 1


 Tous les successeurs
ont une valeur plus
grande.

74
Algorithmes d’amélioration itérative - Par escalade

Redémarrage aléatoire
 Lorsque l’on obtient aucun progrès :
 Redémarrage de l’algorithme à un point de départ différent.
 Sauvegarde de la meilleure solution à date.
 Avec suffisamment de redémarrage, la solution optimale sera
éventuellement trouvée.
 Très dépendant de la surface d’états :
 Si peu de maxima locaux
 La réponse optimale sera trouvée rapidement.
 Si la surface est dentelée
 On ne peut espérer mieux qu’un temps exponentiel.
 Habituellement, on peut espérer une solution
raisonnable avec peu d’itérations.

75
Algorithmes d’amélioration itérative

Recuit simulé (simulated annealing)


 L’idée est de permettre de mauvais déplacements dans le but d’échapper
aux maxima locaux.
 Principe :
 On sélectionner un déplacement aléatoire.
 S’il améliore la situation, il est exécuté.
 Sinon il est exécuté avec une probabilité inférieure à 1.
 Plus le mouvement empire la situation, plus la probabilité que le
mouvement soit choisi est faible.
 Un paramètre T
 Il tend vers zéro avec le temps.
 Il est utilisé pour déterminer la probabilité d’un mauvais mouvement.
 Plus la valeur de T est grande, plus un mauvais mouvement a des chances
d’être exécuté.
 L’algorithme se comporte comme hill-climbing lorsque T tend vers zéro.

76
Algorithmes d’amélioration itérative
Recuit simulé

77
Algorithmes d’amélioration itérative

Recherche locale en faisceau


 Fonctionnement:
 Commence avec k états aléatoires
 À chaque étape, l’algorithme génère tous les
successeurs des k états.
 Si on trouve un but, on arrête.
 Sinon, on choisit les k meilleurs successeurs et on
recommence.
 Recherche en faisceau stochastique
 Les k successeurs sont choisis aléatoirement
 Selon une probabilité proportionnelle à la valeur de la
fonction d’évaluation.

78
Algorithmes d’amélioration itérative

Algorithmes génétiques
 Les AG utilisent certains principes de l'évolution
naturelle:
 Un individu fort a plus de chance de survivre
 Deux individus forts donnent généralement des
enfants forts
 Si l’environnement évolue lentement, les organismes
évoluent et s’adaptent.
 Occasionnellement, des mutations surviennent,
certaines sont bénéfiques et d’autres mortelles.
 Les AG utilisent ces principes pour gérer une
population d'hypothèses (ou individus).

79
Algorithmes génétiques :

Fonctionnement
 Les individus sont souvent décrits par des chaînes de
bits
 Mais elles peuvent aussi être décrites par des entiers, des
expressions symboliques ou des programmes informatiques.
 Fonctionnement:
 On commence avec une population initiale.
 La reproduction et la mutation donnent naissance à la
génération suivante.
 À chaque génération, les individus sont évaluées selon une
certaine fonction d‘adaptation et les meilleures sont celles qui
ont le plus de chance de se reproduire.

80
Algorithmes génétiques :

Algorithme
 Initialiser:(P ← p individus aléatoires)
 Évaluer (Calculer la valeur d’adaptation de chaque hypothèse h)
 Tant que max Fn-Adaptation(h) < Borne utilité
 Créer une nouvelle génération Ps
 Sélectionner:
 Choisir (1-r)p individus de P et les ajouter à Ps selon la probabilité prob(h)
 Reproduire:
 Choisir r*p/2 paires d’individus selon la probabilité prob(h).
 Pour chaque paire produire deux enfants et les ajouter à Ps
 Muter:
 Choisir m% individus de Ps avec une probabilité uniforme
 Modifier un gêne choisi aléatoirement
 Mettre à jour: P ← Ps
 Évaluer: Calculer la valeur d’adaptation de chaque individu
 Retourner l‘individu avec la meilleure valeur d’adaptation

fn _ adaptation(h) p : le nombre d’individus dans la population


prob(h) = p r : le taux de reproduction
∑ j =1
fn _ adaptation(h j )
m : le taux de mutation

81
Algorithmes génétiques :
Algorithme

82
Algorithmes génétiques :
Illustration de l’algorithme

 Exemple de construction de population pour le problème des 8-reines

83
Algorithmes génétiques :
Illustration du croisement

84
Algorithmes génétiques :

Exemple
 Voyageur de commerce
 Trouver le chemin le plus court en passant par toutes
les villes et en revenant au point de départ

1  Gêne: ville
4 5  Individu: liste de villes
2
7
4
 Population: ensemble de
5 parcours
6 2
3

http://wwwsi.supelec.fr/yb/projets/algogen/VoydeCom/VoyDeCom.html
85
Algorithmes génétiques :

Exemple: Reproduction
 On choisit aléatoirement deux points de coupe.
 On intervertit, entre les deux individus, les
parties qui se trouvent entre ces deux points.
 On supprime, à l’extérieur des points de coupes,
les villes qui sont déjà placées entre les points
de coupe.
 On recense les villes qui n’apparaissent pas
dans chacun des deux parcours.
 On remplit aléatoirement les trous dans chaque
parcours.

86
Algorithmes génétiques :

Exemple: Reproduction

87
Algorithmes génétiques :

Exemple: Mutation
 Quand une ville doit être mutée, on choisit
aléatoirement une autre ville dans ce
parcours et on intervertit les deux villes.

88
Algorithmes génétiques :

Exemple: Fonction d’adaptation


 Si le parcours est invalide, c'est l'opposée
du nombre de chemin inexistant
3 chemins inexistants => Utilité = -3
 Si le parcours est valide, c'est l'inverse de
la somme de la distance
 Chemin de longueur 100 => Utilité = 0.01

89
Algorithmes génétiques :

Paramétrage
 Combien d’individus dans une population ?
 Trop peu et tous les individus vont devenir semblables;
 Trop grand et le temps de calcul devient prohibitif.
 Quel est le taux de mutation ?
 Trop bas et peu de nouveaux traits apparaîtront dans la
population;
 Trop haut et les générations suivantes ne seront plus
semblables aux précédentes.
 Taux de reproduction, nombre maximum de générations,
etc.
 Habituellement déterminé par essai et erreur.
90
Algorithmes génétiques parallèles
 Séparer la population en sous-populations
 Appliquer les algorithmes génétiques indépendamment
sur chacune des sous-populations
 On effectue des migrations entre les sous-populations
(copie d'individus d'une population à une autre)
 Permet une certaine diversité entre les individus
 Permet d'éviter que le système tombe dans un maximum local
dû à l'apparition trop hâtive d'un individu dominant

91
Recherche « online »
 Tous les algorithmes précédents sont des algorithmes
« offline ».
 Ils calculent une solution complète avant de l’exécuter et à
l’exécution ils ne font qu’appliquer la solution trouvée.
 Un agent de recherche « online » doit entrelacer les
temps de calculs et d’exécution
 Il fait une action;
 Il observe l’environnement;
 Il choisit sa prochaine action.
 Les algorithmes « online » sont assez différents, parce
qu’il faut tenir compte que l’agent se déplace
 Par exemple, A* ne fonctionne pas « online »

92
Exercice
• Largeur d’abord
A • Coût uniforme
1 • Profondeur d’abord
4
• Profondeur limitée
h=2 B • Profondeur itérative
C h = 10 • Recherche bidirectionnelle
3 2 • Meilleur d’abord avare
2 8 • A*

h=7 D E h=3 F h=5 G h=0

1 7

H h = 11 I h=9

93

Vous aimerez peut-être aussi