-1

私は現在、カード ゲームウィザードの AI に取り組んでいます。ウィザードは、実際のゲームが始まる前に、各プレーヤーが自分が取ると信じているトリックの数を宣言するトリックテイキング ゲームです。

いくつかの論文と人工知能のいくつかの部分を読んだ後、各プレイヤーが完全な情報を得られるように、最初にオープンカードを使用してゲームのアルゴリズムを設計することにしました。そこで、UCB 選択ポリシーを使用して、モンテカルロ ツリー検索アルゴリズムを開始し、実装しました。Java ですべてを実装しましたが、かなりうまく動作しているように見えますが、ボットはまだ最適に動作していません。特にトリック予想は難しそうなので、プレイと同じMCTSを使いました。

したがって、基本的に私のアルゴリズムは、ゲームの現在の状態 (たとえば、2 人のプレーヤーが入札した) を拡張し、1 つの新しいノード (たとえば、3 人のプレーヤーが入札した) を作成し、ゲームが終了するまでランダムにプレイします。次に、スコアが評価され、ノードを通じてバックアップされます。

アルゴリズムを改善するための次のステップは、ツリー検索にヒューリスティックを追加して、損失をもたらす可能性が最も高い分岐が最初から無視されるようにすることだと思います。

私の質問は次のとおりです。これは良いアプローチだと思いますか? 他に有望なアプローチはありますか、または他にヒントはありますか?

4

1 に答える 1

3

ゲームのことはよくわかりませんが、一般的なアドバイスをお願いします。モンテカルロ アプローチは、次の場合に適したソリューションです。

  • 検索スペースが非常に大きい (囲碁ボード ゲームなど)
  • 強力なヒューリスティックを構築する方法がわからない

これらの条件で、MCTS はあなたができる最善の方法です。

しかし、強力なヒューリスティック関数を構築できる場合は、「Min-Max/Alpha-Beta Pruning」アルゴリズム (または同様のもの) を使用する必要があります。一般に、これらのアルゴリズムを使用すると、より強力な AI が得られます。

GO では MCTS を使用しますが、チェスでは Min-Max を使用するためです。

しかし、アルゴリズムは AI の 10% にすぎません。ゲーム AI プログラミングの最も難しい (そして美しい) 部分は、ゲームの仕組みを利用して検索スペースを削減し、最強のヒューリスティックを構築することです:)

たとえば、有名なカード ゲームであるポーカー (http://webdocs.cs.ualberta.ca/~games/poker/) から AI を理解し始めることができます。次に、これらの手法をゲームに拡張できます。

于 2012-09-02T08:58:14.327 に答える