logoalt Hacker News

Pokémon Team Optimization

74 pointsby nchagnetlast Saturday at 1:38 PM36 commentsview on HN

Comments

HelloUsernametoday at 12:59 PM

Right on time for 30th anniversary! https://xcancel.com/Pokemon_cojp/status/2006379822012911872

Translated text:

The 30th anniversary of Pokémon begins! It's been 30 years since the release of "Pokémon Red and Green." Pokémon will celebrate its 30th anniversary on Friday, February 27, 2026. This year is going to be the best year yet! Stay tuned! #Pokémon30thAnniversary

huevosabiotoday at 12:23 PM

Love this!

My general problem with Pokémon (at least the older versions, haven't played the latest) is that when playing against others it frequently just boils down to the same set of legendary and overpowered mons.

You sort of addressed this running the milp without certain mons as options, which makes sense.

But you already have the machinery for a better constraint: max total base stat. You could think of it as "weight classes" in box.

So, for a given weight class, your team can only add up to Y in total base stat. You can squeeze one of the OP mons, but then the rest are slackers. Or you could balance them.

It makes it a lot more interesting and invites for diversity. And you could run it for many different values of Y.

show 5 replies
reddalotoday at 10:12 AM

An interesting thing of this article is that the SVG image of the type matchup [1] has embedded automatic translation.

The type labels will be displayed in the language your browser is set to. I didn't even know this was possible.

[1] https://upload.wikimedia.org/wikipedia/commons/9/97/Pokemon_...

show 3 replies
yunusabdtoday at 12:07 PM

If you find the base game too easy, I can recommend the IronMON challenge: You can only use one mon, permadeath, stats are randomized, all trainer levels are buffed by 1.5x and you can't level up on wilds. Along with numerous other rules to make it harder. There are variants that are borderline impossible to beat, like Super Kaizo IronMON. Out of hundreds of thousands of attempts, it has only been beaten once. Would make for an interesting optimization problem.

https://github.com/PyroMikeGit/SuperKaizoIronMON

oceanskytoday at 11:00 AM

Base stat total alone is a bad metric, because stat distribution is equally as important.

If the stats are distributed heavily both on attack and special attack, it's usually bad because you generally want specialist attackers and these stats could be better somewhere else like speed.

show 2 replies
s_trumpettoday at 11:54 AM

Great article but I’d say you’re optimizing for the wrong metric here. For in game playthroughs, offense > defense and especially speedy offense beats anything else.

I’d state it as, Given any type, we should be able to hit it for super-effective damage with at least 1 move. And instead of taking raw BST, I’d take Max(SPD+ATK, SPD+SPA) to favour speedy offense.

Of course this does not take into question the thorny question of availability. Metagross is a top tier but only available post game in its debut. On the other hand Crobat and Gyarados are readily available in many of the games early on and evolve fairly quickly.

Please look into the competitive Nuzlocke community, there are a lot of damage calculations and viability spreadsheets all around, you’ll find it interesting.

show 1 reply
saagarjhatoday at 12:20 PM

I'm curious how it would rank existing teams–for example, are there trainers who pick better teams (of course, I am sure the bug catchers get soundly trounced). Surely Cynthia or Red have a strong team?

the-smug-onetoday at 12:38 PM

The SVG chart has internationalization built-in, with multiple languages available. I thought that was cool.

tweakimptoday at 8:42 AM

Why is y+2x optimal at (0,3) with a value of 3? Isnt it (3,0) with a value of 6?

show 2 replies
mparnisaritoday at 11:21 AM

My uni course on optimization was so much fun but I forgot all of it. This was a nice reminder that I should probably revisit the basics :)

arealaccounttoday at 11:52 AM

Slaking can only attack every other turn making it a bad choice outside of niche teams.

show 1 reply
abhishekbasutoday at 8:47 AM

this was a great read to start the new year! having worked extensively with mixed integer programs, it is always a bit disheartening to see them not used enough for everyday decision-making. one of my goals this year is to create a layer to make it easier to formulate mips and test them, via plain text input. this would hopefully increase adoption through a lower barrier to entry.

stevekemptoday at 8:53 AM

Lots of people working in IT have tattoos, I like to see what theme/image overlap they have.

Three people in my current workplace have a balloon tattoo (interestingly all of them are red balloons). Five people in my current workplace have a Pokémon tattoo that is easily visible.

Edit: Including myself, on both counts, I should have said.

show 2 replies
HelloUsernametoday at 9:45 AM

I would've liked to see in conclusion a recommended starter team per generation! Very nice article!

show 1 reply
yjftsjthsd-htoday at 8:38 AM

Small typo(?):

> Mewtwo (#151)

Should be 150

show 1 reply
unpopularopptoday at 9:33 AM

Now all we need is a quick vibe coded web GUI front end