PyCon UK 2023

Multi-Objective Linear Programming to find the Best Pokémon Team
09-23, 14:30–15:00 (Europe/London), Assembly Room

What is the best Pokémon team? Who should I pick? What attacks should they learn? Here, I use multi-objective linear programming, and a bit of simulation, to figure it out.


Here I give an example of using Python to solve a combinatorial problem from the mathematical field of Operational Research: How to find the best Pokémon team. Using a variety of Python libraries a mulit-objective linear programming problem is used to find the best combination of Pokémon, and their attacks. PuLP is used to formulate and solve the multi-objective linear programming problems, and a Pareto front is found by varying the importance of each objective. Then, a third objective, a Pokémon team's performance in a Monte Carlo simulation of Pokémon battles, is used to differentiate between Pareto optimal solutions and find the definitive best team of Pokémon. I relate how this fun problem is related to more serious scheduling and timetabling problems.


Is your proposal suitable for beginners? – yes

I am a Welsh Medium Lecturer at the School of Mathematics in Cardiff University. My research interests are in Operational Research, probabilistic modelling, and simulation.