I'm working on a League of Legends Build Optimizer. It uses a genetic algorithm along with maths descriptions of the champions, items and runes to automatically generate League of Legends builds from scratch. Currently, it supports all champions and finds builds for champions to be played in any lane. Since it's an math optimizer it reacts to updates int he game before the league of legends player base.
The site relies on multi-objective optimization where the entire population used in the genetic algorithm is the final result. It's using an improved version of NSGA-II for this task extended to support many objectives. For reference, don't attempt to use NSGA-III for this type of thing, it isn't very good.
Since running the genetic algorithm is slow, builds are partially pre-computed in advanced of patch releases. When the user puts in their own custom changes, the nearest build is looked up from a database and then a hillclimber is run on the nearest build to match the end user changes to the settings. This allows results in around 4 to 20 seconds rather than 1 to 2 hours. The red bar that appears is the hillclimber running.
For where the model comes from, community dragon provides some information but most of the information has to be handwritten since for League of Legends a lot of stuff (such as how much damage an ability does) is not available in computer readable form.