Open Side Menu Go to the Top
Register
Card abstraction / Buckets Card abstraction / Buckets

06-11-2017 , 01:07 PM
Are there any card abstractions/bucketing methods precomputed online that can take a hand on the flop, turn and river and spit out an "equivalence" group that categorises them into a bucket/category.

(Almost like a lookup table for implementing in code)

Such that AJ on K73r is roughly equivalent to AQ on K72r to shrink the game tree.

Or that JTs should be put together with QJs on certain boards.

From some of the reading I've done, the HU Limit bots used 169 buckets for preflop into 9000 buckets for flop, 9000 for turn and 9000 for river. These buckets apparently used some mixture of E(HS^2) split further by E(HS) (multi-dimensional) along with "earth mover's distance".

I'm not too sure what the exacts of that are but something of that magnitude would be great but I'll settle for any real way of classifying hands for now.

Thank you!
Card abstraction / Buckets Quote
06-11-2017 , 02:43 PM
I'm pretty sure this is what Pokerstove did, and it's the reason it was so much faster than anything else for a long time. The source code is available on github and he wrote some short articles about it

https://github.com/andrewprock/pokerstove
Card abstraction / Buckets Quote
06-11-2017 , 02:55 PM
Quote:
Originally Posted by RustyBrooks
I'm pretty sure this is what Pokerstove did, and it's the reason it was so much faster than anything else for a long time. The source code is available on github and he wrote some short articles about it

https://github.com/andrewprock/pokerstove
What part of pokerstove would use game tree minimisation like that? Enumerating range vs range? I thought pokerstove was more known for their highly optimised evaluations hitting ~100MH/s,

From a quick search, I found nothing about abstraction or buckets in their repo. If you could point out the relevant files, that would be great
Card abstraction / Buckets Quote
06-11-2017 , 03:15 PM
I also thought PokerStove was exhaustive.
Card abstraction / Buckets Quote
06-11-2017 , 07:11 PM
Pokerstove has an exhaustive mode, but it also has a mode that divides situations into equivalency classes. It's possible that's not in the public repo - but I remember him writing a paper about it years ago, which I can not find now.
Card abstraction / Buckets Quote
06-12-2017 , 12:05 AM
Quote:
Originally Posted by RustyBrooks
Pokerstove has an exhaustive mode, but it also has a mode that divides situations into equivalency classes. It's possible that's not in the public repo - but I remember him writing a paper about it years ago, which I can not find now.
Rusty,

I *think* you're confusing pokerstove's use of suit symmetries with the bucketing used in CFR solvers. the latter is a rough estimate, the former is just a lossless computational trick. i believe the only inexactness in pokerstove results were from montecarlo.
Card abstraction / Buckets Quote
06-12-2017 , 12:28 AM
Quote:
Originally Posted by gaming_mouse
Rusty,

I *think* you're confusing pokerstove's use of suit symmetries with the bucketing used in CFR solvers. the latter is a rough estimate, the former is just a lossless computational trick. i believe the only inexactness in pokerstove results were from montecarlo.
Barry Greenstein is the first I know of to mention the use of suit symmetries trick to speed-up computation with his small article on a chunk of C++ code to compute hand strength.
Card abstraction / Buckets Quote
06-12-2017 , 11:30 AM
Well, I can't find the article on his site with the wayback machine, so either I imagined it or I'm thinking of someone else. Probably at least 10 years ago.
Card abstraction / Buckets Quote
06-14-2017 , 12:42 AM
It looks like you are on the right track with the literature but I am not aware of any publicly available code. I think that unless you are coding a PLO or 3handed+ solver you don't need any lossy abstractions...only lossless isomorphic calculation as mentioned (and possibly memory compression if you are really trying to do large trees/preflop solving)

If you really need it I believe the last state of the art that I can remember reading was K-Nearest Neighbors clustering using Earth Mover's Distance as the distance metric.
Card abstraction / Buckets Quote
06-14-2017 , 10:19 AM
Quote:
Originally Posted by 200zoomgrinder
It looks like you are on the right track with the literature but I am not aware of any publicly available code. I think that unless you are coding a PLO or 3handed+ solver you don't need any lossy abstractions...only lossless isomorphic calculation as mentioned (and possibly memory compression if you are really trying to do large trees/preflop solving)

If you really need it I believe the last state of the art that I can remember reading was K-Nearest Neighbors clustering using Earth Mover's Distance as the distance metric.
Yep that's the one I've moved on to now. Trying to make sense of it all.

Also, I was thinking, do I really need all of this compression and abstraction if I don't store anything? All of these bots needed it because they faced an opponent in real time, whereas for my use case it would be enough for me to plug in a range/hand vs range/hand on a board, wait 10s, and have it spit out the optimal line.

But it would be cool if it was all precomputed
Card abstraction / Buckets Quote
06-14-2017 , 12:55 PM
Quote:
Originally Posted by mediacalc
Also, I was thinking, do I really need all of this compression and abstraction if I don't store anything? All of these bots needed it because they faced an opponent in real time, whereas for my use case it would be enough for me to plug in a range/hand vs range/hand on a board, wait 10s, and have it spit out the optimal line.
They are trying to reduce memory in order to fit the game tree into memory, not to make calcs instantaneous. I believe most of the research, except for the very newest (Libratus, etc) precalc everything and then just look it up for the most part (pretty big simplification, since there are some calcs in there, but for the most part that is correct) So yeah, if you are solving large trees (as I mentioned, PLO, 3handed+, large preflop NL trees) you will need to reduce memory usage somehow. If you are solving postflop NL with a reasonable number of actions you probably won't need it.
Card abstraction / Buckets Quote
06-15-2017 , 05:09 PM
Quote:
Originally Posted by 200zoomgrinder
They are trying to reduce memory in order to fit the game tree into memory, not to make calcs instantaneous. I believe most of the research, except for the very newest (Libratus, etc) precalc everything and then just look it up for the most part (pretty big simplification, since there are some calcs in there, but for the most part that is correct) So yeah, if you are solving large trees (as I mentioned, PLO, 3handed+, large preflop NL trees) you will need to reduce memory usage somehow. If you are solving postflop NL with a reasonable number of actions you probably won't need it.
I thought the whole point of abstraction was not having to simulate every single possible combination or am I misunderstanding? Not sure which part of all that reduces memory in the form of the tree being walked. So AK on A73r plays the same as AQ on A73r so group those hands and play them the same. So we just cut down on simulating the AQ etc.

I'm mostly targeting postflop NL ("HU") where it won't be HU ranges but it will be capped to two players. And the actions are capped to one reraise only, no donk bets and only 4 different bet sizes 1/3 1/3 2/3 1/1. I think it's doable
Card abstraction / Buckets Quote

      
m