Inspiration

We were inspired by a class taught at MIT about Poker Theory. The class inspired some of the strategies we used today.

What it does

It's a poker bot that splits its functionality into two parts: a hand strength evaluator and a decision tree. The hand strength evaluator computes an equity representing the relative strength of our hands, represented [0, 1). We compute this using a Monte Carlo simulation of simulated game states. The decision tree is structured to evaluate this hand strength in a number of categories: very strong, strong, medium, and weak, for both pre- and post-flop. In each of these categories, we evaluate actions based on the odds (risk/reward tradeoff) of the pot.

How we built it

Going in, we knew we needed a proper evaluation and decision tree strategy. Over the course of the day, we refined multiple versions of both, testing and incrementing code, and had strategies play each other for testing.

Challenges we ran into

Our first implementation was to use a bandit strategy, where the bot would select a random strategy to play 20% of the time, and would choose the highest performing bot otherwise. Given the amount of information present in this poker version, this strategy wasn't very effective. However, this guided us into the correct direction.

Accomplishments that we're proud of

We're very proud of the fact that we built a comprehensive testing suite, which helped us evaluate quickly and rigorously tune our code.

What we learned

We learned how to develop an iterative process such that we were making quick progress to an optimal solution. Utilizing manpower is important given the time constraint of the competition, and we learned how to distribute the work so that the team worked most effectively.

What's next for John Street Pokerbot

Domination of the Las Vegas Strip.

Built With

Share this project:

Updates