Poker-AI.org
http://poker-ai.org/phpbb/

Computing isomorphic hands on a given board
http://poker-ai.org/phpbb/viewtopic.php?f=24&t=3196
Page 1 of 1

Author:  HontoNiBaka [ Thu Jan 17, 2019 8:55 am ]
Post subject:  Computing isomorphic hands on a given board

I was trying a different approach to solving the game lately, instead of using postflop buckets and solving the whole tree at once I started from a given preflop range and tried to solve each flop individually, like many people do with Pio Solver.
My flop solutions are way bigger, I assume that Pio is using postflop isomorphisms. I tried to run the isomorphism code by K. Waught, which can be found in the Poker Papers subforum, but I didn't have much success with that. Can it be done with that algorithm?
Anyone tried solving postflop separately and has a few tips how to reduce the size?

Author:  spears [ Fri Jan 18, 2019 9:20 am ]
Post subject:  Re: Computing isomorphic hands on a given board

I haven't done exactly what you suggest because I am ploughing a rather different furrow, but a while ago I did something that might inform you.

It's rather difficult to explain exactly what I did in the time I have available, but this is the result. I reckon you only need to look at the 1755 isomorphic flops, all their turn successors, and all their river successors. I tried to reduce the problem further by just looking at isomorphic turns, but it gave the wrong answer. It looks as though it might be possible to construct a tree that is some sort of halfway house between all turn successors and just isomorphic turn successors, but I didn't pursue that line of enquiry. This would save a lot of space if successful. All isomorphic flops do not have the same frequency so you have to compensate for that. How would you specify the ranges? If the same frequency is shared by many hands I could see that you could use that fact to reduce the size.

I'm not very familiar with Pio. Do they explicitly say they don't use abstraction post flop? IIRC they don't look at many different bet sizes, which actually seems a bit worrying to me.

I might be able to help further later but am a bit busy at present. I have Scala code to calculate the isomorphs etc. It would take me a few hours to break it out from my project and document it properly but I might be willing to do that if I get indications you are serious about using it.

Author:  griff1th [ Thu Jan 24, 2019 12:37 pm ]
Post subject:  Re: Computing isomorphic hands on a given board

I'm currently working on open sourcing some of my poker-related code (also in Scala) and would love to see yours :)

Author:  HontoNiBaka [ Thu Jan 24, 2019 2:27 pm ]
Post subject:  Re: Computing isomorphic hands on a given board

spears wrote:
I tried to reduce the problem further by just looking at isomorphic turns, but it gave the wrong answer.

I had the same problem.

spears wrote:
All isomorphic flops do not have the same frequency so you have to compensate for that. How would you specify the ranges?

I would either construct the ranges myself from things like Holdem Manager stats and known opening ranges. For example many people raise the same range from the button. For HU I can use pio preflop ranges.

spears wrote:
I'm not very familiar with Pio. Do they explicitly say they don't use abstraction post flop? IIRC they don't look at many different bet sizes, which actually seems a bit worrying to me.

Yes, they don't use card abstraction, they do use action abstraction though. Usually you can only specify very few bet sizes untill you run out of RAM.
I don't know if that approach is really that good, but I am not programming it only for myself, although I might also use it. A poker player that I know wanted me to program something for him and since pio is the most popular solver, he wants something similar.

I am using monte carlo CFR btw. so I think I don't havw to worry about frequencies at least, because the hands will be sampled in the correct frequency.

Author:  HontoNiBaka [ Wed Feb 06, 2019 12:42 pm ]
Post subject:  Re: Computing isomorphic hands on a given board

I think I have it working now, it actually works the same way that I thought, I don't know why I had incorrect results last time, probably just introduced a stupid bug.

Author:  spears [ Wed Feb 06, 2019 1:47 pm ]
Post subject:  Re: Computing isomorphic hands on a given board

HontoNiBaka wrote:
I think I have it working now, it actually works the same way that I thought, I don't know why I had incorrect results last time, probably just introduced a stupid bug.

How many distinct rivers do you visit per flop?

