Giter Site home page Giter Site logo

mcts-cribbage's Introduction

MCTS-Cribbage

This project contains a few MCTS implementations for 2-player Cribbage, originally created for my CS honours project in winter 2017. This might be useful to anyone who wants to see an MCTS implementation, and specifically the Information Set MCTS, which works quite well for this game.

Information Set MCTS algorithm adapted from:

P. I. Cowling, E. J. Powley, and D. Whitehouse. Information Set Monte Carlo Tree Search. IEEE Transactions on Computational Intelligence and AI in Games, vol. 4, no. 2, pp. 120โ€“143, 2012.

Results of experiments using these implementations were published in:

R. Kelly & D. Churchill. Comparison of Monte Carlo Tree Search Methods in the Imperfect Information Card Game Cribbage. Proceedings of the 2017 Newfoundland Electrical and Computer Engineering Conference, 2017.

Instructions

Compile and run CribbageGUI.java to play against the AI players with a really simple GUI.

Edit, compile, and run Cribbage.java to run a series of games with different parameters.

Updates

When I have time I'd like to move the parameters for the testing functionality into a JSON file. I'd also like to completely separate the game code from the MCTS code, so that the MCTS classes could be more easily reused for other projects. I started with that in mind, which is apparent when you look at some of the interfaces used, but some early choices I made when designing the Cribbage module made that difficult.

MCTS Players

Included in this repo are:

  • Random Player
  • Scripted player - Throws based on top 4-card hand, and otherwise greedily takes points.
  • Cheating UCT - MCTS with knowledge of upcoming cards in deck and opponent's cards.
  • Determinized UCT player - Runs individual MCTS on a set number of determinizations. Takes most visited action summing from all determinizations.
  • SOIS-MCTS - Single Observer-Information Set MCTS builds one tree using a different determinization in each traversal.

All MCTS-based players search until the end of the current hand, including the cheating player.

Budgets can be set as numer of traversals or a time limit.

mcts-cribbage's People

Contributors

richard-kelly avatar

Stargazers

Bander Alsulami avatar Alex Biedny avatar

Watchers

 avatar

Forkers

abiedny

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.