0

このゲームでは、10x10 のボードと 1 から 9 までの値を持ついくつかの異なる賞品があり、1 つは常に最も近い賞品を目指し、もう 1 つは常に最大ポイント数の賞品を目指してプレイする単純なボットがいくつかあります。それに割り当てられます。ボットと賞品はボード上にランダムに配置されます。タスクは、常に最高の合計ポイントを収集してゲームに勝つ別の単純な AI を作成することです。

この新しい AI が常にゲームに勝つことができるようにするには、どのように獲得ポイントと獲得距離を選択すればよいでしょうか? 私は近い賞品を好むと思っていましたが、最も近い賞品よりも 2 大きい場合はより大きな賞品を目指しますが、これが常に勝つとは限りません。

ボットはボットがどこにいるかを知りません。1 つのボットが 8 つのスペースを移動して 1 つの賞品を獲得すると、別のボットが 8 つのスペースを移動し、その間に複数の賞品を収集できます。すべてのボットは一度に移動し、斜めに移動できます。ボードに賞品がなくなると、ゲームは終了します。

4

1 に答える 1

3

勝利を保証する方法はありません。ボット/賞品がランダムに配置されている場合、他のボットが賞品を獲得する前に賞品から遠ざかるランダムな配置が確実に存在します.

他のボットの正確な動作を知っているので、特定のボードに対して行う将来のすべての動きをモデル化できます。次に、考えられるすべての動きをツリーとボードの状態として列挙し、葉を見て、勝利のスコアを与えるものを見つけることができます。つまり、各ブランチはあなたが行う動きであり、ノードは他のボットが行う動きを含むボードの状態を表します。また、これは二分木ではありません。各ノードは、そのターンに移動できる方向に基づいて分岐します。1 回の実際の動きを行う前に、このツリーを完全に構築します。これにより、最適なパスを選択すると、基本的にゲームの結果が予測されます。これが可能なのは、他のボットが予測可能な方法で動くからです。

また、移動するときに、デバッグ機能として、他のボットが予測どおりに移動していることを確認するチェックを追加できます。システムの動作方法によっては、全員が同時に移動するか、一度に 1 つずつ移動するかによって、移動を決定する前にあなたの移動が表示される場合があります。どちらの方法でも実行できますが、移動方法のモデルが正確であることを確認する必要があります。

スコアが大きくても、他のボットの 1 つが他のボットを支配したために負けるリーフが他にある可能性があることに注意してください。すなわち (you:12, a:1, b:17) 対 (you:11, a:10, b:9)

最も成功する可能性が高いパスは、他のボットの動作を悪用するパスです。たとえば、自分に近づいたときに最高の賞金を獲得し、貪欲なボットがそれに向かう動きを緩めます。また、十分な動きがある場合は、途中で賞品を求めて脇道にそれます。ただし、ツリーを作成して最適な一連の移動を見つけると、暗黙のうちに発生するため、この動作をコーディングする必要はありません。

于 2013-05-09T22:31:12.570 に答える