2012-06-14 10 views
6

Actualmente estoy trabajando en una implementación de un juego de cartas de 2 jugadores para hacer trampa y robar, similar a 66 o Schnapsen. Básicamente, necesitas acumular puntos ganando trucos y, aunque hay cartas en el paquete, ambos jugadores roban una carta después de cada ronda.Monte Carlo Tree Search u otros algoritmos para un juego de cartas estocástico?

Estoy en el punto de programar una buena IA para el juego que no hace trampas, pero realmente calcula las mejores jugadas usando solo la información que tiene en el estado del juego dado. Estoy atascado decidiendo qué algoritmo o lógica sería el mejor para usar. Decidí no usar algoritmos como la poda Alpha-Beta porque hay demasiada información oculta, especialmente al comienzo del juego. Leí muchas cosas interesantes sobre Monte Carlo Tree Search y la búsqueda de UCT relacionada, pero debido a que el juego tiene elementos estocásticos, el árbol que debe buscarse crecerá enormemente en poco tiempo.

¿Qué algoritmo o enfoque sería el mejor para usar?

Respuesta

1

MCTS será definitivamente mejor. Independientemente de cuál elija, tendrá que lidiar con información incompleta, que es el problema central aquí.

1

Here es un enlace a una aplicación de UCT to Klondike Solitaire. MCTS es perfecto para el problema, ya que puede manejar bien la estocasticidad.

Puede ver el método disperso descrito en el documento para una forma de limitar el ancho del árbol.

+0

Gracias por el enlace, ¡no sabía acerca de este artículo! Lo único que no tengo claro es cómo debo manejar un objeto de estado de juego. Al principio es bastante obvio, ya que ambos jugadores tienen 5 cartas, por lo que el jugador inicial solo tiene 5 acciones para elegir. El otro jugador puede responder con _deck size - 5_ actions. Pero entonces realmente no sé cómo manejar los estados después de la primera ronda. Si estoy en lo cierto, después de la primera ronda, cuando ambos jugadores robaron cartas del paquete, el jugador ganador puede hacer _deck size + 4 cards_ actions sin usar. ¿O está toda mi actitud equivocada? –

+0

No sé exactamente cómo va el juego. Pero un estado debe contener toda la información determinada. Si solo tiene una pila con cartas ocultas de las que extraer, el estado probablemente debería abarcar las manos del jugador y las cartas reveladas (incluso cuando se descartan). Para saber qué cartas quedan en la pila y se pueden dibujar a continuación. Las acciones son todas las acciones posibles. Pero como en el documento, simplemente puede escribir un simulador para el juego (escrito en C, Java, ...) que de alguna manera produce la lista de posibles acciones y rastrea el estado del juego. – ziggystar

Cuestiones relacionadas