How do we pair players at tournaments?
High Level Explanation
Let’s Play Scrabble tournaments generally adhere to the following pairing methods, for 14 game and higher events.
Beginning of tournament: If it makes sense to have a complete round robin to start the tournament, we will likely do that first. Otherwise, for rounds 1-3 we will pair a four person group round robin.
The remainder of the first half of the tournament: Swiss pairings with 0 repeats.
The second half of the tournament: COP (Castellano-O’Connor pairing). COP makes use of an algorithm called "minimum weight matching" which assigns a weight to all possible matchups and selects final pairings which minimize the sum of the weights of every matchup in those pairings. Higher weights are assigned to undesirable matchups, such as repeats, playing someone who is far away in standings, etc. (See below for much more detail).
Late in the tournament, two types of pairings will occur:
players in contention will have an equitable chance of getting a place prize
players not in contention for a place prize will be paired with a priority of avoiding repeats
Detailed Explanation
Rounds 1-3: An init fontes group round Robin. Groups of 4 will play a round Robin of 3 games. One group of 6 may be possible and may play shirts vs skins.
The remainder of the first half of the tournament: Swiss pairings with no repeats.
The second half of the tournament: COP (Castellano-O’Connor Pairing) COP makes use of an algorithm called minimum weight matching which assigns a weight to all of your possible matchups based on how "bad" it is. It then finds the pairings that minimize the sum of "badness." Things considered bad by COP are as follows:
Repeats
Playing someone n from you in the standings is given a weight proportional to n^3 (if either player can cash), otherwise it is weighted as n.
First place playing second place or anyone above the lowest person who can catch them is punished inversely to the above point
If possible, playing someone who cannot catch you is given a weight so high that it will never happen
If someone needs to play first place to control their destiny, and they have at least a X% chance of finishing first, they will automatically be paired with first: other possible pairings will be disallowed. Here, X is the hopefulness value for that round as specified by the hopefulness config option. Hopefulness values are listed starting from the last round going backwards, with the last value in the hopefulness array being used for the remainder of the previous rounds.
In the last four rounds, first place will automatically play the lowest person in the standings that has at least a X% chance (X% as defined above) of winning, unless this significantly affects someone else’s chance of controlling their destiny, in which case they will play the lowest person in the standings that does not interfere with destiny control
If at any point first place might play someone low in the standings but it significantly affects a higher ranked player’s ability to control their destiny, that pairing will be weighted high, so it does not happen
In the last round king of the hill will be used for money contenders and repeats will be minimized for everybody else
To calculate % chance of winning the tournament, simulations are run using "factor n pairings" where every round you use factored pairings with a factor equaling the number of rounds left. Simulations always use the factor n pairings and play out the rest of the tournament from the current standings. The final placements of each player is recorded. From those results we determine player A has an X% chance of placing in nth. To play out the tournament, we give each game a random score. Those scores are not based on the ratings or performance of the players in that pairing.
To calculate destiny control loss, players are paired repeatedly with the player in the lead for some simulations, and also paired using factor n pairings for the same number of rounds. The lowest player who always wins when paired with the person in the lead is the person whose destiny control is on the line. If they win significantly less often as determined by a predetermined threshold, they are automatically paired with first as long as they have a X% chance of winning the tournament.
Gibsonizations will be done based on predetermined spreads
All destiny control loss thresholds, minimum win % chance to be considered a contender, and gibsonization thresholds are published prior to each tournament
Late in the tournament, players not in contention for place prizes will be paired with a priority of avoiding repeats. Due to this, Gibsons may not necessarily play the first player not in contention for a place prize.
Tournament Software
We use tsh to run our events and provide online pairings and standings. Thanks to John Chew for his ongoing support.
The COP (Castellano-O'Connor Pairing) code is located here, if you'd like to review it. We'd like to thank Josh Castellano and Matthew O'Connor for writing this pairing methodology. They put a lot of work into it!
If you have any feedback, please email us: info@letsplayscrabble.com
Our standard tsh config for COP is
config simulations = 5000
config always_wins_simulations = 5000
config gibson_spread = [250, 200]
config control_loss_thresholds = [0.25]
config hopefulness = [0, 0.10, 0.05, 0.02, 0.01]
config control_loss_activation_round =n (where n is the round where you pair round by round)
config cop_threads = 2