La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Recherche de chemins de coût minimal avec lalgorithme A* Mise en œuvre pratique Olivier NOCENT IUT de Reims-Châlons-Charleville rue des crayères, BP 1035.

Présentations similaires


Présentation au sujet: "Recherche de chemins de coût minimal avec lalgorithme A* Mise en œuvre pratique Olivier NOCENT IUT de Reims-Châlons-Charleville rue des crayères, BP 1035."— Transcription de la présentation:

1 Recherche de chemins de coût minimal avec lalgorithme A* Mise en œuvre pratique Olivier NOCENT IUT de Reims-Châlons-Charleville rue des crayères, BP Reims Cedex 2

2 Introduction Objectif : Déterminer, pour un agent * donné, un chemin de coût minimum depuis un sommet source vers un sommet destination au sein dun graphe orienté. Un agent est un objet informatique autonome utilisé pour représenter une entité mobile dotée dun comportement (humain, animal, véhicule, …)

3 Applications Jeux vidéo Animation des personnages non joueurs (RPG, FPS) Déplacement réaliste dun personnage contrôlé par le joueur vers un objectif désigné par le joueur (RTS) Simulation – vie artificielle Etude du comportement dune foule, du traffic automobile, … Effets spéciaux (scènes de bataille, …)

4 Représentation du graphe à partir dinformations topographiques

5 Relations dadjacence : grille carrée Prairie Rivière Pont

6 Relations dadjacence : grille hexagonale Prairie Rivière Pont

7 Relations dadjacence : points visibles Obstacles Couloirs

8 Coût des arcs Signification du coût dun arc : Distance kilométrique Recherche de chemins de longueur minimale Temps (nécessaire au franchissement de larc) Recherche de chemins en temps minimum Consommation de carburant Rechercher de chemins « économes »

9 Coût des arcs : grille carrée 10

10 Coût des arcs : grille hexagonale 10 Triangle équilatéral

11 Coût des arcs : pondération en fonction de la nature de lenvironnement Prairie Montagne

12 Coût des arcs : pondération en fonction de la nature de lagent CC Coût du franchissement dun pont C = 10 pour un humain. C = 50 pour une voiture. C = 500 pour un semi-remorque.

13 Algorithme A*

14 Principe général : évaluation du coût total dun sommet Coût total (F) = Coût depuis la source (G) + Coût vers la destination (H) G : Coût depuis la source Algorithmes classiques (Ford, Bellman, Dijkstra) G i = min G j + C ij / i prédecesseur de j C ij coût de larc (i,j) H : Coût vers la destination Difficile puisque le reste du chemin (vers la destination) est encore inconnu.

15 Coût vers la destination Pourquoi évaluer un coût vers la destination ? Afin de resserrer lensemble des sommets à explorer en privilégiant les sommets « qui semblent » nous rapprocher de la destination. Remarque Dans le cas dun algorithme de recherche plus classique (Dijsktra), on effectue une recherche exhaustive parmi TOUS les sommets. Conséquence lalgorithme A* est plus performant que nimporte quel autre algorithme puisquil diminue lensemble des sommets à explorer.

16 Coût vers la destination Comment évaluer un coût vers la destination ? En utilisant des heuristiques (prédictions) afin dévaluer un coût vers la destination INFERIEUR au coût réel (encore inconnu). A ce titre, A* est un algorithme optimiste. Remarque Si lheuristique était supérieur au coût réel, on risquerait de générer un chemin qui ne soit pas minimal.

17 Distance euclidienne S D 40 H 20 Théorème de Pythagore H 2 = (Coté oppose) 2 + (Coté adjacent) 2 H 2 = = 2000 H = 20 x (5) 1/2

18 Distance de Manhattan S D Nombre de cellules, en horizontal et en vertical entre la source et la destination. Plus conforme à la nature des déplacements autorisés (haut, bas, gauche, droite)

19 Algorithme A* Initialisation Sommet source (S) Sommet destination (D) Liste des sommets à explorer (E) : sommet source S Liste des sommets visités (V) : vide Tant que (la liste E est non vide) et (D nest pas dans E) Faire + Récupérer le sommet X de coût total F minimum. + Ajouter X à la liste V + Ajouter les successeurs de X (non déjà visités) à la liste E en évaluant leur coût total F et en identifiant leur prédécesseur. + Si (un successeur est déjà présent dans E) et (nouveau coût est inférieur à lancien) Alors Changer son coût total Changer son prédécesseur FinSi FinFaire

20 Exemple 1 S D S D Sommet source Sommet destination Obstacle

21 Exemple 1 S D Sommet déjà visité Sommet à explorer G + H Coût depuis la source Coût vers la destination Référence au prédécesseur

22 Exemple 1 S D Sommet déjà visité Sommet à explorer G + H Coût depuis la source Coût vers la destination Référence au prédécesseur

23 Exemple 1 S D Sommet déjà visité Sommet à explorer G + H Coût depuis la source Coût vers la destination Référence au prédécesseur

24 Exemple 1 S D Sommet déjà visité Sommet à explorer G + H Coût depuis la source Coût vers la destination Référence au prédécesseur

25 Exemple 1 S D Sommet déjà visité Sommet à explorer G + H Coût depuis la source Coût vers la destination Référence au prédécesseur

26 Exemple 1 S D Sommet déjà visité Sommet à explorer G + H Coût depuis la source Coût vers la destination Référence au prédécesseur

27 Exemple 1 S D Sommet déjà visité Sommet à explorer G + H Coût depuis la source Coût vers la destination Référence au prédécesseur

