2012-04-26 10 views
0

私のA *アルゴリズムはある程度働いています。それは宇宙の周りのプレーヤーに続くでしょうが、周りを回るためにターゲットから遠くに移動することを含むオブジェクトの周りを回らないでしょう。次のノードのF値が高い(ターゲットから遠い)ことを認識すると、そこに行くことを拒否し、見つからずに低いF値(ターゲットに近いノード)を探し続けます終わりのないループ)。A * FとGヒューリスティックのアルゴリズムと使用

ヒューリスティックの使用についての私の理解が問題かもしれないと思います。

My A *は、常に最も低いF値(H + G)を持つ次のノードに移動します。

私が読んだチュートリアルでは、G値を使って説明していますが、F値だけが唯一の重要なものだと思いました。

誰かがヒューリスティックな値をどのように使用するかをまとめてもらえますか?私はほとんどそこにいると思う、ちょうどヒューリスティックの使用は混乱している。

答えて

1

代替パスセグメントの優先キューを維持していますか?最低コストの次のステップを見るだけでは、障害物を回避することはできません。

+0

うん、これは私の問題のように聞こえます。それはちょうど最低のコスト・ステップを望んでおり、そこから離れようとすることさえしません。最低コスト以外の別のノードに移動することを保証する方法は何でしょうか? – user1359819

+0

あなたはそれをどの言語で実装していますか?チャンスは、すでに他の誰かがしたことです。 –

+0

C#(XNAではない)。そこにC#で簡単な実装はありますか?私は1つをダウンロードしようとしましたが、それを支払う必要がありました。 – user1359819

1

あなたはそれを持っています。 Hは実際にノードに到達するまでにどれくらいの時間がかかるかを示します。 Gはあなたがどれくらい遠くに行かなければならないかの見積もりです。あなたがGだけを考えた場合、そのノードに到達するのに非常に時間がかかったとしても、目標に最も近い経路をとるでしょう。だからこそF(= H + G)を使うので、初めて目標に到達すると、それが最短経路であることがわかります。

ここで、無限のパス数がある場合は、最適なパスを見つけることが問題になる可能性があります。または、パス生成アルゴリズムがバグかもしれません(たとえば、パスを再検討するなど)。あなたが問題についてもっと詳しく説明していないので、それ以上のことは役に立たないかもしれません。

はその後、再び、あなたが悪い(または悪化し、非許容)ヒューリスティック機能を有していてもよい...

+0

地図を各座標の数値に入力させてヒューリスティックをチェックしました。それらを計算すると加算されます。私はノードが実際には低いF値ではないときにノードを選択させる方法が必要だと思うが、唯一の他の選択肢(例えば、あなたがもう少し近くに近づく前に離れなければならないU字型にするなど) – user1359819

+0

待機 - @ Yusuf_Xが示唆するように、可能なすべてのオープン(つまり未完了)パスの記録を残す必要があります。そうでなければ、あなたはA *を適切にやっていない、あなたは説明しているような極小の問題のような山登りをしている。 –

+0

オープンパスでは、現在のノードに隣接するノードを意味しますか?私はそれをやっているから。隣接するノードをチェックして、どちらが最良かを調べます(最低のF値)。私はOpenListとClosedListを持っており、ClosedListで利用可能なノードの中から最適なノードを追加して、隣接するノードをチェックします。 – user1359819

関連する問題