グラフ(D *、D * -Lite、LPA *など)を変更するための最先端の経路探索アルゴリズムはどのように異なりますか?


96

近年、グラフの変化に応じてA *よりもはるかに高速に最適なパスを計算できる多くのパスファインディングアルゴリズムが開発されています。それらは何で、どのように違いますか。それらはさまざまな状況のためですか、それとも時代遅れのものですか?


これらは私がこれまでに見つけたものです:

これらのどれが私の特定の問題に当てはまるかわかりません-必要に応じてすべて読みますが、誰かが要約を書くことができれば、時間を大幅に節約できます。


私の特定の問題:開始、終了、およびいくつかの壁があるグリッドがあります。現在、開始から終了までの最適なパスを見つけるためにA *を使用しています。

画像2

ユーザーが1つの壁を移動すると、パス全体を再計算する必要があります。「移動壁は/パスを再計算」ステップは、行で何回も起こるので、私はすぐに*の完全な反復を実行することなく、最適なパスを再計算することができるようになりますアルゴリズムを探しています。

ただし、私は必ずしもA *の変更を探しているわけではありません。完全に別のアルゴリズムである可能性があります。


3
D *をご覧になりましたか?これはインクリメンタルアルゴリズムであり、正しく覚えていれば、まさにこのような状況を処理するはずです。私はかつて、環境内にランダムな歩行者がいる場所を見つけるためにそれを使用したロボットを見ました。
-Juho

7
@Kaveh:動的経路探索アルゴリズム「研究レベル」の最新技術の概要を求めないのはなぜですか?フィールド-D *が5未満歳、そしてLEARCHは3未満..です
BlueRaja -ダニーPflughoeft

7
これがこのフォーラムにとって適切な質問ではない理由はわかりません。これは決して解決し、古いトピックです
スレシュヴェンカト

5
@ BlueRaja-DannyPflughoeftまた、これは良い研究レベルの質問だと思います。コメントに基づいて回答を追加し、少し展開します。
十宝

4
@ BlueRaja-DannyPflughoeft redditでリンクされました。
U2EF1

回答:


77

だから、私は論文をざっと読み、これが私が光らせたものです。主題にもっと知識のある人がいる場合、私が間違っているなら私を修正してください(またはあなた自身の答えを追加して、代わりに受け入れます!)

