tournament - creation of playing schedules for tournaments


This program creates playing schedules for tournaments with varying mixed teams and fixtures determined at random. Contrary to most other types of tournament, in this particular type of tournament considered here the teams are not fixed, but change from match to match (sometimes called "round-robin", "Bändchen-" or "Schleifchenturnier").


Below is an example for a tournament with 10 rounds on 3 courts (i.e., 3 matches per round), 10 male and 10 female players, depicted by the letters A-J and the numbers 1-10, respectively.

            court 1     court 2     court 3     

round 1    E3  : I9    D6  : C5    G1  : H4    
round 2    J2  : D3    H9  : I8    F10 : B7    
round 3    F4  : C2    G5  : A10   J1  : E6    
round 4    B4  : H6    I7  : A1    G3  : D8    
round 5    J4  : I10   C3  : E7    A5  : B9    
round 6    E5  : H2    G10 : C6    F8  : D1    
round 7    A9  : F1    G8  : J7    D2  : B6    
round 8    J9  : H7    C10 : A3    B5  : I4    
round 9    C7  : I2    H5  : F3    A6  : E8    
round 10   G4  : F9    D10 : E1    J8  : B2

All participants have the same number of matches. There is no repetition of teams or opponents. Players A, 4, and 7 have three subsequent matches; all other players have at most two subsequent matches. Everyone has at most two subsequent breaks.


Given are the number of male players, the number of female players, the number of available courts (i.e., the number of matches that can take place at the same time), and the desired number of rounds.

The algorithm creates a playing schedule considering the following objectives, in decreasing order of importance:

  • avoid that a particular player takes part in multiple matches of the same round (otherwise such matches can not take place at the same time)
  • avoid repetition of teams
  • avoid repetition of match opponents
  • minimize the maximum number of subsequent matches (without a break in between, per player)
  • minimize the maximum number of subsequent breaks (per player)

The importance of these objectives can be controlled via configurable weights. Note that, depending on the problem instance, it is not always possible to satisfy all requirements/objectives at the same time.