Quote:
Originally Posted by juggler97531
There are fundamentally two parts: 1) the tree and EV calculation 2) algorithm to adjust strategies.
The first thing you need for a solver is to build in RAM a tree with strategies and be able to calculate EV and Max exploit in all nodes for all actions. You need to make it really memory efficient and fast if you want speed similar to commercial solvers. (Hint: don't use double-precision for storage
There are many cool challenges involved in the tree building part.
Once you have that reasonably fast the fun part begins. You can start with some basic strategy adjustment algorithm like CFR+. It's relatively easy to implement it by following the papers.
I'm working on a solver currently and I can't make the tree size small enough to fit in memory once I include the regret sums and strategy sums. My tree only consists of the possible action sequences (no chance nodes), so each decision node has a separate regret sum and strategy sum for each possible hole card combination and board runout. With two bet sizes per street and one raise size per street, I'm getting 1218 decision nodes, 1007 of which are on the river. So that means I need this many floats approximately:
1007 river decision nodes * 2.5 actions on average per node * 1326 hole card combinations * 47 turn cards * 46 river cards * 2 floats (one for regret sum and one for strategy sum) = 13 billion floats
1 float = 4 bytes so that's 52 gigs of RAM.
Even if I represented floats as 2 bytes I'm still looking at 26 gigs of RAM.
Somehow piosolver only needs 6 gigs of RAM for the same tree.
Any advice?