各論文へのリンクは、上記の質問投稿にあります。

  • 簡単な再計算
    • D * (別名Dynamic A *(1994):最初の実行では、D *はA *と非常によく似て実行され、最初から最後まで非常に迅速に最適なパスを見つけます。ただし、ユニットが開始から終了に移動するときに、グラフが変更されると、D *はそのユニットの位置からフィニッシュまでの最適なパスを非常に迅速に再計算できます。ただし、D *は非常に複雑であるという評判があり、はるかに単純なD * -Liteによって完全に廃止されました。
    • Focused D *(1995):D *を改良し、より高速/「よりリアルタイムに」。私はD * -Liteとの比較を見つけることはできませんが、これが古く、D * -Liteの方がより多く話されていることを考えると、D * -Liteが何らかの形で優れていると思います。
    • DynamicSWSF-FP(1996):すべてのノードから終了ノードまでの距離を格納します。すべての距離を計算するための大きな初期設定があります。グラフを変更すると、距離が変更されたノードのみを更新できます。A *とD *の両方とは無関係です。各変更後に複数のノードから終点までの距離を検索する場合に便利です。それ以外の場合は、LPA *またはD * -Liteが通常より便利です。
    • LPA * /インクリメンタルA *(2001):インクリメンタルA *としても知られるLPA * (生涯計画A *)(および紛らわしいことに、「LPA」とも呼ばれますが、LPAという他のアルゴリズムとは関係ありません) DynamicSWSF-FPとA *の組み合わせ。最初の実行では、A *とまったく同じです。ただし、グラフにわずかな変更を加えた後、同じ開始/終了ペアからの後続の検索では、以前の実行の情報を使用して、A *と比較して、調べる必要があるノードの数を大幅に削減できます。これはまさに私の問題なので、LPA *が最適だと思われます。LPA *はD *とは異なり、常に同じ開始から同じ終了までの最適なパスを見つけます。開始点が移動しているときは使用されません(最初の最適パスに沿って移動するユニットなど)。しかしながら...
    • D * -Lite(2002):このアルゴリズムはLPA *を使用してD *を模倣します。つまり、LPA *を使用して、ユニットが初期の最適パスに沿って移動し、グラフが変化するときに、ユニットの新しい最適パスを見つけます。D * -LiteはD *よりもはるかに単純であると見なされ、常に少なくとも D *と同じ速度で実行れるため、D *は完全に廃止されました。したがって、D *を使用する理由はありません。代わりにD * -Liteを使用してください。
  • あらゆる角度の動き
    • フィールドD *(2007):グリッドへの移動を制限しないD * -Liteのバリアント。つまり、最適なパスでは、グリッドポイント間の45度(または90度)だけでなく、任意の角度に沿ってユニットを移動させることができます。火星探査機の経路探索にNASAによって使用されました。
    • Theta *(2007):フィールドD *よりも優れた(短い)パスを提供するA *のバリアント。ただし、D * -LiteではなくA *に基づいているため、Field D *のような高速な再計画機能はありません。 も参照してください
    • Incremental Phi *(2009):両方の長所。増分であるTheta *のバージョン(別名、迅速な再計画が可能)
  • ターゲットポイントの移動
    • GAA *(2008):GAA * (Generalized Adaptive A *)は、移動するターゲットポイントを処理するA *のバリアントです。これは、「Moving Target Adaptive A *」と呼ばれるさらに以前のアルゴリズムの一般化です
    • GRFA *(2010):GFRA * (Generalized Fringe-Retrieving A *)は、FRA *と呼ばれる別のアルゴリズムの手法を使用して、GAA *を任意のグラフ(つまり、2Dに限定されない)に一般化したように見えます(?)
    • MTD * -Lite(2010):MTD * -Lite (Moving Target D * -Lite)は、「一般化されたフリンジ検索A *の背後にある原理を使用するD * Liteの拡張」であり、移動ターゲット検索を迅速に再計画します。
    • Tree-AA *(2011):(???)未知の地形を検索するためのアルゴリズムのように見えますが、このセクションの他のすべてのアルゴリズムと同様に、Adaptive A *に基づいているため、ここに配置します。このセクションの他の製品との比較がわかりません。
  • 高速/準最適
    • Anytime D *(2005):これは、D * -LiteをAnytime Repairing A *と呼ばれるアルゴリズムと組み合わせることにより行われる、D * -Liteの「Anytime」バリアントです。「Anytime」アルゴリズムは、任意の時間制約の下で実行できるアルゴリズムです。最初から非常に短時間で非常に最適でないパスを見つけ、与えられた時間が経過するにつれてそのパスを改善します。
    • HPA *(2004):HPA * (Hierarchical Path-Finding A *)は、RTS (リアルタイム戦略)ビデオゲームなど、大きなグラフ上の多数のユニットをパス検索するためのものです。それらはすべて異なる開始位置を持ち、潜在的に異なる終了位置を持ちます。HPA *は、グラフを階層に分割して、これらのすべてのユニットの「最適に近い」パスを、各ユニットで個別にA *を実行するよりもはるかに迅速に見つけるようにします。 こちらもご覧ください
    • PRA *(2005):私の理解では、PRA * (Partial Refinement A *)はHPA *と同じ問題を解決しますが、方法は異なります。どちらにも「類似のパフォーマンス特性」があります。
    • HAA *(2008):HAA * (Hierarchical Annotated A *)は、HPA *の一般化であり、一部の地形上の一部のユニットの制限された横断を可能にします(例:一部のユニットは通過できますが、より大きなユニットは通過できません;または飛行ユニットのみが通過できる穴など)
  • その他/不明
    • LPA(1997):LPA (Loop-free path-finding algorithm)は、ここで他のアルゴリズムが解決する問題にわずかに関連するルーティングアルゴリズムであるように見えます。この論文は、LPA *を紹介する論文として、インターネット上のいくつかの場所で紛らわしく(そして誤って)参照されているため、言及しただけです。
    • LEARCH(2009):LEARCHは、機械学習アルゴリズムの組み合わせであり、ロボットに独自に最適に近い経路を見つける方法を教えるために使用されます。著者は、より良い結果を得るために、LEARCHとField D *を組み合わせることを提案しています。
    • BDDD *(2009):??? 論文にアクセスできません。
    • SetA *(2002):??? これは、明らかに、グラフの「二分決定図」(BDD)モデルを検索するA *のバリアントですか?彼らは、いくつかのケースで「A *よりも数桁速い」と主張しています。しかし、私が正しく理解している場合、それらのケースはグラフ上の各ノードに多くのエッジがあるときですか?

これらすべてを考えると、LPA *が私の問題に最適であると思われます。


まあ..また、@ lhriosによるこの論文は、アルゴリズムのいくつかを比較しています。
mg007

これは古いことは知っていますが、Field D *の説明に小さな欠陥があることに注意する価値があると思います。通常のD *は「グリッド」に制約されず、離散グラフに制約されます。論文のポイントは、A *、D *などを機能させるために、連続するスペースをチャンクに離散化する必要があることです。これにより、移動できる角度が制限されます。フィールドD *はその制約を排除し、後継者の状態を離散的な方法ではなく連続的な方法で処理できるようにします(多少なりともトリックが必要です)。例として2Dグリッドを使用するだけで、D * / A *などは決してグリッドに制約されません。
LinearZoetrope 2013

Field D *はグリッドに限定されていることに言及する必要がありますが、この論文では3Dバージョンで動作したことを言及しています。これは、使用する補間によるものです。A *とD *は、任意の数の後続状態を持つグラフで機能することは依然として変わりません。フィールドD *は、D *がグリッドベースの計画を使用するシナリオの単なる改善です。
LinearZoetrope 2013

フィールドD *とシータ* /インクリメンタルファイ*の重要な違いは、フィールドD *が各正方形に固有の重みを持つことができることです。一方、シータ*とインクリメンタルファイ*は、訪問できるすべての正方形で同じ重みを持つことに制限されています。したがって、インクリメンタルファイ*はフィールドD *より優れていません。
HelloGoodbye

1
@Jsor:Field D *の3Dバージョンです:3D Field D-JPL Robotics
HelloGoodbye

16

D *、D * -Lite、またはこのカテゴリのインクリメンタルアルゴリズムのいずれかを使用する場合、大きな警告があります(この警告が文献でめったに言及されていないことに注意する価値があります)。これらのタイプのアルゴリズムは逆検索を使用します。つまり、外部に広がる波紋のように、目標ノードから外部にコストを計算します。エッジのコストが変化する場合(例で壁を追加または削除する場合)、それらはすべて、変更の影響を受ける探索済み(「訪問済み」)ノードのサブセットのみを更新するためのさまざまな効率的な戦略を持ちます。

大きな注意点は、目標の位置に対するこれらの変更の位置がアルゴリズムの効率に大きな違いをもたらすということです。さまざまな論文と私の論文で、これらのインクリメンタルアルゴリズムの最悪の場合のパフォーマンスは、すべての情報を捨てて、プレーンオールドA *のような非インクリメンタルなものから新たに開始するよりも悪い可能性があることを示しました。

変更されたコスト情報が拡張検索フロント(「訪問済み」領域)の境界に近い場合、変更する必要のあるパスはほとんどなく、増分更新は高速です。適切な例は、体にセンサーが取り付けられた移動ロボットです。センサーはロボットの近くの世界のみを見るため、変化はこの地域にあります。この領域は、目標ではなく検索の開始点であるため、すべてがうまく機能し、アルゴリズムは最適なパスを更新して変更を修正するのに非常に効率的です。

変更されたコスト情報が検索の目標に近づいた場合(またはシナリオが開始点だけでなく目標の変更位置を確認した場合)、これらのアルゴリズムは致命的なスローダウンを被ります。このシナリオでは、変更された領域が目標に非常に近いため、事前に計算されたほとんどすべてのパスが変更を通過し、再評価する必要があるため、保存された情報のほとんどすべてを更新する必要があります。追加の情報と計算を保存して増分更新を行うオーバーヘッドのため、このスケールでの再評価は新たに開始するよりも時間がかかります。

このシナリオ例では、ユーザーが望む壁を移動できるように見えるため、D *、D * -Lite、LPA *などを使用すると、この問題が発生します。アルゴリズムの時間パフォーマンスは、ユーザーによって異なります。入力。一般的に、「これは悪いことです」...

例として、CMUのAlonzo Kellyのグループには、地上ロボットと空中ロボットを組み合わせて、知覚情報をリアルタイムで共有しようとするPerceptORという素晴らしいプログラムがありました。ヘリコプターを使用して地上車両の計画システムにリアルタイムでコストの更新を提供しようとすると、ヘリコプターが地上車両の前方を飛行し、目標に近いコストの変化を見て、減速するため、この問題に直面しましたアルゴリズムをダウン。彼らはこの興味深い観察結果について議論しましたか?いいえ。結局のところ、彼らが管理した最善の方法は、ヘリコプターを地上車両の真上に飛ばすことでした。これは世界で最も高価なセンサーマストになりました。確かに、私はささいなことです。しかし、誰も話したくないというのは大きな問題です。

これについて議論する論文はほんの一握りしかありませんが、ほとんどが私です。この質問にリストされた元の論文の著者または著者の学生によって書かれた論文のうち、実際にこの問題に言及しているのは1つだけと考えることができます。LikhachevとFergusonは、必要な更新の規模を推定し、増分更新が新たな開始よりも時間がかかると推定される場合は、保存されている情報をフラッシュすることを提案します。これはかなり賢明な回避策ですが、他にもあります。私の博士号は、幅広い計算問題にわたって同様のアプローチを一般化しており、この質問の範囲を超えていますが、これらのアルゴリズムの大部分などの概要を網羅しているため、参考文献が役立つ場合があります。http://db.acfr.usyd.edu.au/download.php/Allen2011_Thesis.pdf?id=2364を参照してください 詳細については。


1
これらの詳細を追加していただきありがとうございます:)私のアプリケーションでは、壁は最初と最後に向かって移動します。BFS、A *、およびLPA *を実装しました。*は、実際にBFSよりわずかに遅かった(私のスペースが限定される傾向にあるので、*のみBFSよりやや少ないノードを検索し、その間BFSのみプライオリティキューができるよりも速くなるように実装することができたキューを、必要とする)が、 LPA *を使用すると、平均して2倍以上速くなります。
BlueRaja-ダニーPflughoeft

