TournamentSchedulingAlgorithm: Difference between revisions

From USYVL Development Wiki
Jump to navigation Jump to search
No edit summary
 
m (1 revision imported: Hopefully full import)
 
(No difference)

Latest revision as of 00:25, 21 June 2023

Introduction

This is an interesting scheduling problem that I would like to find a solution for. In general its a problem faced by youth athletics as many such programs do this in a similar fashion. In particular I am trying to solve this for a non-profit United States Youth Volleyball League (USYVL) www.usyvl.org .

Related Pages

I describe one possible solution here that I thought of on 2012-05-05 Static-Hashed-Tournament Scheduling Algorithm

Description of Problem

Background

The league operates sites in many cities across the United States. Each site can have up to as many as 200 participants making up 20+ teams spread across 3 or 4 age divisions. As part of the season schedule, tournaments are organized between 2 or more sites that are within an hours drive of each other. Typically 2 to 4 sites participate in these tournaments, although it could be more. Occasionally, larger, special tournaments are organized where an elite athlete will visit, talk to the kids, do a demonstration and be available for autographs. The goal of these tournaments is to provide the kids the opportunity to play against a team from another site that they would not normally have the opportunity to play.

Goal

So the overriding goal of the tournament layout is to optimize the pool matchups so that each team gets to play as many teams from other sites.

Glossary of Terms

  • site - a league program usually based in a particular city - will be comprised of 1 or more teams
  • team - for volleyball, usually 4 - 8 kids. Four players are on the field during a match, rotating extra players throughout the game.
  • match - game between two teams
  • court - the court used to play a match
  • pool - a collection of teams that matches will be created from.

Tournament Organization/Format

  • The different age divisions are divided up into "pools". In the past pools have been limited to 3-7 teams. If an algorithm can be developed, the pools could be made arbitrarily larger, allowing more site mixing.
  • typically
  • two and only two teams play on a court at a given time.

Variables

  • The number of teams in a tournament pool (num_teams)
  • The number of courts available for the pool. This is no more than num_teams/2 (num_cts)
  • The number of rounds (time slots) that will be played (num_rnds)

Issues

"Collisions"

This is a situation where both teams in the match are from the same site. We want to avoid this situation, but, because site size varies, its not always possible. In a given pool if the number of teams from one site is more than the number of teams from all other sites, it may be required.

Duplications

This is where a match between two teams in a match that have previously played each other, play a second match. This may be done as an alternative to a "Collision" (as described above)

Current Solution

My current solution involves the following steps

  • Check the team counts to see if its even possible to come up with a complete solution avoiding collisions and duplications
  • Create an array of all possible matches between teams from different teams in the pool.

Input Format

Output Format