28 Exemple 1 S D Sommet déjà visité Sommet à explorer G + H Coût depuis la source Coût vers la destination Référence au prédécesseur

29 Exemple 1 S Sommet déjà visité Sommet à explorer G + H Coût depuis la source Coût vers la destination Référence au prédécesseur

30 Exemple 1 S D

31 Exemple 2 S D S D Sommet source Sommet destination Obstacle

32 Exemple 2 S D Sommet déjà visité Sommet à explorer G + H Coût depuis la source Coût vers la destination Référence au prédécesseur

33 Exemple 2 S D Sommet déjà visité Sommet à explorer G + H Coût depuis la source Coût vers la destination Référence au prédécesseur

34 Exemple 2 S D Sommet déjà visité Sommet à explorer G + H Coût depuis la source Coût vers la destination Référence au prédécesseur

35 Exemple 2 S D Sommet déjà visité Sommet à explorer G + H Coût depuis la source Coût vers la destination Référence au prédécesseur

36 Exemple 2 S D Sommet déjà visité Sommet à explorer G + H Coût depuis la source Coût vers la destination Référence au prédécesseur

37 Exemple 2 S D Sommet déjà visité Sommet à explorer G + H Coût depuis la source Coût vers la destination Référence au prédécesseur

38 Exemple 2 S D Sommet déjà visité Sommet à explorer G + H Coût depuis la source Coût vers la destination Référence au prédécesseur

39 Exemple 2 S D Sommet déjà visité Sommet à explorer G + H Coût depuis la source Coût vers la destination Référence au prédécesseur

40 Exemple 2 S D Sommet déjà visité Sommet à explorer G + H Coût depuis la source Coût vers la destination Référence au prédécesseur

41 Exemple 2 S D Sommet déjà visité Sommet à explorer G + H Coût depuis la source Coût vers la destination Référence au prédécesseur

42 Exemple 2 S D Sommet déjà visité Sommet à explorer G + H Coût depuis la source Coût vers la destination Référence au prédécesseur

43 Exemple 2 S D Sommet déjà visité Sommet à explorer G + H Coût depuis la source Coût vers la destination Référence au prédécesseur

44 Exemple 2 S Sommet déjà visité Sommet à explorer G + H Coût depuis la source Coût vers la destination Référence au prédécesseur

45 Exemple 2 S D

46 Structure des données : détail dimplémentation Initialisation Sommet source (S) Sommet destination (D) Liste des sommets à explorer (E) : sommet source S Liste des sommets visités (V) : vide Tant que (la liste E est non vide) et (D nest pas dans E) Faire + Récupérer le sommet X de coût total F minimum. + Ajouter X à la liste V + Ajouter les successeurs de X (non déjà visités) à la liste E en évaluant leur coût total F et en identifiant leur prédécesseur. + Si (un successeur est déjà présent dans E) et (nouveau coût est inférieur à lancien) Alors Changer son coût total Changer son prédécesseur FinSi FinFaire

47 Structure des données : détail dimplémentation Nécessité de mettre en œuvre un conteneur permettant de : Récupérer un élément de coût total minimum. Insérer un nouvel élément et trier le conteneur. Mettre à jour le coût total dun élément déjà présent dans le conteneur. Déterminer si le conteneur est vide.

48 Solution « élégante » : files Template class std::queue { public: … bool empty(); T pop() {return pop_front();} void push(T t) { push_back(t);} }; t push(t) pop()

49 Solution « élégante » : files à priorité Le type T doit surcharger lopérateur de comparaison < Template class std::priority_queue { public: … bool empty(); T pop() {return pop_front();} void push(T t) { /*insertion triée*/ } }; t push(t)pop()

50 Insertion triée « efficace » Utilisation dun arbre binaire déléments Le fils gauche est strictement inférieur au nœud courant. Le fils droit est supérieur ou égal au nœud courant

51 Structure des données : std::priority_queue Nécessité de mettre en œuvre un conteneur permettant de : Récupérer un élément de coût total minimum : OUI Insérer un nouvel élément et trier le conteneur : OUI Mettre à jour le coût total dun élément déjà présent dans le conteneur : NON Déterminer si le conteneur est vide : OUI

52 Structure de données personnalisée : MyPriorityQueue template class MyPriorityQueue { public : T pop(); void push(); private: std::vector heap; };

53 Structure de données personnalisée : MyPriorityQueue template T MyPriorityQueue::pop() { // Lélément le plus grand est au début // du conteneur heap : position 0. T value = heap.front(); // 1. Déplace le premier élément à la position N-1. // 2. Trie les éléments de la position 0 à N-2 std::pop_heap(heap.begin(), heap.end(), Inf()); // Supprime lélément en position N-1 // cest à dire, lancien premier. heap.pop_back(); return value; }

54 Structure de données personnalisée : MyPriorityQueue template T MyPriorityQueue::push(T value) { // Ajout de la valeur en queue du conteneur // position N. heap.push_back(value); // Trie les éléments de la position 0 à N. std::push_heap(heap.begin(), heap.end(), Inf()); return value; }

55 Un peu de lecture Game Programming Gems 1 by Mark de DeLoura ( Charles River Media ) August,


Télécharger ppt "Recherche de chemins de coût minimal avec lalgorithme A* Mise en œuvre pratique Olivier NOCENT IUT de Reims-Châlons-Charleville rue des crayères, BP 1035."

Présentations similaires


Annonces Google