0

A* アルゴリズムはある程度機能しています。空間内でプレイヤーを追尾しますが、オブジェクトを回避するためにターゲットから遠ざかる必要があるオブジェクトを回避することはありません。次のノードの F 値が高い (ターゲットから遠い) ことがわかると、そこへの移動を拒否し、F 値が低い (ターゲットに近いノード) を探し続けますが、F 値は見つかりません (スタックしている)。終わりのないループ)。

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

私の A* は常に、F 値が最も低い次のノード (H+G) に移動します。Fに追加する以外に、GまたはHの値を考慮に入れることはありません.

私が読んだチュートリアルでは、G 値の使用について話していますが、重要なのは F 値だけだと思いました。

誰かが私がヒューリスティック値をどのように使用するかを要約していただけませんか。私はほとんどそこにいると思います.ヒューリスティックの使用が混乱しているだけです.

4

2 に答える 2

1

代替パス セグメントのプライオリティ キューを保持していますか? コストが最も安い次のステップだけを見ていては、障害を回避することはできません。

于 2012-04-26T22:45:16.767 に答える
1

あなたはそれを手に入れました。H は、そのノードに到達するまでに実際にかかった距離を示します。G は、どれだけ遠くまで行かなければならないかの推定値です。G のみを考慮した場合、そのノードに到達するまでに非常に長い時間がかかったとしても、ゴールに最も近いパスを使用することになります。そのため、F (=H+G) を使用して、最初にゴールに到達したときに、それが最短経路のゴールであることがわかります。

ここで、パスが無数にある場合、最適なパスを見つけようとすると問題が発生する可能性があります。または、パス生成アルゴリズムにバグがある可能性があります (たとえば、パスを再検討する必要があるなど)。問題について詳しく説明されていないため、これ以上有益なことは言えません。

繰り返しますが、悪い(またはさらに悪い、許容できない)ヒューリスティック関数を使用している可能性があります...

于 2012-04-26T22:46:39.390 に答える