A* Pathfinding
Download
Report
Transcript A* Pathfinding
Intelligence Artificielle
Steve Gury
[email protected]
Agenda
Historique
Réseau de neurones
Algorithmes génétiques
MinMax
Algorithme de recherche de chemin
Machines à états
Historique
Terme inventé par John McCarthy en 1956
Définition: Programmes informatiques qui
résolvent des problèmes qui sont habituellement
résolus par des processus mentaux de haut niveau
Historique
Ne pas confondre avec le domaine de
l’intelligence artificielle forte
Le système est capable de produire un
comportement intelligent, mais aussi
d’éprouver une conscience de soi
SkyNet
Historique
Turing initia le concept en 1950
Article « Computing Machinery and Intelligence »
Test de Turing
Différentes Techniques et
leurs applications
Méthodes complexes
Réseaux de neurones
Algorithmes génétiques
Simplifications + heuristiques
MinMax
PathFinding
Machine à état
Agenda
Historique
Réseau de neurones
Algorithmes génétiques
MinMax
Algorithme de recherche de chemin
Machines à états
Réseau de neurones
Imite le fonctionnement
des neurones du
cerveau
Assemble les
neurones en couche
Différentes fonctions
de seuillage
Linéaires
Non linéaires
Réseaux de neurones
Assemblage en réseaux +/- complexes
Utilisations:
Apprentissage + sollicitation (prise de décision)
Segmentation
Exemple d’application
Attaque conditionnée sur jeu de stratégie
Apprentissage
Nombre d’unités en renfort
Nombre et niveau des opposants
Distance à la base
...
Une fois pour toute
En cours de jeu
Sollicitation en jeu
Agenda
Historique
Réseau de neurones
Algorithmes génétiques
MinMax
Algorithme de recherche de chemin
Machines à états
Algorithme génétique
Inspiré de l’évolution des espèces
Idée: Trouver un optimum général en
modifiant une solution existante à un
problème
Algorithme génétique
Ex: Trouver l’altitude maximale de cette
courbe définie par z = f(x,y)
Point initial (x0,y0) aléatoire
Petite variation
Ajout d’erreur
(évite les extremums locaux)
Algorithme génétique
Problème du temps de convergence
Aucune garantie d’avoir un maximum
Exemple d’application
Simulation de systèmes vivants
Gestion de l’apprentissage par renaissance
Ex:
Creatures 1,2 & 3
Docking Station
Agenda
Historique
Réseau de neurones
Algorithmes génétiques
MinMax
Algorithme de recherche de chemin
Machines à états
MinMax
Idée: Prendre une décision en supposant que
l’adversaire va choisir le choix le plus optimal
pour lui
5
3
12
3
5
10
8
5
2
10
11
2
Application du MinMax
Prise de décision dans des jeux à logique
simple
Jeu de carte simple
Jeu de type « échec »
Optimisation avec l’élagage alpha-béta de
l’arbre de décision (McCarthy)
Agenda
Historique
Réseau de neurones
Algorithmes génétiques
MinMax
Algorithme de recherche de chemin
Machines à états
Pathfinding: A*
Algorithme de recherche de chemin entre
deux noeuds d’un graphe
Algorithme simple et rapide mais ne
garantissant pas l’optimalité de la solution
Algorithme majoritairement utilisé dans les
jeux vidéo
Pathfinding: A*
Exemple: On part du point vert pour aller au
point rouge
On ne peut pas marcher sur les cases bleues
Pathfinding: A*
Pour chaque dalle on considère les cases
adjacentes en éliminant les cases inaccessibles
On attribue une note F à chaque case, F étant la
somme du coût pour aller jusqu’à cette case
(noté G) et de l’estimation du coût restant à
parcourir (noté H)
F=G+H
Pathfinding: A*
Dans cet exemple, on attribue un poid différent
entre un déplacement vertical/horizontal (10) et
un déplacement en diagonal (14 ~sqrt(2))
Les déplacements en diagonal seront permis si
et seulement si les deux cases adjacentes à la
diagonale sont libres
Nous utiliserons la méthode « de Manhattan »
pour estimer fonction H, ie. le nombre de cases
horizontales et verticales pour atteindre la
destination
Pathfinding: A*
Pathfinding: A*
Pathfinding: A*
Pathfinding: A*
Pathfinding: A*
Pathfinding: A*
Cet algorithme nous permet de trouver rapidement un
chemin entre deux points, cependant:
Le chemin n’est pas forcément optimal
On peut ne jamais considérer un côté d’une solution
symétrique
Pathfinding: Dijkstra
Algorithme ayant pour but comme A* de
trouver le plus court chemin entre deux points
Dijkstra garantit d’obtenir un résultat optimal
Algorithme polynomial
Pathfinding: Dijkstra
Pathfinding: Dijkstra
Pathfinding: Dijkstra
Pathfinding: Dijkstra
Avantages:
Inconvénients:
Garantit le résultat optimal
Complexité polynomiale
Remarques:
Equivalent à A* avec une méthode d’heuristique
nulle
Pathfinding: Pavages
Les algorithmes de pathfinding fonctionnent
sur des graphes
Soit on génère le pavage au préalable
Soit on le calcul par rapport au décor
Différents types de pavages fixes
Pathfinding: Pavages
Pathfinding: Pavages
La fluidité apparente des solutions de
pathfinding dépendra beaucoup du type de
pavage
Pathfinding: Pavages
Dans les jeux modernes, on utilise un « nav
mesh », ou maillage de navigation à but
unique de pathfinding
Pathfinding: Pavages
La définition des nav-mesh se fait à la main
En général on ne définit que les « way point »
et on calculera le nav-mesh en conséquence
Agenda
Historique
Réseau de neurones
Algorithmes génétiques
MinMax
Algorithme de recherche de chemin
Machines à états
Machines à états
Même dans les jeux modernes, l’intelligence
artificielle se résume souvent à une suite de
comportements préalablement scriptés
Les agents artificiellement intelligents du jeu
mutent d’un état à un autre selon certaines
conditions pré-établies
Machines à états
Ex: Scripting d’un garde dans un jeu d’action
Attaquer
Patrouiller
passivement
Patrouiller
activement
Se
protéger