Poker-AI.org

Poker AI and Botting Discussion Forum
It is currently Wed Apr 24, 2019 3:55 am

All times are UTC




Post new topic Reply to topic  [ 14 posts ] 
Author Message
PostPosted: Thu Jan 17, 2019 8:55 am 
Offline
Senior Member

Joined: Wed Mar 20, 2013 1:43 am
Posts: 231
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?


Top
 Profile  
 
PostPosted: Fri Jan 18, 2019 9:20 am 
Offline
Site Admin
User avatar

Joined: Sun Feb 24, 2013 9:39 pm
Posts: 546
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.


Top
 Profile  
 
PostPosted: Thu Jan 24, 2019 12:37 pm 
Offline
New Member
User avatar

Joined: Sat Sep 12, 2015 3:18 pm
Posts: 1
I'm currently working on open sourcing some of my poker-related code (also in Scala) and would love to see yours :)


Top
 Profile  
 
PostPosted: Thu Jan 24, 2019 2:27 pm 
Offline
Senior Member

Joined: Wed Mar 20, 2013 1:43 am
Posts: 231
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.


Top
 Profile  
 
PostPosted: Wed Feb 06, 2019 12:42 pm 
Offline
Senior Member

Joined: Wed Mar 20, 2013 1:43 am
Posts: 231
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.


Top
 Profile  
 
PostPosted: Wed Feb 06, 2019 1:47 pm 
Offline
Site Admin
User avatar

Joined: Sun Feb 24, 2013 9:39 pm
Posts: 546
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?


Top
 Profile  
 
PostPosted: Wed Feb 06, 2019 3:55 pm 
Offline
Senior Member

Joined: Wed Mar 20, 2013 1:43 am
Posts: 231
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.


Top
 Profile  
 
PostPosted: Wed Feb 06, 2019 4:41 pm 
Offline
Site Admin
User avatar

Joined: Sun Feb 24, 2013 9:39 pm
Posts: 546
So what reduction in size do you get?


Top
 Profile  
 
PostPosted: Fri Feb 08, 2019 2:24 am 
Offline
Veteran Member

Joined: Mon Mar 04, 2013 9:40 pm
Posts: 260
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.


Top
 Profile  
 
PostPosted: Sat Feb 09, 2019 9:48 am 
Offline
Senior Member

Joined: Wed Mar 20, 2013 1:43 am
Posts: 231
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.


Top
 Profile  
 
PostPosted: Sat Feb 09, 2019 10:02 am 
Offline
Senior Member

Joined: Wed Mar 20, 2013 1:43 am
Posts: 231
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.


Top
 Profile  
 
PostPosted: Mon Feb 18, 2019 12:16 am 
Offline
Veteran Member

Joined: Mon Mar 04, 2013 9:40 pm
Posts: 260
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


Top
 Profile  
 
PostPosted: Mon Feb 18, 2019 12:51 pm 
Offline
Site Admin
User avatar

Joined: Sun Feb 24, 2013 9:39 pm
Posts: 546
Welcome to the future.


Top
 Profile  
 
PostPosted: Mon Feb 18, 2019 3:40 pm 
Offline
Veteran Member

Joined: Mon Mar 04, 2013 9:40 pm
Posts: 260
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?


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 14 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Powered by phpBB® Forum Software © phpBB Group