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.