Free, open source AI system to automatically create tournament divisions and brackets

(Aurora, CO) – The Korean Academy of Taekwondo has come up with a machine learning model and associated spreadsheet that automatically groups competitors into divisions and prints brackets.

“Life isn’t fair”, so martial arts students should train to defeat opponents who are bigger and stronger. However, sports should be fair, so most martial arts tournaments are organized into divisions of similar athletes.

Large and official tournaments such as the Olympics, national championships, etc set the divisions ahead of time, and athletes will generally cut weight or have to qualify through previous victories, point rankings, etc.

Local tournaments can use those “regular” divisions, but this often results in a degraded customer experience (for instance, cutting to a lower weight division but no one is there so divisions are combined anyway, 9-10 year olds being grouped together even though their weights are far apart, when the 10 year old could have had a much better division with the 11 year olds, many demo matches or athletes without matches, etc).

The video shows the system creating divisions and brackets for a 164 person sparring event, all in under a minute! You would usually need to do some manual adjustment, but it’s still a huge improvement over previous ways of doing it. 

This project uses the K means nearest neighbor in Google Colab to cluster athletes into divisions. The excel sheet also includes related functionality to create division names, and division score sheets (ie, for forms or weapons) as well as single or double elimination brackets.

When run on data from several previous tournaments, about 90% of the resultant divisions are good, and the other 10% should be adjusted manually before printing brackets. Manual adjustment will likely be much faster than parameter tweaking.

The system is open source, and anyone around the world is allowed to use it for free. You can see the full instructions and download the tool on the official github repository.

Age and weight are first normalized on a log scale, because they become less important as the value increases. For instance, it’s no problem for a 45 and 55 year old to face each other, but you would never face a 14 year old vs a 4 year old. The Log Base parameter determines the strength of this effect. For instance, if this number is high the algorithm will sooner put a 100lb person vs a 200 lb person than put a 45 lb person vs a 46 lb person.

There are many parameters that users can tweak to get the best fit for your individual data, or you can use the default parameters built in.

This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply