Repository navigation
Releases: AlecROndo/drawmaha-solver
Release list
Rung 4: Deep CFR 4 × 256 with ÷ √pot regret targets, iteration 200 — the exact average and Π
Mini-drawmaha strategies frozen at iteration 200 of the Deep CFR arm pot0.5-256x4-s16000-lr5e-4 (scripts/deepcfr/run_deep_cfr.py on a Mac, --device mps): a 4 × 256 net, 16,000 Adam steps per refit at lr 5e-4, K = 10,000 walks per seat per iteration (2,000,000 hands per seat by this mark), 50M-row reservoirs, linear weighting, seed 0 — and the refit's regret targets divided by √pot at each decision spot (--pot-power 0.5, the default since PR #68), which is what separates this arm from the rung4-deep-t500 release's.
Two objects, both graded by the exact best-response walk (figures/rung4/pot_0.5-256x4-s16000-lr5e-4.json; uniform random play is 4.842 chips/hand):
deep-pot0.5-256x4-s16000-lr5e-4-t200-exact.npz— the exact running average of the iterates, kept because mini-drawmaha is small enough to hold it. Exploitability 0.0859 chips/hand: the best graded Deep CFR object so far, under the raw arm's 0.1079 at iteration 500 and its 0.115 at this same mark. What/rung3's Play tab deals against (uv run minidraw-deals).deep-pot0.5-256x4-s16000-lr5e-4-t200-pi.npz— Π, the policy net: a fresh net fit at the mark on the policy memory, the average strategy Deep CFR ships in a game too big for tables. Exploitability 0.1157 chips/hand.
For comparison, rung 3's tabular LCFR at 20,000,000 hands per seat (release rung3-lcfr-2m) grades 0.0613, and at the same 2,000,000 hands grades 0.630.
Both load with drawmaha_solver.minidrawmaha.answer.strategy.load_strategy; the catalogue that names them, their digests and their grades is src/drawmaha_solver/minidrawmaha/answer/releases.py.
Rung 4: Deep CFR 4 × 256, iteration 500 — Π and the exact average
Mini-drawmaha strategies frozen at iteration 500 of the Deep CFR arm sweep-256x4-s16000-lr5e-4 (scripts/deepcfr/run_deep_cfr.py on a Mac, --device mps): a 4 × 256 net, 16,000 Adam steps per refit at lr 5e-4, K = 10,000 walks per seat per iteration (5,000,000 hands per seat by this mark), 50M-row reservoirs, linear weighting, seed 0. The run was stopped at iteration 506 because its exact average had flattened.
Two objects, both graded by the exact best-response walk (figures/rung4/sweep_256x4-s16000-lr5e-4.json; uniform random play is 4.842 chips/hand):
deep-256x4-s16000-lr5e-4-t500-pi.npz— Π, the policy net: a fresh net fit at the mark on the policy memory, the average strategy Deep CFR ships in a game too big for tables. Exploitability 0.1363 chips/hand.deep-256x4-s16000-lr5e-4-t500-exact.npz— the exact running average of the iterates, kept because mini-drawmaha is small enough to hold it. Exploitability 0.1079 chips/hand.
For comparison, rung 3's tabular LCFR at 20,000,000 hands per seat (release rung3-lcfr-2m) grades 0.0613.
Both load with drawmaha_solver.minidrawmaha.answer.strategy.load_strategy and are what uv run minidraw-ranges --release deep-pi / --release deep-exact fetch and check by SHA-256 to export the /solver ranges.
Rung 3: frozen LCFR strategy (2M iterations)
Mini-drawmaha average strategy (linear average) of the LCFR lockstep run: 2,000,000 iterations, W=10 workers (20M hands per seat), seed 0. Exact exploitability 0.061346 chips/hand (6.13 per 100 hands); BR_0 −0.034421, BR_1 +0.157114.
Loaded by drawmaha_solver.minidrawmaha.strategy.fetch_strategy, which checks SHA-256 d49f0f3792627cd5b0279956c7b67690af1507b5beec264cbf5e4606f437b6b8.