I'd really like to start using CFR to write my own programs to help me study the game even more.
I was successfully able to use CFR to work through Rock-Paper-Scissors, which seemed trivial. So I decided to take what I learned from that and apply it to a river situation that was worked through in Will Tipton's book, Expert Heads Up No Limit Hold'Em (pg 48).
The book breaks it down giving both players a range on the river. A pot size of 53bb and effective stacks of 48.5bb.
Hero can check or shove. If hero checks it's assumed that villain always shoves and hero always folds. If hero shoves, villain can either call or fold.
I feel like I used an identical algorithmic approach to this problem as I did with Rock-Paper-Scissors, however, for some reason I'm coming up with a different answer than what was given in the book. The book says hero will shove all hands and villain will call 98 of them (the NE). I'm getting that hero will shove all of them but villain will only call 68 of his combos of hands (Average Strategy and Overall Strategy both came to this conclusion).
I also created a test of my own where hero has 2 hand combos, one a value hand the other a bluff, and villain has 4 hands all of which can beat the bluff and one of which that beats the value also. For some reason, with villain shoving both combos, it has as the Average Strategy villain only calling with the the hand that beats the bluffs and the value hand. The overall Strategy, not the average, has villain calling with 3 combos which makes sense.
I've looked it over multiple times trying to breakdown where the flaw could be, but at this point I'm lost and was hoping someone here can help me out.
GitHub Link