2012-06-14 2 views
6

Je travaille actuellement sur une implémentation d'un jeu de cartes trick-and-draw à 2 joueurs, similaire à 66 ou Schnapsen. Fondamentalement, vous devez accumuler des points en gagnant des tours et pendant qu'il y a des cartes dans le pack, les deux joueurs tirent une carte après chaque tour. Je suis sur le point de programmer une bonne IA pour le jeu qui ne triche pas, mais qui calcule vraiment les meilleurs coups en utilisant seulement les informations dont il dispose à l'état de jeu donné. Je suis bloqué en décidant quel algorithme ou logique serait le meilleur à utiliser. J'ai opté pour des algorithmes comme l'élagage Alpha-Beta car il y a trop d'informations cachées surtout au début du jeu. J'ai lu beaucoup de choses intéressantes à propos de Monte Carlo Tree Search et de la recherche UCT associée, mais comme le jeu a des éléments stochastiques, l'arbre à rechercher deviendrait énorme en peu de temps.Monte Carlo Tree Recherche ou d'autres algorithmes pour un jeu de cartes stochastique?

Quel algorithme ou approche serait le meilleur à utiliser?

Répondre

1

MCTS sera définitivement meilleur. Quel que soit celui que vous choisissez, vous devrez traiter des informations incomplètes, qui est le problème central ici.

1

Here est un lien vers une application de UCT vers Klondike Solitaire. MCTS est un ajustement parfait pour le problème car il peut bien faire face à la stochasticité.

Vous pouvez consulter la méthode clairsemée décrite à l'intérieur du document pour limiter la largeur de l'arborescence.

+0

Merci pour le lien, je ne connaissais pas ce papier! La seule chose qui m'échappe est de savoir comment gérer un objet d'état de jeu. Au début, c'est assez évident, puisque les deux joueurs ont 5 cartes, donc le joueur débutant n'a que 5 actions à choisir. L'autre joueur peut répondre avec _deck size - 5_ actions. Mais je ne sais pas vraiment comment gérer les états après le premier tour. Si je ne me trompe pas, après le premier tour où les deux joueurs ont tiré des cartes du pack, le joueur gagnant peut faire des actions de _deck size + 4 cards_ précédemment inutilisées. Ou est-ce que toute mon attitude est fausse? –

+0

Je ne sais pas exactement comment le jeu se passe. Mais un état doit contenir toutes les informations déterminées. Si vous n'avez qu'une seule pile avec des cartes cachées, l'état devrait probablement englober les mains du joueur et toutes les cartes révélées (même si elles sont défaussées). Vous savez donc quelles cartes sont restées sur la pile et peuvent être dessinées ensuite. Les actions sont toutes les actions possibles. Mais comme dans le papier, vous pouvez simplement écrire un simulateur pour le jeu (écrit en C, Java, ...) qui produit en quelque sorte la liste des actions possibles et suit l'état du jeu. – ziggystar

Questions connexes