9

主なアイデアは、最初に計算されたルートがブロックされたときに以前の計算を利用できるインクリメンタルアルゴリズムを使用することです。これは多くの場合、ロボット、ナビゲーション、計画のコンテキストで調査されます。

Koenig&Likkachev、未知の地形でのナビゲーションの高速再計画、IEEE Transactions on Robotics、Vol。21、No。3、2005年6月はD * Liteを紹介しています。D * Liteは常にD *と同じくらい速いという意味で、D *は時代遅れだと言っても安全なようです。さらに、D *は複雑で、理解、分析、拡張が困難です。図9はD * Liteの擬似コードを示し、表1はBFS、Backward A *、Forward A *、DynamicSWSF-PおよびD *と比較したD * Liteの実験結果を示しています。

リストした新しいアルゴリズム(Anytime D *、Field D *、LEARCH)がわかりません。ごく最近、ランダムな歩行者がいる環境での計画にD * Liteを使用したロボットを見ました。この意味で、D * Liteは決して時代遅れではないと思います。あなたの実際的な問題については、通常の工学的な方法を試しても害はないと思います。何らかのアプローチをとり、それがあなたのニーズに合わない場合は、他の何か(もっと複雑なもの)を試してください。


4

ランダム化されたツリー、またはRRTの高速探索について何かを追加したいと思います。基本的な考え方はインターネット上で十分に議論されていますが、おそらくウィキペディアのページからのリンクと、このトピックに関するKuffnerとLaValleのオリジナルの論文から始めるのが安全でしょう。

