Project: Ultimate Team Formation
One of the most difficult pieces of league organization is team formation. Team formation brings together a lot of different factors including groups, skill balance, and attendance among other things.
The primary goal when building the team generation piece of the Ann Arbor Ultimate league application was to make this an easy process (select captains, choose number of teams, click “Go!”). Other goals of the league and the team generation feature are:
- We want to allow players to sign up by themselves or in a small group. We strong believe that reducing the barrier for entry (vs. similar clique/bring-your-own-team leagues) is key in introducing the sport to more players.
- Each team should have the same number of women on it (+/- 1, based on the number of registrations).
- Each team should be roughly equivalent in number and skill (i.e. playing time should be equal and any team should be able to beat any other team).
- By using an open-source algorithm to generate teams (generate, not form), we are removing the human element and giving league organizers a bit of a scape-goat. Bad team? Really good team? At least they can’t fully blame the organizers. It’s work in progress. :)
These goals were largely achieved, but it has gone under a number of revisions. For instance, we’ve reversed the distribution placing lower ranked players first. We placed a higher importance on splitting up new players than splitting up veterans. This was just one change, but seems to give us slightly better results.
How does it work?
Each player is basically defined by three characteristics; their gender, their composite rating, and their attendance. The composite rating is determined by providing a weight for each of the skill answers provided. Each player is then placed into groups, which are ordered by size and then combined skill.
Teams are generated by first placing captains. After that, all groups with a woman are placed according to the number of women and skill. Finally, men are placed based on group size and skill level.
After a few seconds, you’ve got your teams. The output should have an even number of women, an even number of total players, and skill levels and attendance that are pretty close.