web-dev-qa-db-fra.com

Où puis-je trouver des informations sur l'algorithme de recherche de cheminement D * ou D * Lite?

Il y a des liens vers des articles sur D * ici , mais ils sont un peu trop mathématiques pour moi. Existe-t-il des informations sur D */D * Lite plus destinées aux débutants?

32
tehalynn

Wikipedia a un article sur le sujet: http://en.wikipedia.org/wiki/D*

Une implémentation de D * Lite en C est également disponible sur la page de Sven Koenig: http://idm-lab.org/code/dstarlite.tar Cependant, je trouve les calculs impénétrables beaucoup plus faciles à lire que le code source C; -)

Une autre implémentation de D * Lite (en C++) est disponible ici: http://code.google.com/p/dstarlite/

12
michid

Eh bien, si le pseudo-code est difficile pour vous (vous n'avez pas à lire les théorèmes et les preuves - le pseudo-code est assez simple si vous connaissez les algorithmes standard) et que vous vous plaignez contre le code publié C et C++, alors vous devrez vous en aller. faire autre chose :-)

Sérieusement, ne vous attendez pas à ce que quelqu'un puisse vous apprendre un algorithme de haut niveau dans quelques paragraphes Web. Prenez un stylo et du papier et écrivez, dessinez et suivez sur papier ce qui se passe. Vous devrez peut-être lire quelque chose deux fois et chercher une ou deux références sur Google pour en savoir plus sur quelques concepts. Il n'est pas nécessaire de creuser des théorèmes et des preuves - à moins que vous n'espériez prouver à l'auteur qu'il a tort :-) )

On ne peut pas avancer sans plus de maths - c'est la vie. Imaginez que vous ayez demandé à quelqu'un de vous apprendre ce qu'est l'inversion de matrice, mais vous ne savez pas ce que sont des vecteurs. Personne ne pourrait vous aider avant d’avoir suffisamment appris le contexte mathématique.

11
ZXX

Cela dit, pourquoi ne pas ajouter quelques articles de plus, oui, ils ont aussi des maths :-) mais je vais essayer d’obtenir des informations plus récentes. Les gens sont de mieux en mieux à même d'expliquer leur travail au fil du temps; l'accent est donc mis sur Stentz, Likhachev et Koenig.

7
ZXX

D * Lite Explication pour le profane

D * commence par un corbeau, chemin idéal entre Startet Goalname__; il gère les obstacles uniquement au fur et à mesure de leur rencontre (généralement en se déplaçant dans un nœud adjacent). C’est-à-dire que D * Lite n’a connaissance d’aucun obstacle jusqu’à ce que il commence à se déplacer sur cette trajectoire idéale.

Le Saint Graal, quelle que soit l’implémentation de pathfinding, consiste à faire vite tout en obtenant le chemin le plus court, ou au moins un chemin décent (ainsi que la gestion de toutes vos différentes conditions spéciales ici. Pour D * Lite, il s’agit d’une carte inconnue. Mars Rover pourrait faire]).

L'un des grands défis de D * Lite est donc de s'adapter aux obstacles à moindre coût, à mesure qu'ils sont atteints. Il est facile de les trouver - il vous suffit de vérifier le statut de nœud des voisins au fur et à mesure de vos déplacements. Mais comment adapter les estimations de coûts de la carte existante sans parcourir tous les nœuds… ce qui pourrait être très coûteux?

LPA * utilise un truc astucieux pour adapter les coûts, un truc que D * Lite a mis à profit. Le nœud actuel demande à ses voisins: Vous me connaissez mieux, pensez-vous que je suis réaliste par rapport à moi? Spécifiquement, il pose cette question à propos de sa valeur gname__, qui représente le coût connu pour se rendre du noeud initial à lui-même, c’est-à-dire au noeud actuel. Les voisins examinent leur propre gname__, voient où le nœud actuel est par rapport à eux, puis proposent une estimation de ce que ils pensent que son coût devrait être. Le minimum de ces offres est défini comme la valeur rhsdu nœud actuel, qui est ensuite utilisée pour mettre à jour sa valeur gname__; lors de l'estimation, les voisins prennent en compte le ou les obstacles nouvellement découverts (ou espaces libres), de telle sorte que, lorsque les mises à jour en cours gutilisent rhsname__, les nouveaux obstacles (ou espaces libres) correspondants sont pris en compte.

Et une fois que nous avons des valeurs gréalistes dans tous les domaines, un nouveau chemin le plus court apparaît.

5
Engineer

Je suis venu avec ça
http://idm-lab.org/bib/abstracts/papers/aaai02b.pdf et cela
http://www.cs.cmu.edu/~maxim/docs/dlitemap_iros02.pdf

J'espère que ces liens vous aideront :)
Edit: Après avoir posté, j’ai remarqué que les liens que je vous avais donnés étaient également dans le lien que vous avez indiqué. Néanmoins, j'ai trouvé ceux directement sur Google. Quoi qu'il en soit, je les ai un peu examinées et elles ne semblent pas si compliquées. Si vous connaissez bien A *, vous devriez également pouvoir comprendre D *.
Par expérience, je peux vous dire que A * peut également être utilisé pour ce que vous voulez.

1
Sanctus2099

Les notes de classe CMU de Maxim Likhachev sont très instructives. Il contient un exemple de propagation des modifications dynamiques survenues sur votre graphique. Explique également l'idée de sous-cohérence qui est très importante pour comprendre les algorithmes. http://www.cs.cmu.edu/~maxim/classes/robotplanning_grad/lectures/execanytimeincsearch_16782_fall18.pdf

0
ayuka