Computer Poker Research

I have been involved with the Poker Research Group in the Computer Science Department at the University of Alberta. During the summer of 1999, they hired me to rewrite their Poker AI. The final system, Poki based on their previous AI Loki plays on IRC against human poker players. Below is a current graph of poki's winnings on, an online poker server where poki plays against humans and other bots. If you have a java-enabled browser you can also play against poki and other humans on our own poker server.

Graph of Winnings

A recent bot's performance on the Poker Applet

The task of playing poker (Texas Hold'em) is a very difficult one. Unlike traditional games worked on in the field of Artificial Intelligence, in Poker we must deal with incomplete information. Games like Chess and Checkers are examples perfect information games, where the entire state of the game is known to all players. In Texas Hold'em, there can be anywhere from 2 to 10 players, and we have no idea what cards they may be holding. To complicate things, players may deliberately deceive you (by bluffing with a weak hand or slow playing a strong hand).

I have been studying methods to do opponent modeling in poker. In this case, we are interested in being able to accurately guess what cards a player may be holding and how he may play them. This is no trivial task. Some of my more recent work in this area is shown below.

Some of the useful classes from Poki's Java Poker Source are available free for download.

I am also working on an online poker protocol that enables poker AI programs to compete against each other over TCP/IP.

In late 1999, I did a research project on using neural networks (multilayer perceptrons) to predict poker player's actions. A PDF of my report is available for download. [nnpoker.pdf -- 110k]