| |
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!
|