RRTの最も重要な機能は、RRTが窒息することなく非常に高い次元の実数値の空間を処理できることです。これらはダイナミクスを処理できますが、最適ではありませんが、確率的に完全であり(計算時間が無限になると、可能であれば成功することが保証されます)、移動するターゲットを処理できます。それらを非静的なスペースで動作させるいくつかの拡張機能がありますが、その中で最も良いものは、以下にリンクしたMultipartite RRTの動作のようです。


0

距離オラクルと呼ばれるデータ構造は、このような問題を処理します。ただし、ほとんどの研究結果は静的なグラフのみです。

グラフがグリッド(したがって平面)である場合、いくつかの動的なデータ構造が存在します(定数が問題のアプリケーションに対して十分に小さいかどうかは不明です)。

正確な最短経路:

Jittat Fakcharoenphol、Satish Rao:平面グラフ、負の重みエッジ、最短経路、およびほぼ線形時間。J.計算 システム。科学 72(5):868-889(2006)

おおよその最短経路:

Philip N. Klein、Sailam Subramanian:平面グラフの最短経路の完全に動的な近似スキーム。Algorithmica 22(3):235-249(1998)

Ittai Abraham、Shiri Chechik、Cyril Gavoille:禁止セット距離ラベルによる平面グラフの完全に動的な近似距離オラクル。STOC 2012:1199-1218


申し訳ありませんが、静的グラフのみで機能する場合、「これらの問題を処理する」とはどういう意味ですか?尋ねられる問題は、特に非静的グラフに関するものです。
BlueRaja-ダニーPflughoeft

強調を変えましょう。 ほとんどの結果は静的グラフのみです。いくつかの動的データ構造が存在します。その後に、これらの動的データ構造のリストが続きます。
クリスチャンソマー

0

学校ではアリコロニー最適化に手を出した。いくつかのテキストでは、グラフ、ルーティングネットワークなどを継続的に変更するためのソリューションとして宣伝されました。これは、設計されたソリューションではなく、フェロモンを広げて良いパスと悪いパスをマークすることにより、アリが障害物をナビゲートする方法からの適応です。それがあなたの問題に効果があるかどうかはわかりませんが、興味深い視点だと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.