Hi
I am currently programming a small web application to use in my spare time for planning matches for a foosball / table soccer tournament, but is currently pretty stuck in deciding/programming the main algorithm to use after having used 10-15 hours trying different approaches.
I'm therefore very glad to have found this page/community and hope that you might be able to help me with some sparring about the challenges described below (I have used a couple of hours reading in the forums and on
https://www.devenezia.com/downloads/round-robin/index.html and related pages, but haven't found exactly what I'm looking for so far).
The requirements for the tournament are as follows:
- The tournament is played on either 1 or 2 foosball tables (Meaning that each round will consist of either 1 or 2 simultaneously played matches)
- N players will participate in the tournament (if 1 table is used at least 4 players will participate, while at least 8 players will participate if 2 tables are used. However, the numbers 4/8 are just the minimum numbers, but in real-life e.g. 4-11 players could be part of the "1 table" variant, while e.g. 8-19 players could be relevant for the "2 table" variant). This means that I can't enforce that a multipla of 4 or 8 players participates, but my algorithm should handle all numbers of players from 4 and up to about 20 on both 1 and 2 tables)
- During the tournament each player will a number of matches, which will be between 1 to "N - 1", each with a different partner as a team against two other players in another team. The same two players can only be on the same team once during the tournament, but it is NOT important how many times a player meet a specific other player as an opponent on the other team, but it will of course be great to have these "evened out" as much as possible).
- All players will play the same number of matches (The number of matches that each players gets to play depends on how much time there is available for the tournament).
- If the number of players and number of played matches per player means that the last matches e.g. "lacks" opponents, these matches should just be equipped with dummy players (A simple, but unrealistic example: If we have a tournament with 5 players on 1 table, where each player should play just 1 match, the rounds/matches could be as following: Round 1/Match 1: A+B vs. C+D. Round 2/Match 2: E + dummy vs. dummy + dummy). In reality the "dummy players" would be selected randomly from all other players, but the winning/losing in this match would only count for the real player, in this scenario player E)
- A player can not participate in a given match in more than one position (meaning that there is always four different players in a match) and can not participate in two matches in the same round (only relevant if we have two tables in the tournament)
- The players that to not participate in the 1 or 2 matches pr. round will just be spectators/preparing for the next round/match where they will participate.
- Wish: As far as possible the matches for a given player should be spread well about between all rounds. So if e.g. the tournament consist of 9 players playing on 1 table as "all-against-all" (8 matches for each), player 1 should not play all of his/hers matches in round 1-8, while e.g. player 9 played the majority of his/hers matches in round 9-18. It would be much desired that player 1 participated in e.g. round/match 1, 3, 6, 7, 10, 11, 14 and 16, meaning that he/she had a maximum of 1/2 mathces/rounds between the matches/rounds he/she participates in.
And now to my questions:
1) Is it possible to make a tournament like the above with all rounds except possible the last with "full tables" in all matches/rounds?
2) Can you point at a algorithm or similar that I might be able to use? (I think my scenario looks much like the whist algorithm in some ways, but it seems to mostly be aimed at situations where the number of players can be divided by 4?)
But in general; al input or ideas related to the challenges above will be very well received :-)
Thanks in advance
Nikolaj