My ESMS program allows people to run fantasy football games. A team is a "roster" of players, each having some skills that affect how he plays on various positions. For each game, a "manager" submits a teamsheet - a list of players for the upcoming game, with the positions for each player and some orders about the game management (i.e. switch to defensive tactic if winning).

The ESMS package contains a teamsheet-creator program that creates simple teamsheets that can be a base for picking a team. With the recent improvements in ESMS and the many new features in version 2.7, this teamsheet-creator (TSC) is not good enough - the teamsheets it creates are very poor.

I've now started thinking about how to create a smart tsc that will create optimal teamsheets. I know the formulas ESMS uses to calculate team strengths, so it's basically a problem of non-linear optimization - finding the maximal value of the team strength function.

Initial calculations show that the amount of possibilities is vast. To pick a 10-man team (GKs are special and aren't counted) from a 30-man roster can be done in ~10^25 ways, a bit too many to dumbly brute force.

There are many heuristics I can use (use players with good tacking as defenders, etc.) but probably finding a global maximum here is too hard. It can be done with massive computing power, but this is not good enough for TSC - it shouldn't take more than a couple of seconds to run.