Poker Coder
Wednesday, July 26, 2006
Saturday, July 15, 2006
Towards a Meaningful Ordering of Hands
Overview
Many poker books include chapters with hand rankings, and many software tools (including some at propokertools.com) support specifying the top N% of hands. Almost immediately the question arises - how do we create a meaningful ordering of hands?
One possibility is to use human judgement in creating hand rankings. This has worked fairly well in strategy books on hold'em, partly because the game is reasonably well understood, and partly because there are only a small number of distinct hold'em hands (169 to be exact). For omaha, it is not practical to list all the hands in a chart, as there are 16,432 distinct hands. Some authors have come up with point systems for evaluating omaha hand strength, and others have given general guidelines.
A second possibility is to race each possible hand against a set of random hands (say, two or three). Up until recently, propokertools.com used this approach. It is very easy to generate an ordering this way with less than a hundred lines of computer code, and the result will have no human biases. Upon inspection, however, the results leave something to be desired. This is not surprising, as random hands are rarely played in practice.
A third possibility is described by Billings, Davidson, Schaeffer and Szafron in "The challenge of poker" (a paper in "Artificial Intelligence"). At propokertools.com, we use hand orderings inspired by their approach. We created an evolutionary computer simulation, whereby the set of "good hands" is gradually refined, and hands are ranked against other "good hands".
The Evolution Program
To generate the ordering for each game:
Perform the following computation a total of ten times:
For each possible hand h:
Do the following many times (where "many" doubles each iteration):
- Deal the hand h, and add one chip to the pot
- Deal one random hand b, and add one chip to the pot (to simulate a "blind" hand)
- Deal eight random hands. For each "good" hand (defined later), add one chip to the pot (to simulate a player calling). For all the rest, fold the hand
- Deal a board, and award the pot to the winner(s)
Some Interesting Results
Top 15 hands by game
- Hold'em : AA, KK, QQ, JJ, AKs, TT, AKo, AQs, 99, AJs
- Omaha hi (all double suited): AAJJ, AATT, AAQQ, AAJT, AA55, AAKK, AA44, AA66, AA99, AA77
- Omaha hi/lo: AxAy2x3y, AxAy2x4y, AxAy2x5y, AxAy2x2y, AxAy3x4y, AxAy2z3x, AxAy2x6y, AxAy2x3z, AxAy3x5y, AxAy2z4x
Percentage of "good" hands by game after the last iteration
- Hold'em: 13% of hands are "good" (last "good" hand is KJo)
- Omaha hi: 15% of hands are "good" (last "good" hand is QxQyJz3x)
- Omaha hi/lo: 15.5% of hands are "good" (last "good" hand is AxJxTx4x)
- Hold'em: AA rates 2.046
- Omaha hi: AAJJ double suited rates 1.568
- Omaha hi/lo: AA23 double suited rates 1.571
As with any approach based on all hands going to river, caution must be used when interpreting the results. Furthermore, as our method uses random results, the generated orderings will be different each time our evolution program is run. In the future we will be performing experiments to see how much variation there is from run to run. We also plan on running the evolution program for games with less than 10 players to see what differences arise.