pandaant/poker-cfrm

"Too many abstract actions" error in training no-limit-holdem using the provided game definitions

sriharshamadala opened this issue · 2 comments

Hello Pandaant,

Great work with the project and thanks for sharing. I have run into the following issue, kindly share your thoughts.

I have not made any changes to the code apart from increasing the number of threads. The strategy file was computed, 17GB in total. But when I run "player" I get the error, "too many abstract actions". Looks like the maximum allowed is defined to be 20. The blinds are 1 and 2, stack sizes are 200 and 200. Since max allowed raises in each rounds are defined to be 3 4 4 4, my calculation for max number of actions is 4+5+5+5=19. So I am not sure why I am getting this error.

If I do change "MAX_ABSTRACT_ACTIONS" to say 30, do I have to repeat all the steps - gen_eval_table, cluster_abs, potential_abs, and cfrm again?

What is the idea behind code duplication in tools/ehs_gen/src and src?

Hi sriharshamadala,

i'm guessing you are using the PotRelationActionAbstraction (potrel). Yes you can either increase the MAX_ABSTRACT_ACTIONS or narrow your betting relations. The max abstract actions don't describe the amount of allowed raises per round (these are defined in the game definition) but instead refer to the different raise actions in fractions of the pot.

Each comma separated value translates to a raise action in the abstract game.

If I do change "MAX_ABSTRACT_ACTIONS" to say 30, do I have to repeat all the steps - gen_eval_table, cluster_abs, potential_abs, and cfrm again?

You "only" need to redo the training portion afaik: "./cfrm ..."

What is the idea behind code duplication in tools/ehs_gen/src and src?

It's been a long time since writing the code and i'm not sure anymore. But probably because of lazyness on my part.

Hope this helps.

Thanks a lot! It is very helpful.