I am currently working on an implementation of a 2 player trick-and-draw card game, similar to 66 or Schnapsen. Basically you need to gather points by winning tricks and while there are cards in the pack, both players draw a card after each round.
I am at the point of programming a good AI for the game that does not cheat, but really calculates the best moves by using only the information it has at the given game state. I am stuck deciding which algorithm or logic would be the best to use. I decided against algorithms like Alpha-Beta pruning because there are too much hidden information especially at the beginning of the game. I read many interesting things about the Monte Carlo Tree Search and the related UCT search, but because the game has stochastic elements, the tree needed to be searched would grow huge in a short time.
Which algorithm or approach would be the best to use?
Monte Carlo Tree Search (MCTS) is a search technique in the field of Artificial Intelligence (AI). It is a probabilistic and heuristic driven search algorithm that combines the classic tree search implementations alongside machine learning principles of reinforcement learning.
MCTS is a simple algorithm to implement. Monte Carlo Tree Search is a heuristic algorithm. MCTS can operate effectively without any knowledge in the particular domain, apart from the rules and end conditions, and can find its own moves and learn from them by playing random playouts.
As the tree growth becomes rapid after a few iterations, it requires a huge amount of memory. There is a bit of a reliability issue with Monte Carlo Tree Search. In certain scenarios, there might be a single branch or path, that might lead to loss against the opposition when implemented for those turn-based games.
There is also a more optimized version which is applicable on linux due to utilizing cython and you can find it in here. Monte Carlo method was coined by Stanislaw Ulam for the first time after applying statistical approach “The Monte Carlo method”. The concept is simple. Using randomness to solve problems that might be deterministic in principle.
Here's a link to an application of UCT to Klondike Solitaire. MCTS is a perfect fit for the problem since it can deal well with the stochasticity.
You can look at the sparse method described inside the paper for a way to limit the width of the tree.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With