In den letzten Jahren wurden viele Pfadfindungsalgorithmen entwickelt, mit denen der beste Pfad in Reaktion auf Diagrammänderungen viel schneller als mit A * berechnet werden kann - was sind sie und wie unterscheiden sie sich? Sind sie für verschiedene Situationen oder veralten einige andere?
Dies sind die, die ich bisher finden konnte:
- D * (1994)
- Fokussiertes D * (1995)
- DynamicSWSF-FP (1996)
- LPA (1997)
- LPA * / Inkrementelles A * (2001)
- D * Lite (2002)
- SetA * (2002)
- HPA * (2004)
- Jederzeit D * (2005)
- PRA * (2005)
- Feld D * (2007)
- Theta * (2007)
- HAA * (2008)
- GAA * (2008)
- LEARCH (2009)
- BDDD * (2009 - Ich kann nicht auf dieses Dokument zugreifen: |)
- Inkrementelles Phi * (2009)
- GFRA * (2010)
- MTD * -Lite (2010)
- Baum-AA * (2011)
Ich bin nicht sicher, welche davon für mein spezielles Problem zutreffen - ich lese sie bei Bedarf alle durch, aber es würde mir viel Zeit sparen, wenn jemand eine Zusammenfassung schreiben könnte.
Mein spezielles Problem: Ich habe ein Gitter mit einem Anfang, einem Ende und einigen Wänden. Ich benutze derzeit A *, um den besten Weg vom Start bis zum Ziel zu finden.
Der Benutzer wird dann eine Wand verschieben , und ich muss den gesamten Pfad erneut berechnen. Der Schritt "Wand verschieben / Pfad neu berechnen" kommt oft hintereinander vor, daher suche ich nach einem Algorithmus, mit dem der beste Pfad schnell neu berechnet werden kann, ohne dass eine vollständige Iteration von A * ausgeführt werden muss.
Ich suche jedoch nicht unbedingt nach einer Änderung von A * - es könnte sich um einen völlig separaten Algorithmus handeln.
quelle
Antworten:
Also überflog ich die Papiere und das schimmerte. Wenn es jemanden gibt, der sich mit dem Thema besser auskennt, korrigieren Sie mich bitte, wenn ich falsch liege (oder fügen Sie Ihre eigene Antwort hinzu, und ich werde sie stattdessen akzeptieren!) .
Links zu den einzelnen Artikeln finden Sie oben im Fragebogen.
Angesichts all dessen scheint LPA * für mein Problem am besten geeignet zu sein.
quelle
Es gibt eine große Einschränkung bei der Verwendung von D *, D * -Lite oder einem der inkrementellen Algorithmen in dieser Kategorie (und es ist erwähnenswert, dass diese Einschränkung in der Literatur selten erwähnt wird). Diese Arten von Algorithmen verwenden eine umgekehrte Suche. Das heißt, sie berechnen die Kosten vom Zielknoten nach außen, wie eine Welligkeit, die sich nach außen ausbreitet. Wenn sich die Kosten für Kanten ändern (z. B. wenn Sie in Ihrem Beispiel eine Wand hinzufügen oder entfernen), verfügen alle über verschiedene effiziente Strategien, um nur die Teilmenge der untersuchten (auch als "besuchte" bezeichneten) Knoten zu aktualisieren, die von den Änderungen betroffen sind.
Die große Einschränkung besteht darin, dass die Position dieser Änderungen in Bezug auf die Zielposition einen enormen Unterschied für die Effizienz der Algorithmen darstellt. Ich habe in verschiedenen Abhandlungen und meiner These gezeigt, dass es durchaus möglich ist, dass die schlechteste Leistung eines dieser inkrementellen Algorithmen schlechter ist, als alle Informationen wegzuwerfen und mit etwas neuem zu beginnen, das nicht inkrementell ist, wie einfaches altes A *.
Befinden sich die geänderten Kosteninformationen in der Nähe des Umfangs der erweiterten Suche (der "besuchten" Region), müssen nur wenige Pfade geändert werden, und die inkrementellen Aktualisierungen sind schnell. Ein einschlägiges Beispiel ist ein mobiler Roboter, an dessen Körper Sensoren angebracht sind. Die Sensoren sehen nur die Welt in der Nähe des Roboters, und daher sind die Änderungen in dieser Region. Diese Region ist der Startpunkt der Suche, nicht das Ziel, und so funktioniert alles gut und die Algorithmen sind sehr effizient bei der Aktualisierung des optimalen Pfads, um die Änderungen zu korrigieren.
Wenn sich die geänderten Kosteninformationen dem Ziel der Suche nähern (oder in Ihrem Szenario die Zieländerungsorte und nicht nur der Start angezeigt werden), kommt es zu einer katastrophalen Verlangsamung dieser Algorithmen. In diesem Szenario müssen fast alle gespeicherten Informationen aktualisiert werden, da sich der geänderte Bereich so nahe am Ziel befindet, dass fast alle vorberechneten Pfade die Änderungen durchlaufen und neu ausgewertet werden müssen. Aufgrund des Mehraufwands beim Speichern zusätzlicher Informationen und Berechnungen für inkrementelle Aktualisierungen ist eine Neubewertung in dieser Größenordnung langsamer als ein Neustart.
Da in Ihrem Beispielszenario der Benutzer scheinbar jede gewünschte Wand verschieben kann, tritt dieses Problem auf, wenn Sie D *, D * -Lite, LPA * usw. verwenden. Die Zeitleistung Ihres Algorithmus ist je nach Benutzer unterschiedlich Eingang. Im Allgemeinen "das ist eine schlechte Sache" ...
Als Beispiel hatte Alonzo Kellys Gruppe an der CMU ein fantastisches Programm namens PerceptOR, das versuchte, Bodenroboter mit Luftrobotern zu kombinieren, wobei alle Wahrnehmungsinformationen in Echtzeit ausgetauscht wurden. Als sie versuchten, das Planungssystem eines Bodenfahrzeugs mit einem Hubschrauber in Echtzeit auf den neuesten Stand zu bringen, stießen sie auf dieses Problem, da der Hubschrauber dem Bodenfahrzeug vorausfliegen und die Kosten näher am Ziel liegen und sich somit verlangsamen könnte ihre Algorithmen nach unten. Haben sie diese interessante Beobachtung besprochen? Nein. Am Ende gelang es ihnen am besten, den Hubschrauber direkt über dem Bodenfahrzeug fliegen zu lassen - und es damit zum teuersten Sensormast der Welt zu machen. Klar, ich bin kleinlich. Aber es ist ein großes Problem, über das niemand sprechen möchte - und sie sollten,
Es gibt nur eine Handvoll Papiere, die dies diskutieren, hauptsächlich von mir. Von den Arbeiten, die von den Autoren oder Studenten der Autoren der in dieser Frage aufgeführten Originalarbeiten verfasst wurden, fällt mir nur eine ein, die dieses Problem tatsächlich erwähnt. Likhachev und Ferguson schlagen vor, den Umfang der erforderlichen Aktualisierungen abzuschätzen und die gespeicherten Informationen zu löschen, wenn die inkrementelle Aktualisierung voraussichtlich länger dauert als ein Neustart. Dies ist eine vernünftige Lösung, aber es gibt auch andere. Meine Doktorarbeit verallgemeinert einen ähnlichen Ansatz auf ein breites Spektrum von Rechenproblemen und geht über den Rahmen dieser Frage hinaus. Sie finden die Referenzen jedoch möglicherweise nützlich, da sie einen umfassenden Überblick über die meisten dieser Algorithmen und mehr bietet. Siehe http://db.acfr.usyd.edu.au/download.php/Allen2011_Thesis.pdf?id=2364 für Details.
quelle
Die Hauptidee ist, einen inkrementellen Algorithmus zu verwenden, der in der Lage ist, die vorherigen Berechnungen zu nutzen, wenn die anfänglich berechnete Route blockiert wird. Dies wird häufig im Zusammenhang mit Robotern, Navigation und Planung untersucht.
Koenig & Likkachev, Schnelles Umplanen für die Navigation in unbekanntem Gelände, IEEE Transactions on Robotics, Vol. 3, No. 3, Juni 2005, stellt D * Lite vor. Man kann mit Sicherheit sagen, dass D * in dem Sinne veraltet ist, dass D * Lite immer so schnell ist wie D *. Darüber hinaus ist D * komplex, schwer zu verstehen, zu analysieren und zu erweitern. 9 gibt den Pseudocode für D * Lite an, und Tabelle 1 zeigt experimentelle Ergebnisse mit D * Lite im Vergleich zu BFS, Rückwärts A *, Vorwärts A *, DynamicSWSF-P und D *.
Ich kenne die neueren Algorithmen, die Sie auflisten, nicht (Anytime D *, Field D *, LEARCH). Vor kurzem habe ich einen Roboter gesehen, der D * Lite für die Planung in einer Umgebung mit zufälligen Gehern verwendet hat. In diesem Sinne denke ich nicht, dass D * Lite auf keinen Fall veraltet ist. Für Ihr praktisches Problem gibt es wohl keinen Nachteil, wenn Sie die übliche technische Vorgehensweise ausprobieren: Gehen Sie einen Ansatz vor, und wenn er nicht Ihren Anforderungen entspricht, probieren Sie etwas anderes (komplexeres) aus.
quelle
Ich möchte etwas über das schnelle Erkunden von zufälligen Bäumen oder RRTs hinzufügen. Die Grundidee wird im Internet gut diskutiert, aber es ist wahrscheinlich sicher, mit den Links von der Wikipedia-Seite und mit den Originalarbeiten von Kuffner und LaValle zu diesem Thema zu beginnen.
Das wichtigste Merkmal von RRTs ist, dass sie mit realwertigen Räumen von extrem hoher Dimension umgehen können, ohne zu ersticken. Sie können mit Dynamik umgehen, sind nicht optimal, aber wahrscheinlichkeitstheoretisch vollständig (garantiert erfolgreich, wenn die Rechenzeit unendlich ist) und können sich bewegende Ziele handhaben. Es gibt einige Erweiterungen, mit denen sie in nicht statischen Bereichen arbeiten können. Das Beste davon scheint die mehrteilige RRT-Arbeit zu sein, die ich unten verlinkt habe.
quelle
Datenstrukturen, Distanz-Orakel genannt, behandeln solche Probleme. Die meisten Forschungsergebnisse beziehen sich jedoch nur auf statische Diagramme.
Handelt es sich bei den Diagrammen um Raster (und damit um ebene), existieren einige dynamische Datenstrukturen (unklar, ob die Konstanten für die betreffende Anwendung klein genug sind):
Genaue kürzeste Wege:
Jittat Fakcharoenphol, Satish Rao: Planare Graphen, negative Gewichtungskanten, kürzeste Wege und nahezu lineare Zeit. J. Comput. Syst. Sci. 72 (5): 868-889 (2006)
Ungefähre kürzeste Wege:
Philip N. Klein, Sairam Subramanian: Ein vollständig dynamisches Approximationsschema für kürzeste Pfade in planaren Graphen. Algorithmica 22 (3): 235 & ndash; 249 (1998)
Ittai Abraham, Shiri Chechik und Cyril Gavoille: Volldynamische ungefähre Entfernungsangaben für ebene Graphen über verbotene Entfernungsangaben. STOC 2012: 1199-1218
quelle
In der Schule habe ich mich mit der Optimierung von Ameisenkolonien beschäftigt . In einigen Texten wurde es als eine Lösung für sich ständig ändernde Grafiken, Routing-Netzwerke usw. angepriesen. Es ist keine technische Lösung, sondern eine Anpassung dessen, wie Ameisen um Hindernisse navigieren, indem sie Pheromone ausbreiten, um gute und schlechte Wege zu markieren. Ich habe keine Ahnung, ob es für Ihr Problem funktioniert, aber ich denke, es ist ein interessanter Standpunkt.
quelle