ある場所から別の場所にいくつかのユニットを移動したい。 2〜3ユニットは問題ありませんが、20〜30に移動しようとすると多くの時間がかかります...一般に、ユニットはほぼ同じ方向に移動するので、20回カウントする必要はありません...私は最初のユニットから道を辿り、残りのユニットのパスを "追加する"と考えました(私は、最初のユニットのパスPを呼び出すと、ユニットn→Pスタート)+ユニットnのP +(P end - > Unit n target)...素晴らしいですが、場合によっては2番目のユニットがターゲットのすぐ近くにある場合のExpamleのために、それは1番目に行く必要がありますユニットを起動してからターゲットに戻ってください...どうすれば最適化できますか?多分ユニットをグループに分けてグループを移動するのは良い考えですか?私は私の...英語と申し訳ありません長いため、テキストが読みにくい悪いマルチプルターゲットのためのA *経路探索を最適化する
答えて
いくつかの考えのための任意の助け
ありがとう、申し訳ありません...より良いアイデアAY持っていけない:
- スタートすべての検索の共通点:ターゲット位置を検索します。
- すべてのユニットの最小距離をA *ヒューリスティックとして使用します。これは、最適パスをもたらす許容ヒューリスティックです。これは、ユニットのたくさんの計算が多少遅くなるかもしれない、あなたは最初のユニットを見つけた後、検索を再起動しないでくださいここではいくつかのトリック
- をしなければならないかもしれませんが、あなたがそれらのすべて
あなたを見つけるまでちょうど検索を続けますこれは後方検索であるため、すべての「許可された移動」チェックの方向を反転する必要がありますが、それ以外の場合はおそらくうまく動作します。ただし、移動するユニットの開始時に正確なパスを計画することは、パスが恐ろしく愚かに見えない限り、まだ必要でないときにはあまりにも多くの作業を行います。そして、あなたが他のユニットがパスをブロックしていると考えると、それらの正確なパスはしばしば無効になります。
有望な解決策は、パスキャッシングです。
特に、ノードX_0からX_nの順序付けられたシーケンスからなる最短経路Pは、多くの有益な情報を有する。
最も重要なのは、どのI> = 0と私< J < = nに、X - jがへX_Iからの最短パスは、パス内のノードのサブシーケンスである、P.
これはあなたに非常に多くを与えます潜在的に再利用できるデータ(実際にはn^2個のデータ)があります。
マップが変更されていない場合は、all-pairs shortest pathを事前計算する方が現実的かもしれません。これは実装が簡単なアルゴリズムですが、O(n^3)時間がかかります。
これまで述べてきたように、A *の実装では最近のパスのハッシュテーブルを単純に維持するほうが意味があります。
私は次のことがわかりました。
前述のようにパスキャッシングを使用します。マップが動的であり、キャッシュを頻繁にクリアする必要がある場合、これはうまくいかないかもしれません。
グループを使用します。ユニットのグループを1つとして扱い、リーダーをリーダーとして指定し、そのパスを見つけます。他のユニットは、リーダの足音にちょうど従うことができ、それらの足音を見つけるためのマイナーな道があります(したがって、ユニットはメインパスにも障害物を避けるように見えます)。これが機能するためには、互いに隣り合っているユニットを選んで、部下から指揮官までの道のりは本当に小さくすべきです。
対話性のトレードオフ精度。一度にすべてのパスを計算せず、時間をかけてそれらを広げてください。パスを必要とするユニットに優先キューを使用し、いくつかポップしてパスを計算します。あなたは、あなたのパスにもコードを見つける時間を与えることさえできます。私はグループ化とパスキャッシングを組み合わせてこれを行いましたが、私の実装におけるこの変更は私にとって最大の利益でした。
- 1. C++経路探索、最適化
- 2. 経路探索ブーストグラフライブラリ
- 3. タワーディフェンスの経路探索に最適なアルゴリズム
- 4. 2D配列にA *経路探索を実装する
- 5. 経路探索アルゴリズムテスト用ツール
- 6. アンドロイドJavaのA *経路探索の助けが
- 7. 連続探索空間のための経路指定アルゴリズム?
- 8. 負のノードによる経路探索
- 9. プラットフォームゲームのC++での経路探索
- 10. 質量astarの経路探索
- 11. 最短経路のA *(星型)検索アルゴリズム
- 12. プロローグで幅優先探索で最短経路を返します
- 13. DFSとjavaを使用した経路探索
- 14. 迷路のスタックベースの探索
- 15. quadtrees(経路探索)と接続されたグラフ
- 16. 経路探索の助けが必要です!
- 17. 4次元データによる経路探索
- 18. MySQLデータベースを最適化するための最適化
- 19. 経路探索のFlexおよびpolygonal.deグラフクラス?
- 20. 最短経路を見つけるためのダイクストラのアルゴリズム?
- 21. ゲームの経路探索:重み付けされたサーフェスを持つ2点間の最短経路を見つける
- 22. "方向に依存する"障害物を含む経路探索アルゴリズム?
- 23. マイA *は経路探索の実装期待される結果を与えていない
- 24. jsonファイルから作成された単層のための*経路探索アルゴリズムiphone
- 25. 最短経路問題のためのグラフィカルツール?
- 26. コアデータ検索の最適化
- 27. 検索エンジンの最適化
- 28. 検索エンジンの最適化
- 29. dijkstraの最短経路アルゴリズム
- 30. 最適な検索エンジン最適化されたWordpressのテーマ?
なぜ最初のユニットのパスを再利用しますか? – Beta
@Beataそれ以外の場合は、私はそれを何度か計算しなければならないでしょう。それは最初のものとちょっと違うでしょう... –
え?最初のユニットのパスを計算できるのであれば、各ユニットごとに異なるパスを計算してみましょう。なぜ彼らはお互いの足音を歩かなければならないのですか? – Beta