I used CFR to solve another card game called Setback (aka Auction Pitch), which is a trick-taking game that’s similar to, but simpler than, Bridge.<p>CFR is very effective, but slow and requires a lot of RAM. I had to create a smaller, abstract version of the game, solve that, and then map the result back to the actual game, so I didn’t end up with a perfect Nash equilibrium, but the solution does still play at a super-human level.<p>One of the interesting things about my approach is that it actually uses CFR at two separate levels: First it solves a single-deal version of the game, then it uses that solution to run CFR again on a repeated version of the game where each player accumulates points across multiple deals. (Bidding in Setback is highly score-dependent.)<p>I think a similar approach might be possible for Hearts, but I haven’t tried it yet. Solving Bridge with CFR may be beyond our current capability, but could also be possible in the future.<p>[0]: <a href="https://www.bernsrite.com/Setback" rel="nofollow">https://www.bernsrite.com/Setback</a><p>[1]: <a href="https://github.com/brianberns/Setback">https://github.com/brianberns/Setback</a><p>[2]: <a href="https://github.com/brianberns/Cfrm">https://github.com/brianberns/Cfrm</a>