RoCoCo

Done by: Davin Choo and Lee Yik Jiun

Mentored by: Dr. Martin Henz & Srikumar Subramanian

What is it?

About

Problem

Related Works

Definitions

Round-robin with Courts and Constraints (RoCoCo) is a product of a project undertaken by 2 National University of Singapore (NUS) students, Davin and Yik Jiun, for their NUS module "CS1010R - Javascript", under the guidance of Dr. Martin Henz.


As part of their project, they are to make use of a constraint library built by Srikumar (insert link to fd.js/references below) to create a simple to use, yet powerful dense single round robin tournament scheduler.

Round-robin is a common sports tournament format.


To plan for tournaments, organisers need to come up with a schedule to cater to teams and participating venues, especially in the case where there are special requests.


This application eases the process of creating round-robin tournament schedules, which can become very burdensome as it scales to more teams, venues and constraints.

A quick search online for "Sports Tournament Scheduling" gives us a top search result Free Round Robin Tournament Generator Tool. As you can see, the user interface is rather clunky and not intuitive.


Using Javascript and the fd.js library, we have created a quick, interactive and intuitively simple sports tournament scheduler. We also allow the user to define further constraints.

Dense
The schedule is organized in rounds, where in each round a team plays at most once. "Dense" then means that the number of rounds is minimal.

For an even number of teams N, the number of rounds will be N-1, which means that each team plays exactly once in each round.
For an odd number of teams N, the number of rounds will be N; each team had one round in which it does not play.


Single Round Robin
Every team must play against every other team exactly once by the end of the tournament.


Venues
In each round, each venue can only host 2 teams or no teams (i.e. unused).

How to use?
Layout



Making sense of Solution Table

As we can see, to complete a single round robin tournament with 4 teams, we need 3 rounds.
Let's focus on the first row (Team 1).

As we can see:
In Round 1, Team 1 plays Team 2 at Venue 2.
In Round 2, Team 1 plays Team 3 at Venue 2.
In Round 3, Team 1 plays Team 4 at Venue 2.

The other rows are to be interpreted in similar fashion.

Setting up
  • Click "Teams"(Insert pic) to add teams
  • Click "Venues"(Insert pic) to add venues
  • Rename team and venue names as necessary
Setting constraints
  • Click on the team pairings
  • The selected pairings is now highlighted
  • The Settings Panel is now coloured
    • Grey: Current team
    • Green: Possible match-up/venue at selected round
    • Red: Disallowed opponent team/venue at selected round
  • Click on the Teams/Venues to toggle between allowing/disallowing of opponent teams/venues for that given round
  • A bold display on the solution table represents the only allowed team/venue for that round
Generating solutions
  • The first possible solution is already generated instantly
  • Press "play"(Insert pic) for more solutions
  • Press "pause"(Insert pic) to stop solution generation
Demo

If the video doesn't load, use the Google Chrome web browser.

Frequently Asked Questions (FAQ)

Q: How do I reset the scheduler?
Just press F5 or refresh your browser ;)

Q: Can I export the solution table?
Yes! Just select it with your mouse and copy-paste it!

Q: What if I am holding the tournament at only 1 location with 3 courts?
Think of the "Venues" as "Courts" and name them as "Court 1", "Court 2" and "Court 3". Everything will work out :)

Q: What if I want breaks in between matches?
The "Rounds" are just to indicate the time frames for the matches. You can always hold them on separate days etc.

References
Our code
Kumar's fd.js library
Wikipedia Page on Round-robin tournament



Creative Commons License
RoCoCo by Choo XianJun, Davin & Lee Yik Jiun is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.