Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Description of approach/results #368

Open
scheibo opened this issue Mar 4, 2024 · 1 comment
Open

Description of approach/results #368

scheibo opened this issue Mar 4, 2024 · 1 comment
Assignees

Comments

@scheibo
Copy link

scheibo commented Mar 4, 2024

I'm trying to describe/summarize existing competitive Pokémon AI projects for https://pkmn.ai/projects and was wondering if you would be willing to help provide an explanation for this project (which might also be something you could adapt for this repository's README)? Many of the projects on the site already have descriptions filled in (i.e., the ones which aren't lorem ipsum) which might be helpful as examples of what I'm looking for. :)

Beyond this project targeting Gen 4 Random Battle and using what appears to be a fairly sophisticated DQN Model, more specifics about the implementation would be really helpful. In particular, things like: high level approach. important features/heuristics. special cases. do you plan to support other generations? non-random formats? how does the agent currently perform (have you tested on the ladder? versus baseline agents?). weaknesses or pitfalls?. planned improvements/future directions? biggest bottlenecks? etc

No worries if you don't feel like contributing. There's also https://pkmn.ai/chat if youre on Discord and want to chat with others building Pokémon AIs. Thanks.

@taylorhansen
Copy link
Owner

Hi, thanks for reaching out.

I can definitely revamp the READMEs to better explain the project. Nowadays I've mostly been doing various training runs and tweaking the model, such that recently, on a good run, it could beat my max-damage heuristic agent in a bit under half of its matches but still usually fail against me or any moderately-competent human player. Soon I definitely want to try more ideas to expand and improve the model and algorithm more to see if I can get a better model, especially one that I'd be confident in trying to test on the ladder later down the line (which I haven't done at all yet).

As for the initial choices and setting, I chose Gen 4 which was more simple and familiar to me so coding an event parser and state vector representation for it could be somewhat easy, though there were still some issues with trying to figure out how to represent e.g. Ditto's state and all its corner cases. As this is mostly a hobby project I don't foresee supporting other generations, at least for a while until I can reliably produce a good Gen 4 Random Battles model as a proof of concept. Randomly-generated teams were because a fixed one felt too limited and possible to overfit without good signal, so I just picked Showdown's random battles format to sidestep the issue of having to pick a sufficiently-balanced team, though with the amount of variance already in the game I haven't confirmed whether this was the best choice, at least when starting out, since now it has to generalize and adapt to every playstyle based on its starting team and matchups.

This should probably go into the README now that I think about it so will do that and the rest of your points.

Lemme know if there's anything else you wanted to know about.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants