2012-06-14 15 views
6

私は現在、2人のトリックアンドドローカードゲーム(66またはSchnapsenに似ています)の実装に取り​​組んでいます。基本的には、トリックを獲得してポイントを集める必要があり、パックにカードがある間に、両プレイヤーは各ラウンド後にカードを1枚引く。モンテカルロツリー検索や確率的なカードゲームのための他のアルゴリズム?

私は、不正なゲームではなく、実際には与えられたゲーム状態で持っている情報だけを使って最良の動きを計算するという、良いAIをプログラミングする時点です。 どのアルゴリズムやロジックを使用するのが最適か決定できません。 特に、ゲームの始めに隠れた情報が多すぎるため、Alpha-Betaプルーニングのようなアルゴリズムに反対することに決めました。 モンテカルロツリー検索とそれに関連するUCT検索について、興味深いことがたくさんありますが、ゲームには確率的な要素があるため、検索が必要なツリーは短時間で大きくなります。

どのアルゴリズムまたはアプローチを使用するのが最適でしょうか?

答えて

1

MCTSは間違いなく良いでしょう。 どちらを選択しても、不完全な情報に対処する必要がありますが、これはここでの中心的な問題です。

1

Here 'は、UCTのKlondike Solitaireへのアプリケーションへのリンクです。 MCTSは、確率論をうまく扱うことができるので、問題に完璧にフィットします。

あなたは、木の幅を制限する方法については、論文の中で説明されている疎な方法を見ることができます。

+0

リンクをありがとう、私はこの論文について知りませんでした!唯一明らかなのは、ゲーム状態オブジェクトをどのように扱うべきかだけです。最初は、両方のプレイヤーが5枚のカードを持っているので、最初のプレイヤーは5つのアクションしか選択できません。他のプレイヤーは_deck size - 5_ actionsで応答することができます。しかし、その後、最初のラウンドの後にどのように状態を処理するのか分かりません。私が正しいとすれば、両方のプレイヤーがパックからカードを引いた最初のラウンドの後、勝利したプレイヤーは_deckのサイズ+以前に使用されていなかった4つのカードのアクションを可能にすることができます。それとも私の全体的な態度が間違っていますか? –

+0

私はゲームがどのくらい正確に行くのか分かりません。しかし、状態にはすべての決定された情報を含める必要があります。ドローイングのために隠されたカードを持つスタックが1つしかない場合は、プレイヤーの手と公開されたカード(捨てられていても)を含む状態になっているはずです。だから、あなたはどのカードがスタックに残っているのかを知っていて、次に描くことができます。アクションはすべて可能なアクションです。しかし、この論文のように、ゲームのシミュレーター(C、Javaなど)を書くだけで、可能なアクションのリストを生成し、ゲームの状態を追跡することができます。 – ziggystar

関連する問題