Quote:
Originally Posted by browni3141
Thanks, I was curious if PokerCruncher would have allowed me to test my program. It seems it won't, but it sounds like a great program for a poker player.
I suppose it's no surprise that you use the simulation approach. It's much more versatile when exhaustive approaches simply take too long for more than two players. My approach is probably a bit different than yours since I calculate hand vs. range equity at the leaf nodes rather than evaluate individual hand vs. hand. My program does about 200,000 hand vs. range evaluations per second on a few years old, cheap laptop.
At the leaf I hash the boardState to get a key to a lookup table which provides a range of hands that the player's holding beats and pushes with on the given board. The data is stored such that each bit set corresponds to a win/push. I can mask this with another object representing villain's range, and the number of bits set in the result is the number of wins/pushes Hero's hand has against villain's range on that runout. I used this method because it's easy to mask dead cards, also. Not sure if this makes sense but I thought it might be interesting.
That's correct, there is no free version of PokerCruncher-Expert-Mac. There is a free iPhone version of PokerCruncher in the iOS app store, but it's limited features, no hand ranges.
Re. your algorithm, thanks for describing, it sounds pretty interesting. But I must admit I don't think I get it yet even after reading it a few times. That's OK, as this thread prob. isn't the place to discuss our algorithms in detail anyway.
>>> My approach is probably a bit different than yours since I calculate hand vs. range equity at the leaf nodes ...
If you can scale up your algorithm from "hand vs. range" to a maximum general setup like I described before (e.g. 10 ranges up against each other, dead cards, %age weights in the ranges's cells, etc.) then (future) kudos to you : ). That was a primary goal in PokerCruncher, to be as general a program as possible.
So the approach in PokerCruncher is simpler wrt the engine's underlying algorithm. At the core it's a simple/lightweight algorithm that relies mainly on Monte Carlo simulation. There are some optimizations in place that help give the 1+ million / sec. Monte Carlo trials, but even those are lightweight (e.g. no huge lookup tables that can explode the size of the program). The advantage is that this simpler approach can be scaled up to fully general setups e.g. 10 ranges, and lets us calculate not just the Equity stat (it's easy to optimize just for this stat) but also the several dozen additional Deal-To-Flop/Turn stats PokerCruncher has (in an acceptably fast way). Anyway, prob. out of scope to discuss more here.