Author:  HontoNiBaka [ Wed Feb 06, 2019 3:55 pm ]
Post subject:  Re: Computing isomorphic hands on a given board

I visit all of them, then for every hand I check the isomorphic index of the hand with the isomorphism algorithm from the poker papers subforum.
Then I just have to map the indexes that I get to indexes starting with 0 up to the number of indexes on that board, because for a given flop the indexer will usually return a very high index and there are also gaps.
But I think this method might not work if you are not using chance sampled CFR.

Another thing that I noticed though is, that I get a significant reduction in size, but it's still bigger than pio, maybe I can use some more tricks. Or maybe pio is just different, they also don't use cfr afaik.

Author:  spears [ Wed Feb 06, 2019 4:41 pm ]
Post subject:  Re: Computing isomorphic hands on a given board

So what reduction in size do you get?

Author:  shalako [ Fri Feb 08, 2019 2:24 am ]
Post subject:  Re: Computing isomorphic hands on a given board

I sure wish I knew what you guys where talking about. I have been trying to wrap my head around all this CFR stuff and its just not clicking. I understand board isomorphisms and all that but the rest is way way over my head..

I really want to learn this stuff and create my own PLO Solver. A this rate its going to take until rapture.

Author:  HontoNiBaka [ Sat Feb 09, 2019 9:48 am ]
Post subject:  Re: Computing isomorphic hands on a given board

spears wrote:
So what reduction in size do you get?

I would say it's about 50% on average, but on rainbow flops for instance there is no reduction at all, which does make sense with the iso algorithm, since I don't think any hand is isomorphic to another on that board.
Maybe Pio uses additional rules like collapsing all non flush turns or something.

Author:  HontoNiBaka [ Sat Feb 09, 2019 10:02 am ]
Post subject:  Re: Computing isomorphic hands on a given board

shalako wrote:
I sure wish I knew what you guys where talking about. I have been trying to wrap my head around all this CFR stuff and its just not clicking. I understand board isomorphisms and all that but the rest is way way over my head..

I really want to learn this stuff and create my own PLO Solver. A this rate its going to take until rapture.


The Amax code in the archive helped me understanding CFR.

Author:  shalako [ Mon Feb 18, 2019 12:16 am ]
Post subject:  Re: Computing isomorphic hands on a given board

I found some Python code and just dived into it. By messing with the code for the last few weeks it has allowed me to understand how it all works and speed up/improve many parts of it. I have no idea why I waited so long to get into this aspect of AI

Author:  spears [ Mon Feb 18, 2019 12:51 pm ]
Post subject:  Re: Computing isomorphic hands on a given board

Welcome to the future.

Author:  shalako [ Mon Feb 18, 2019 3:40 pm ]
Post subject:  Re: Computing isomorphic hands on a given board

Hey,

I am also doing post flop sims starting with presolved preflop ranges. I am using the 1755 isomorphic flops that Pio generates for this. Solving each board individually instead of all 1755 at once is definitely the way to go to keep tree size/ram down to a minimum.

I have yet to modify the ranges/hands for these iso boards but I did write some code for this (a real pain!) on some Pio advisors I have created the last few months. The code was not that great so I need to figure out a better way to do it although it does work.

HontoNiBaka wrote:
I was trying a different approach to solving the game lately, instead of using postflop buckets and solving the whole tree at once I started from a given preflop range and tried to solve each flop individually, like many people do with Pio Solver.
My flop solutions are way bigger, I assume that Pio is using postflop isomorphisms. I tried to run the isomorphism code by K. Waught, which can be found in the Poker Papers subforum, but I didn't have much success with that. Can it be done with that algorithm?
Anyone tried solving postflop separately and has a few tips how to reduce the size?

Author:  closekrop [ Fri Jul 05, 2019 8:24 am ]
Post subject:  Re: Computing isomorphic hands on a given board

shalako wrote:
I found some Python code and just dived into it. By messing with the code for the last few weeks it has allowed me to understand how it all works and speed up/improve many parts of it. I have no idea why I waited so long to get into this aspect of AI

Can you share here with them?

Page 1 of 1 All times are UTC
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/