2

小さな 2D ゲームでの経路探索には、単純なユークリッド距離ヒューリスティックに基づく A* アルゴリズムを使用します。私のゲームの世界は、障害物によって占有されているかどうかに関係なく、セルのグリッドとして表されます。A* を使用してパスを計算する必要があるキャラクターは、N/E/S/W だけでなく、(ブロックされていない場合) どの方向にも移動できます。

わかりました、それで基本的にはうまくいきます。ここで、A* ヒューリスティック関数に別のパラメーターを追加する必要があります。これは、各グリッド セルに関連付けられたコスト値です。このコスト値が高いほど、キャラクターはそのセルを避けようとする必要があります。

ただし、グリッド セルごとにこのコスト値のみを使用するようにヒューリスティック関数を変更することはできません。これは、A* ターゲット位置までのセルの距離が依然として重要であるためです。キャラクターはコストの高いセルを避けようとする必要がありますが、同時に、ターゲットの位置から離れすぎないようにする必要があります。したがって、セルの距離とそのコスト値の間で一種の「トレードオフ」が必要です。

理想的には、セルの距離とそのコスト値の間のこのような関係を簡単に調整/最適化できるソリューションを見つけて、ヒューリスティックを微調整できるようにしたいと考えています。

これを達成する方法はありますか?

4

2 に答える 2

1

最短パス アルゴリズム (A* または Dijkstrs) を使用する場合、ノードごとに 1 つのコスト値が必要です。
したがって、距離 (セル) と障害物のコストを組み合わせる方法を自分で考える必要があります。
長さのコストに加えて障害のコストを追加する cost() 関数を作成できます。

于 2013-02-03T01:36:22.120 に答える
1

重み (0 と 1 の間の値) を使用する必要があります。たとえば、w が距離の重みで、1-w がコストの重みであるとします。したがって、新しいヒューリスティックは次のようになります: H= w*distance+(1-w)*cost

次に、ドメインに応じて W を最適化する必要があります-経験的に。

于 2013-02-03T11:34:09.213 に答える