ericgjackson / slumbot2019

Implementations of CFR for solving a variety of Holdem-like poker games
MIT License
133 stars 31 forks source link

can't figure out solve_all_subgames with holdem_params #21

Closed luminalle closed 2 years ago

luminalle commented 2 years ago

Hello.

I have been trying to use the code for minimizing regret and solving Texas Holdem (holdem_params).

The thing is that solve_all_subgames seems to run forever while it creates huge files with parameters I have been giving. I have to say that I'm not sure if parameters I have been giving are correct or if my buckets that I have been using are correct. I have tried to read source code to figure out the exact meaning of each parameter, but can't figure it out.

here is one of the input I have been trying: ../bin/solve_all_subgames holdem_params nhs2_params none_params mb1b1_params mb1b1_params tcfr_params cfrps_params 3 0 200 unsafe cbrs card zerosum avg none disk 1 10

The input I used for building "hs" buckets is in README.md.

Also in the holdem_results file, configuration for buckets is "nnwml1wml1". I have been trying to replicate those buckets, but I have no idea what parameters are being given to build_rollout_features to create "wml1" buckets. Any tips?

Anyway many thanks for publicizing this project. It's really interesting.

ericgjackson commented 2 years ago

Yeah, sorry, I dumped all my code on github and I never really got around to documenting it, beside the fairly minimal README.

One thing to note is that solve_all_subgames tries to resolve all subgames (like the name says). When you specify holdem_params as the game parameters, that says to use the full 52-card deck. There are a lot of possible river boards so solving all subgames is going to take forever. I would recommend getting started with a smaller game. ms1f3_params is mentioned in the README. "ms1" means "max street 1". The streets are numbered 0, 1, 2 and 3, so that means a game with only a preflop and a flop. "f3" means three cards on the flop. That's all very cryptic, but you can probably figure out some of the parameters in those files like "MaxStreet" and "NumFlopCards".

I think the "wml1" buckets are identical to the "hs" buckets which are described in the README. For the river you could build them like this:

../bin/build_rollout_features holdem_params 3 wml1 1.0 wmls 0.5 ../bin/build_unique_buckets holdem_params 3 wml1 wml1

This bucketing just buckets the hands according to their hand strength on the river (essentially how many hands they beat). There should be 1950 buckets.