thanks for your excellent ideas. How do we get in touch? You don't left your MSN or email...
Indeed, as I like the pm-function here. Yet, MSN is <!-- e --><a href="mailto:[email protected]
</a><!-- e -->My bot is young and my AI is pretty different from yours, mine doesn't use any points scale, It tries to imitate human processing, using groups of hole cards (Sklansky for instance) and other factors...
Actually those scoring parts were written before I had a stable monte-carlo-simulation. As In/Output finally works like a charm, I recently started to rewrite that part of the AI. The idea is one function per situation, with default situations. Let me explain:
Say we are preflop, and it´s your turn to take action.
IF you are smallblind AND there are no bets so long, STEAL_BIGBLIND() starts. That function evaluates the risk and EV of an attempt to steal BB. Input used are the faced-steal and defended-blind stats of the bigblind out of the SQL, the value of the own pockets out of monte carlo, and some more. As nash-equilibrial stealing frequency is somewhere by 30%, I could use a random part here - yet I take the value of my pockets as "random", therefore stealing with better cards and folding with lesser.
ELSE, if you are smallblind and there are prev. bets, DEF_SMALLBLIND() starts, evaluating the worth of defending the smallblind, AND all the stuff above,
If none of my special functions are called (say you are in an early position with no chance to steal anything), then it´s a simple list lookup for the value of the pockets.I am adding a random factor to be more unpredictable 20% of the times...
I have found a lot of people trying to get the monte-carlo-simulaion precis to the third decimal, just to add some random value.
I stop my monte carlo so it has no more than+/- 2% accuracy. That´s random enough.
People don´t know what funtion fires in what situation...ntherefore action seams random.
Yet this will be reevaluated on a frequent base.The SQL part to access PT3 database was pretty easy...
I use for every player their actual values plus the AVERAGE of the whole db multiplied by 50 hands. Again, let me explain:
My DB shows after sever ten thousands of players a VPIP of 57 (stupid microlimiters
) That´s a good point to start from.
PLAYER A has vpip of 20, 2000 hands. (2000*20+50*57) / 2050 = 20,9% VPIP
PLAYER B has vpip of 90, 70 hands. (70*90+50*57)/130=70,4%
Hereby I get useable values considering both the players specifica and the unreliability of stats with small amopunts of data.
But I come to struggle when I try to create those averages not of all and every player, but only with those players with more than 100 hands recorded... But getting the input data was really hard. Why do you use pattern recognition for your position and the button? You could go to the history file to get that data... I understand your way is more accurate because of players getting out and in... But, isn't it more slow? How could you manage resizing? and multitable (well this I can imagine)? and diferent skins? With History files You don't need to worry about those last factors... And It really is easy and faster to program...
Searching a specific spot for the dealer button only takes some ms. Doing so with 6 spots is about 10 ms. That´s perfectly fine. The dealerbutton is localized at the beginning of a hand way before it´s my turn to act, so there are plenty of seconds to do this stuff. As most of my input is based upon screenscraping, I do not see the need to search throu logs.
Resizing and skins changes are no problem: I simply do neither.
As my bot is not ment to be used by guys not understanding the code, I do not need to try to make it universal. No option dialogs. No helpfile. Just code.Pot odds is the only function that needs to access the pokerstars GUI, but I guess if I use the chat window I don't need to recognize the numbers... I did this part reading the pixels, but I don't like what I did, I really think there is a better way...
I consider the chat dialog useless. I use the pot-part at the top of the table. And I search whole digits, not single pixel. There are 10 digits - make a screenshot of each of them. In the future I want to put multiple instances of my bots talking with each other, that way I could calculate more accurate the outs... I would know two more hole cards of the deck, which gives me a huge advantage.
While collusion is conidered cheating even by botmakers, it will sure give you an advantage. On the downside, collusiuon-detection is far stronger than bot-detection. This way you could highlight your winning bot on their screens and hereby cut your income.
I don´t care how much or little my bot is winning. as long as it is above break even, I can run in on more tables or more hours...
Yet, if you want them to communicate, be sure they sit on different IPs and have no datastream connecting each other. Something like ICQ or MSN might be a good way.I did something additional: I have a table statistics, that way I could know when to leave a table and enter another one... I also have a list of whales to look for when choosing a table. I really think that tables have to be carefully chosen...
That´s the SQL-part again.
Just query all players before taking a seat, and score them based upon vpip, AF and PFR. I play at no table with a score less than 500 points. A single dumbass fish scores 400, by the way. Well, a single fish will render the table almost profitable. I want to make a tournament version that considers more factors like Harrington M, etc.
I belive that limited cash-game is the most maths-based game in holdem, and therefore the one most suiteable for bots. I have no script so far that even comes close to anything like "that guy might have a pair of K, considering the way he acts." Maybe I should invent Intuition(). Right now I work on WalkOnTheWater(). Why did you use only VPIP? Don't you care about PR or AF factor in the AI module? You know all this info is available for query in PT3 database...
I use about 15 stats so far. Not everything I do is represented in this thread.Another question: Did you try to use a calculatem pro interface to get a "easy already made" AI? Did it work? I couldn't do it because of the delay between windows and the multitable factor. Is there any command line input/output calculatem pro?
Sorry, no idea. On pokerai.org ant other on-topic threads they stated that only 15% of the bots are winning on the long therm. After reading throu a lot of posts, I realised the simple reason: Only about 15% of guys running a bot understand what they run. The other 85% write a simple input-output-script and use some out-of-the-box AI with little to no ways of changing parts of the logic.
I made the whole thing from the scretch, and so far it proves to be the way to go. hacking into the middle of my code and adding some lines to implement a new stat or new formula for a specific situation is more valuable that all those boxed AIs together.Datamine was really easy too. I have about 10000 observed hands per day per level. But I needed to close and re-enter PT3 every 30 hands... Have you found a better way? Eyy, may be we could share databases.
I can datamine unlimited tables at once, with no time limit and unattended. I will share the solution for your database of micro-limit at stars. My main database is so slow (Billions of hands)... It is too much, I have to cut it every month into a new one with a postgrep script keeping just the last 5000 hands per player...
Would love that kind of trouble I also have ways to find out who are bots and who aren't... It is really usefull, for instance, when I have a bot in a flop/turn heads-up I could go all-in knowing the pot odds is going to make the villain bot to fold! May be I have also marked your bot, who knows... lol
Don´t belive that hase more accuracy than 30 or 40 %. Sure theye are tells, indeed. yet as long as someone has a far negative BB/100 I don´t really care. And most bot´s have some bluffing, so you could fail... well, the idea is damn nice anyway This bot has been A LOT of work, and each time I have an idea I feel like "It is enough!", So much work... Don't you agree?
Well, spending 2 hours a day for something that gains an income wort far more than 50 hours a month is always a good deal.
Yet, my bot is only some weeks old, and not yet completed. It works, it wins, and yet my whiteboard is full of tasks to make it stronger...
It is thanks to the simplicity of AHK that I was able to make the whole input-part in a few days. With C++ you need a month for the same part.