bupticybee / TexasSolver

🚀 A very efficient Texas Holdem GTO solver :spades::hearts::clubs::diamonds:
https://bupticybee.github.io/texassolver_page
GNU Affero General Public License v3.0
1.69k stars 301 forks source link

Isomorphic feature bug (EV: 0 for all) #99

Open maosatgithub opened 2 years ago

maosatgithub commented 2 years ago

Hi, I read that there is a known bug #72 with three cards of same suit on board, but here is an example where that is not true, thus I wanted to report it in addition. With the standard parameters, Qs,Jh,2h flop, and 3d turn and 3c river cards, the entire OOP range evaluates to 0ev, and suggests splitting equally among check, bet ,bet:

image

From what I can tell, here the trigger is that the turn card is a diamond, and the river is a club. Depending on the exact card, only part of the range gets evaluated this way.

bupticybee commented 2 years ago

Yes, I still haven't got the time to fix this bug, for now I suggest uncheck the isomorphism box, it will take a little bit more time, but it will give you the correct answer

maosatgithub commented 2 years ago

From what I can tell, here the trigger is that the turn card is a diamond, and the river is a club. Depending on the exact card, only part of the range gets evaluated this way.

I looked a little been further into this, and I think I can more closely describe the conditions where this occurs in this form. I hope that gives a little help in finding the solution for the bug.

  1. An active iso color exchange must have happened, so that's why it occurs e.g. with Qs,Jh,2h - 2d - 2c, but not with .. -2c - 2d, as only the diamond on the turn is handled by the iso optimizing, getting substituted for the 2c results.
  2. The river card is of of the corresponding exchange color (or of the same). As on Qs,Jh,2h clubs and diamonds are isomorphic exchangeable, this is clubs (or diamonds) in this example.
  3. The river cards creates a pair with a card of the corresponding suit (here diamonds), either with a board card, or with a private card. If its with a board card, as in -3d-3c, it will show up in all results. If its in with a private card, it will only show up in the detailed result of cards with the corresponding "iso-opposite" card.

So here his an example where the club-T on the river pairs only with the private cards that hold a diamond-T, thus the issue shows up for exactly the xT combinations with the ten of diamonds:

image

My guess on this is, that the river card (here club) needs to be internally substituted for the corresponding isomorphic color (here diamonds) at some place, but isn't. This results in invalid, because not existing results being used, because the range excludes the card (T-clubs) as you can see above in the detailed section: no T-clubs shows up, as its the dealt card, but the T-diamonds results are wrong, zero-EV so likely non-existing. So maybe the diamond-Ts were correctly excluded from being calculated, but the club-Ts were excluded from the range, at least for the display purposes. Or in other words: if the (displayed) range would include the calculated club-Ts, but being substituted (displayed) as diamond-Ts, the result would likely be correct.

maosatgithub commented 2 years ago

2. The river card is of the corresponding exchange color. As on Qs,Jh,2h clubs and diamonds are isomorphic exchangeable, this is clubs in this example.

I need to add: It can also happen if the river card is the same as the exchanged color, e.g. diamonds in this example, if it still forms a pair:

image