0

私はゲーム(Tank Game 2D)、(eg - link ) AIプレーヤーを開発しています。私のプレーヤーは、最大のコインを獲得するためにプレイする他の 5 人のプレーヤー (AI も) の 1 人になり、グリッドのどこかにランダムに表示されます (上の写真を見てください)。また、プレイヤーはお互いに撃つことができます。また、ヘルスパックもグリッドのどこかにランダムに表示されます。

したがって、最小最大ツリーを使用して最も賢い次の動きを見つけるには、評価関数を作成する必要があります。ここで問題が発生します。そのような評価関数の経験はありません。従うべきガイドラインはありますか、それとも一般的な方法はありますか仕事。どの分野を勉強するべきか教えてください。私はそれをグーグルで検索し、多くのことを発見しましたが、適切なチュートリアルなどはありません. ありがとうございました。

4

1 に答える 1

5

基本的に、ゲームの評価を得るために行う最善の方法は次のとおりです。

  • ゲームをプレイしてください - どのような状況を回避しようとしているのか、どのような状況が良いのかを確認してください。これらの状況を一般的な評価にまとめてみてください。
  • 研究- 誰かがすでにこの問題または同様の問題を研究している可能性があります。もしそうなら、何らかのヒューリスティック関数を示唆する記事またはその他の資料があるかもしれません。

私がすることは次のとおりです。

  1. それぞれがゲームの 1 つの側面 (最も近い敵からの距離、敵への射線、私のヘルス バーなど) を記述するヒューリスティック関数のセットを作成します。私はこのリストを可能な限り拡大するためにゲームをプレイし、もちろん、他の人がこの/類似のゲームで見つけた可能性のあるアイデアをオンラインで探します.
  2. ステップ 1 から、実際に一連の関数を取得しました: h_1(board),h_2(board),...,h_n(board)- しかし、ヒューリスティック関数が何であるかはまだわかりません
  3. いくつかのパラメーターを見つけてa_1,a_2,...,a_n、ヒューリスティック関数を作成しようとします
    h(board) = a_1 * h_1(board) + a_2 * h_2(board) + ... + a_n * h_n(board
    。問題は、これらのパラメーターを取得する方法です。ここで、最適化の問題があることに注意してください。
    この特定の問題に対する 1 つの解決策は、モンテカルロ学習です。

モンテカルロ学習:

モンテカルロ学習の考え方は、エージェント (AI) のリストを作成し、それぞれをa_1,...,a_n- のランダムな値で初期化し、それらの間でトーナメントを行うことです。 トーナメントが終了したら、最高の成績を収めたエージェントに基づいて各エージェント
の の値を変更し、トーナメントを再実行します。(これを行う 1 つの方法は、遺伝的アルゴリズムa_1,...,a_nの「生成」ステップに似ています- 交差と突然変異ですが、他の方法もあります)。

最後に、モンテカルロ学習プロセスはa_1,...,a_n、ボードの優れたヒューリスティック関数を提供するための適切な値を提供する必要があります。

于 2012-11-05T18:32:38.113 に答える