Coder Social home page Coder Social logo

zanussbaum / pluribus Goto Github PK

View Code? Open in Web Editor NEW
98.0 13.0 19.0 305 KB

An attempt at a Python implementation of Pluribus, a No-Limits Hold'em Poker Bot

Python 51.14% Makefile 0.29% C++ 48.57%
poker counterfactual-regret-minimization pluribus python texas-holdem machine-learning artificial-intelligence depth-limited-solving real-time-search

pluribus's Introduction

Pluribus - A Multiplayer agent to play Poker variants

This repo will hold an implementation of a pure Python implementation of Pluribus, Facebook's No-Limit 6-player Hold 'Em Poker Bot.

This will follow suit from some other reimplementations (i.e.) and aim to reimplemnt the main features of the Pluribus paper. This includes the equlibrium finding and depth limited solving. Currently, we will not implement the abstraction portion of the paper. We hope to extend this to Flop Hold'em.

Kuhn poker is a simplified game of poker where each player is given one card from a set of 3 cards. The third card is set aside. High card wins. We implement a variation of Kuhn poker where the three cards are chose from a set of 5 cards for three players.

Leduc Hold'em is a poker variant where each player is dealt a card from a deck of 3 cards in 2 suits. The first round consists of a pre-flop betting round. The second round consists of a post-flop betting round after one board card is dealt. There is a two bet maximum per round, with raise sizes of 2 and 4 for each round. Each player antes 1 before the game starts.

Here is the game tree for one round of the game Leduc Tree

Implementation of Pluribus

  • Monte Carlo Counterfactual Regret Minimization

    • Samples action in game tree rather than traversing entire game tree
    • One player is traverser on each iteration
    • Linear CFR in early iterations
    • Two player Kuhn MCCFR
    • Three player Kuhn MCCFR
    • Three player Leduc MCCFR
  • Depth Limited Search

    • Blueprint strategy calculated to get coarse grained strategy
    • Search from all opponent actions to find best response
    • Real-time search Leduc Poker
    • Real-time search Hold'em

pluribus's People

Contributors

zanussbaum avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pluribus's Issues

Extend MCCFR to General

Currently, we hard code in the number of actions needed and how many players are playing (2) for Kuhn Poker. We need to extend this for larger variants of the poker games.

Track Valid Actions

Especially during real-time-search, we need to keep track of the valid actions to start with. We should implement this as a map where each infoset keeps track of actions that are valid at that game state

Implement Subgame Solving

This is the bulk of the computation for the real-time-search. Once this is implemented, we have a basic MVP.

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.