Systems Mac-mahon system Categories Inner group pairing Placement Software Gotha To know more
La page de Luc Vannier

 

Gotha is a go tournament management program : Registration, pairing, results, ...
Written by Luc Vannier, it is also the fruit of ideas coming from many players and tournament organizers.

Gotha main features

  • Manages MacMahon, Swiss and Roundrobin systems. The Tournament Organizer can choose predefined standard systems. He can also customize his tournament by setting by himself the pairing and placement parameters.
  • Up to 1000 players and 10 rounds.
  • EGF and FFG databases are integrated. Registering is thus faster and more reliable.
  • Automatic, Semi-automatic or Manual Pairing.
  • Produces results in several formats, including formats for EGF and FFG rating list, and a directly publishable file in HTML format.
Download Gotha

Gotha main internal features

  • Gotha has been designed on a totally transparent basis.
    You can get the sources by simple request (GPL Licence).
  • The pairing algorithm is based on an evaluation function and a pairing algorithm
    • The evaluation function is, for each candidate pair, the algebric sum of a list of criteria. The weight of each criterion can be consulted and modified by the tournament organizer.
    • The pairing algorithm is a maximum weight matching algorithm. As a part of Leda library, it has been designed by the Max Planck-Institut für Informatik. It is one of the best implementations of Edmonds algorithm.

Gotha evaluation function

For each candidate pair of players, Gotha computes an evaluation function which is the sum of elementary functions, each of these elementary functions being based on a specific criterion.
The default values given below are the default values for Mac-Mahon system.

Avoid pairing same pair (Basic criterion)

If this pair of candidate players has been paired in a previous round, the function is set to 0.
Otherwise, it is set to the value set by the organizer (by default : 1 000 000).

Random (Basic criterion)

The function is set to a random number between 0 and the value set by the organizer (by default, 0, which means that, by default, the criterion is not applied).
Two sorts of random numbers can be generated :
- A deterministic number, based on internal player numbers.
- A non-deterministic number, based on internal player numbers, combined with the internal value of the computer clock.

Balance Black and White (Basic criterion)

If, in the previous rounds and in no-handicap games, one player has got White in more games than Black and the other player has got Black in more games than White, then the function is set to the value set by the organizer (by default : 100).
Otherwise, it is set to 0.

Minimize MMS difference (Mac-Mahon criterion)

If both players have the same Mac-Mahon Score, the function is set to the value set by the organizer (by default 50 000).
If the difference of MMS scores is 20 or more, the function is set to 0. Between these two extreme values (from 0.5 to 19.5) the function is set to (20 - MMS Difference) / 20 * Criterion weight.

Rather nX1 than 1Xn (Mac-Mahon criterion)

The purpose of this criterion is to prefer 2 games with 1 point of MMS difference rather than 1 game with 2 points of MMS difference.
DifCW being the value set by the organizer for this criterion (by default : 50% of the Minimize MMS difference),
DifMMS being the actual MMS difference between both players (limited to 20),
the fuction is set to : DifCW * DifMMS * (20-DifMMS) / 400 .

Seeding (Mac-Mahon criterion)

This criterion is applied only between players with the same MMS. Between players with different MMS, the function is set to 0.
According to the placement inside the Mac-Mahon group, each player is given a number between 0 (better placement) and n-1 (worse placement) , n being the size of the Mac-Mahon group.
Then one among the three following systems is applied :

  • Split and Random : The goal is to pair players randomly, one coming from the upper-half of the group, the other one from the lower-half of the group.
  • Split and Fold : The goal is to pair player 0 with player n-1, player 1 with player n-2 etc.
  • Split and Slip : The goal is to pair player 0 with player n/2, player 1 with player n/2 +1 etc.

p1 and p2 being the placement of both players (between 0 and n-1),
cw being the weight of the criterion (by default 100),

  • Split and Random : The function is set to a random number between 0 and 0.1 * cw if both players are in the same half of the group.
    The function is set to a random number between 0.9 * cw and cw if both players are not in the same half of the group.
  • Split and Fold : The function is set to cw * ( 1 - ((p1+p2-n+1)/(n-1))^2 ).
  • Split and Slip : The function is set to cw * ( 1 - ((2*|p1-p2|-n)/(n-1))^2 ).
Players from different groups

When pairing players from different groups, an other criterion (a sub-criterion, in fact) is to prefer to pair a well placed player of the upper group with a bad placed player of the lower group. In order to achieve this goal,
n1 being the number of players in the upper group and p1 the placement of the player in this group,
n2 being the number of players in the lower group and p2 the placement of the player in this group,
cw being the weight of the criterion (this is the above-mentionned criterion, seeding, by default 100),
the function related to this sub-criterion is set to cw * (p2 + 1) * (n1 - p1) / n1 / n2.

Correct draw-ups/draw-downs(Mac-Mahon criterion)

Being drawn-down can be considered as a potential advantage for Mac-Mahon score and a potential disadvantage for tie-breaks like SOS.
The function related to this criterion is set to 0 if the considered pair would have no effect on (or get worse) the drawn-up/drawn-down balance.
The function is set to the value set by the organizer (by default 100) if the considered pair would contribute to get the drawn-up/drawn-down balance better.
When applied, the function is multiplied by a factor (between 0.5 and 1). This factor tends to prefer pairing between a well placed player of the upper group with a badly placed player of the lower group.

Minimize handicaps (secondary criterion)

The function is set to cw * (40 - hd) / 40,
cw being the weight of the criterion, as set by the tournament organizer (by default, 200 000),
hd being the handicap of the considered pair before ceiling(limited to 40).

Rather nX1 than 1Xn (secondary criterion)

The purpose of this criterion is to prefer 2 games with 1 handicap stone rather than 1 game with 2 handicap stones,
cw being the value set by the organizer for this criterion (by default : 50% of the Minimize handicaps criterion),
the function is set to : cw * hd * (40-hd) / 1600.

Avoid same-country pairings (secondary criterion)

The function is set to 0 if both players come from the same country.
Otherwise, it is set to the value set by the organizer (by default, 2 000).

Avoid same-club pairings (secondary criterion)

The function is set to 0 if both players come from the same club.
Otherwise, it is set to the value set by the organizer (by default, 20 000).

Applying secondary criteria

Secondary criteria are not applied for players above a certain ranking, as set by the organizer (by default, 4D) and, optionnaly (by default, secondary criteria applied), for players with a number of wins >= (number of rounds) /2.
When both players are concerned by secondary criteria, the function values are set as computed.
When both players are excluded from secondary criteria, the function values are set as to the maximum possible.
When one player is concerned and the other one is excluded, the function values are set to (computed value + maximum possible) /2.

Not yet fed up ?

Get Gotha sources and read CGothaDoc::GetValCouple function


Thanks to ...

Many people have given a direct or indirect contribution to Gotha. Some of them as consultants, some as bug busters.
Among them, Jean-François Bocquet, Frédéric Boutet, Claude Burvenich, Pierre Colmez, Guy Curtil, Jean-Loup Gailly, Christoph Gerlach, Bruno Lamberet, François Mizessyn, Alain Papazoglou, Wandrille Sacquépée, Emeric Salmon and Sylvain Soliman.
Thanks to them!