[computer-go] A new pairing system idea for CGOS
Matt Gokey
mgokey at charter.net
Fri Oct 6 22:13:13 PDT 2006
Don Dailey wrote:
> Paring in rounds is good for the first goal and is what I plan to do.
I know, I was just being complete in repeating this decision...
> Your basic idea is sound - but it's all in the formula for point 2. I
> would not base it on the rating, I would base it on the RANKING
Why the ranking over the rating? Ranking eliminates the real strength
differences. A cluster of 3 players near 1700 and then one at 1300
looks much different than rank 1, 2, 3, 4.
> Also, the formula MUST have a random component in it.
I think you may have misunderstood the concept. The choice in step 2 is
random and the rating is specifically used over the ranking to calculate
the distances and weights. Let me explain further.
OK here is the steps again:
>> 1. Pick a random player A from the remaining available players.
>> 2. Select a player B from the remaining available players using a
>> weighted random selection with the weight based on an inverse
>> distance formula between player A's rating and each remaining
>> player's rating.
>> 3. Repeat until all players are paired.
I was probably not clear enough, especially step 2.
In step 1 a random player is chosen because I thought this would help
reduce the potential issue expressed by others that the top down method
might create (favoring pairings between strong programs too heavily) and
because step 2 is going to choose an opponent randomly from _all_ the
remaining players, not evenly, but favoring players with closer ratings.
Players with _ratings_ closer to player A's rating will be weighted
more heavily. This is the idea of inverse distance weighting I
proposed. In this way any player can be selected but will still prefer
players with progressively closer ratings. Steps 1 and 2 are repeated
until all pairings are made. The weights used for the random opponent
selection are calculated for each iteration.
A simple linear inverse weighting could be something like this:
1. Calculate the distance between Player A's rating and each other
player X's rating (|A-X|).
2. Normalize each distance by subtracting the min distance. maximum
normalized distance = spread.
3. Calculate the weight for each player X with something like:
minWeight + (spread - normalized dist X)/(spread/(maxWeight-MinWeight))
The selection is made randomly from the weighted list.
The weight formula could be linear or stepped/tiered or non-linear,
etc.; there are lots of possibilities. Perhaps to get some of the
benefit of the top-down method, the step 1 player A selection could be a
weighted random selection also - just based on the rating (i.e. it would
tend to choose higher rated programs first but not necessarily).
Here's a simple example using the linear formula from above:
player rating
1 1100
2 1200
3 600
4 800
Pick random player from list
player 4, rating 800
Distance from player 4 for each other player
1 = 300, normalized = 100
2 = 400, normalized = 200
3 = 200, normalized = 0
Player weights with min weight = 1, max weight = 5
player 1 = 1 + (200 - 100)/(200/4) = 3
player 2 = 1 + (200 - 200)/(200/4) = 1
player 3 = 1 + (200 - 0)/(200/4) = 5
Thus the weighted list to choose player B from would be:
player 1 x 3, player 2 x 1, player 3 x 5 (1 1 1 2 3 3 3 3 3)
Selecting randomly from this weighted list will favor player 3, then 1,
and finally 2. But _any_ player can be selected.
Matt
More information about the computer-go
mailing list