Poker-AI.org
http://poker-ai.org/phpbb/

Omaha HS2 and Bucketing
http://poker-ai.org/phpbb/viewtopic.php?f=24&t=3331
Page 1 of 1

Author:  HontoNiBaka [ Sat Apr 04, 2020 9:19 pm ]
Post subject:  Omaha HS2 and Bucketing

After I finished my PLO hand evaluator I wanted to start creating buckets, but I realized that I miscalculated something and there are way more card combinations and isomorphic indexes than I thought.
Kevin Waugh's implementation gives me 19,569,128,722 river indexes for
Code:
   hand_indexer_t indexer;
   const uint8_t cards_per_round[2] = { 4, 5 };
   hand_indexer_init(2, cards_per_round, &indexer);

HS2 tables would take around 80GB as 4 byte floats and I would never be able to cluster so many points into buckets.
It must be possible somehow, because Monker Solver does support PLO.
Even if I cluster the boards first, I will still need the HS2. Am I still missing something or are those tables just that big? Anyone tried creating a PLO solution?

Author:  HontoNiBaka [ Sun Apr 05, 2020 1:42 pm ]
Post subject:  Re: Omaha HS2 and Bucketing

So far I came up with 3 ideas:
1. Instead of storing the HS as a float I can use unsigned chars, it won't be as accurate but it will be much smapper. The logic is to assign an 8 bit char between 0 and 255 to a HS value between 0.0 and 1.0, so 0 = 0.0, 255 = 1.0, 122 = 0.5 etc.
2. I could write my own isomorphism algorithm, this could be more space efficient than K. Waugh's implementation because I could collapse hands that don't make flushes. However this is a pretty hard thing to do and I don't know how much space I would really save, especially since this would be my first time writing an algorithm like that.
3. Instead of using HS on the river, I can use some sort of absolute hand strength. For example 10 buckets for straights, 10 buckets for flushes etc. I think this will not be as effective as using HS2, but it would be much easier to compute, since I have to evaluate the hands anyway during the CFRM training.

Author:  HontoNiBaka [ Sun Apr 19, 2020 11:44 pm ]
Post subject:  Re: Omaha HS2 and Bucketing

I went for the option of using unsigned chars instead of floats, it will mean a 20GB table but that will be ok.

Now I am facing another challenge: I want to write a parser that accepts pro poker tools syntax for omaha hands and returns a range of hands. Anyone tried to do something like that? Is any code available, c++ if possible?

Edit: I have found this Python library:
https://github.com/tredfern0/pptparser

Has anyone used it? My plan is probably to translate it to c++.

Author:  nefton [ Tue Apr 21, 2020 9:50 am ]
Post subject:  Re: Omaha HS2 and Bucketing

I think calculation of absolute hand stranght will be not so slow. and require zero LUTs.

Author:  llllllllll [ Sat Aug 21, 2021 5:16 pm ]
Post subject:  Re: Omaha HS2 and Bucketing

HontoNiBaka wrote:
So far I came up with 3 ideas:
1. Instead of storing the HS as a float I can use unsigned chars, it won't be as accurate but it will be much smapper. The logic is to assign an 8 bit char between 0 and 255 to a HS value between 0.0 and 1.0, so 0 = 0.0, 255 = 1.0, 122 = 0.5 etc.
2. I could write my own isomorphism algorithm, this could be more space efficient than K. Waugh's implementation because I could collapse hands that don't make flushes. However this is a pretty hard thing to do and I don't know how much space I would really save, especially since this would be my first time writing an algorithm like that.
3. Instead of using HS on the river, I can use some sort of absolute hand strength. For example 10 buckets for straights, 10 buckets for flushes etc. I think this will not be as effective as using HS2, but it would be much easier to compute, since I have to evaluate the hands anyway during the CFRM training.


monker does #2:

Omaha postflop
Omaha is too large to solve completely even when starting from the flop. MonkerSolver therefore reduces the game size by making the following concessions:

Before the river, only suits which has the potential to become flushes are considered. For example, these two hands are merged, even though they influence the opponents range slightly differently:

A♠K♠J♠5♠ 6♣5♣2♣7♣
A♠K♥J♥5♦ 6♣5♣2♣7♣
On the river, only suits with 3 or more cards on the board are considered. For example, consider these hands:

A♠K♠A♦K♦ 6♠5♠2♥7♥T♥
A♣K♣A♦K♦ 6♠5♠2♥7♥T♥
The above two hands are merged into the same bucket. They are however not strategically equivalent, since we are more likely to be up against a missed flush draw with the latter hand.

Page 1 of 1 All times are UTC
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/