View Single Post
Old Oct 3rd, 2011, 11:54:55 AM   #11
david stone
Fast-moving, smart, sexy and alarming.
is a Pokémon Researcheris a Contributor to Smogonis a Site Staff Alumnusis a Super Moderator Alumnusis a Smogon IRC AOp Alumnusis a Battle Server Moderator Alumnus
 
david stone's Avatar
 
Join Date: Aug 2005
Posts: 5,152
Default

Quote:
Originally Posted by Fat MajorGambit View Post
I didn't quite get it? Could you provide us further clarification?
Technical Machine is a program / AI / bot that can play Pokemon. It connects to a server and without any assistance it determines which moves to use and then uses them.

Quote:
Originally Posted by Fat verbatim View Post
I(i.e., he can't copy a code from something the smartest people in the world already put together, i.e., chess)
Fortunately, some of the work already done is still applicable. My central algorithm is what is used in chess, but modified for games of chance. I've also gotten some ideas from backgammon AI (another game of chance). The biggest differences between this and any other good AI game is all the hidden pre-battle customization and simultaneous moves. In most games, players take turns making moves, but in Pokemon, players take moves at the same time. Combine that with hidden information about teams and you have a lot of unknowns that TM has to just kind of guess at.

Quote:
Obi, beyond connecting to Pokemon Online with the A.I. and uploading the data on all of the fifth gen pokemon, what else do you need to accomplish?
I'm going to write a team creator, add in "yomi layers" (outlined at the bottom of the page at http://doublewise.net/pokemon/), and work on applying an evolutionary algorithm to Technical Machine's evaluation of the game. Right now it's a text file with a bunch of values where I just said "This looks like maybe the number is close to the real value" for things like Stealth Rock and status. I would have the program try out millions of combinations of data and use the one that seems to work best. It would battle against itself to weed out the bad ones, and take the values that seem to work and battle against humans to finish it up.

And obviously, I want to make it faster. The faster it runs, the stronger of a player it is. Right now it can search up to three turns ahead. My goal is five. Doesn't sound like a big difference, but consider this: looking one turn ahead is almost instant. Two turns ahead is barely noticeable. Three turns ahead is 10-30 seconds. Four turns ahead is probably about 10 minutes. Five turns would currently take more than a day at my estimation. I want to get 5 turns down to ~20 seconds per turn.

Quote:
Originally Posted by Fat Box View Post
You are a genius. What do you mean by it not understanding Life Orb?
In a battle, when it sees "Infernape lost 10% HP!" it doesn't understand that means it has Life Orb, so it will continue on with whatever its estimate of the item is. That estimate could be Leftovers, Choice Band, or even Life Orb (whatever is the most used item on that Pokemon). I have code built in that corrects HP if Technical Machine thinks it is different than the server does, but TM doesn't correct its estimate of the item, so it never thinks that they have a Life Orb boost. I don't have my reverse damage calculator built into TM yet, so it doesn't adjust items based on damage, either.

Quote:
Originally Posted by Fat Dr. Eyepatch View Post
I have been curious about one thing since then, which was whether or not Technical Machine will develop its own teams, but you seemed to have mostly answered it in the first post. Tell me, will it be gathering data from the opponents it faces or has already faced in order to create a team? If so, how will it go about this? Will it use what it found to be most effective from opposing teams, what could be used to gain the advantage over previously-seen pokemon, or some combination of the two?
My current plan is to take TM's prediction of the foe's team, and if the foe wins, save that team for later use. I'll also add in some ability to remove teams that do not perform well so TM isn't bogged down with bad teams that it happened to lose to. I'd also like to create a sort of "team optimizer" algorithm. It would run this on all of its teams and set EVs to optimal values, maybe switch some moves around, etc.

Quote:
Originally Posted by Fat Box View Post
As a rough estimation, when will you be done with Generation 5? Is this a program that anybody can use?
I have no idea when it will be done. Probably early next year, but maybe sooner or later.

Anybody can use if they can compile it. I've only compiled it under Linux, not Windows or Mac. I'll be posting detailed instructions on how to compile under Linux in a couple of weeks. I already have a pretty good set of instructions with the source code right now, though.
__________________
Previously obi.
Technical Machine, a Pokemon AI.
"Strategy without tactics is the slowest route to victory. Tactics without strategy is the noise before defeat." - Sun Tzu
david stone is offline   Reply With Quote