Jeff Rollason's Computer Go rankings.

In 1995 Jeff Rollason, a leading Computer-Shogi programmer, wrote a general purpose ranking program. I decided to test it out with the computer go results. (His algorithm is described at the bottom of this page).

I have entered every result I can find since the start of 1999 including all games from:

21st Century Cup 2001
CGF special meeting 2001
Us Go Congress 2000
FJK 2000
MSO 2000
Ing 2000
Ing 1999
FOST 1999
CGF 1999

I have added games from The Guiyang Go Festival 2001 between Wulu Handtalk and Go4++ - I don't have results from any other games in this contest.

I have added the games in the second stage of Garosu.com 2001 - I don't have the full results from the first round.

The program produces the following output....

1999-2001 combined


     Player        Rating    Points


  1. Go4++           3566  (   46.0 pts) *************************************
  2. Handtalk        2891  (   37.0 pts) *************************
  3. Haruka          2688  (   37.0 pts) *********************
  4. Wulu            2435  (   30.0 pts) *****************
  5. KCC             2403  (   25.0 pts) ****************
  6. Many Faces      2364  (   32.0 pts) ****************
  7. FunGo           1989  (   22.0 pts) *********
  8. Go Intellect    1757  (   19.0 pts) *****
  9. Martha          1685  (    2.0 pts) ****
 10. Gnugo           1678  (    6.0 pts) ****
 11. Wakaba          1668  (   10.0 pts) ***
 12. Gomaster        1668  (   13.0 pts) ***
 13. Jimmy           1641  (    9.0 pts) ***
 14. Aya             1618  (   23.0 pts) ***
 15. Goro            1602  (   15.0 pts) **
 16. Smartgo         1600  (    5.0 pts) **
 17. Image           1584  (    4.0 pts) **
 18. Kiseki          1563  (    4.0 pts) **
 19. Carens_whisp    1558  (    4.0 pts) **
 20. Katsunari       1558  (   15.0 pts) **
 21. Gostar          1540  (   12.0 pts) *
 22. Takuchan        1536  (    4.0 pts) *
 23. Topgoer         1533  (    3.0 pts) *
 24. Explorer        1528  (    7.0 pts) *
 25. Igo1999         1526  (    3.0 pts) *
 26. Biwako          1519  (    6.0 pts) *
 27. Mutsuki         1519  (    4.0 pts) *
 28. Ujiie           1518  (    3.0 pts) *
 29. Golois          1512  (    8.0 pts) *
 30. Indigo          1511  (    7.0 pts) *
 31. Masayan         1509  (    2.0 pts) *
 32. Harze           1509  (    2.0 pts) *
 33. Gokutsubushi    1506  (    2.0 pts) *
 34. Don             1506  (    1.0 pts) *
 35. Andoukun        1505  (    2.0 pts) *
 36. Lanco           1505  (    2.0 pts) *
 37. Tokyo99         1502  (    1.0 pts) *
 38. Godipper        1501  (    1.0 pts) *
 39. GMS             1500  (    1.0 pts) *
 40. Ocean           1500  (    1.0 pts) *
 41. Plodder         1500  (    0.0 pts) *
 42. Poka            1500  (    0.0 pts) *
 43. Polarstar       1500  (    0.0 pts) *
 44. Northernstar    1500  (    0.0 pts) *
I then split up all the results into separate years to get the following results:

2001

     Player        Rating    Points

  1. Go4++           2987  (   11.0 pts) ************************************
  2. Handtalk        2693  (    7.0 pts) *****************************
  3. Haruka          2475  (   14.0 pts) ************************
  4. Wulu            2206  (    9.0 pts) ******************
  5. Many Faces      2187  (   10.0 pts) *****************
  6. Smartgo         1669  (    4.0 pts) *****
  7. Goro            1669  (    3.0 pts) *****
  8. Katsunari       1633  (    3.0 pts) ****
  9. Gnugo           1614  (    6.0 pts) ***
 10. Gostar          1604  (    4.0 pts) ***
 11. Go Intellect    1578  (    3.0 pts) **
 12. Fungo           1504  (    2.0 pts) *
 13. Golois          1502  (    2.0 pts) *
 14. Image           1502  (    1.0 pts) *
 15. Explorer        1501  (    1.0 pts) *
 16. Gms             1501  (    1.0 pts) *
 17. Aya             1500  (    1.0 pts) *
 18. Plodder         1500  (    0.0 pts) *
 19. Northernstar    1500  (    0.0 pts) *

2000


     Player        Rating    Points

  1. Wulu            3484  (    6.0 pts) *****************************************
  2. Handtalk        3131  (   14.0 pts) *********************************
  3. Go4++           2864  (   14.0 pts) ****************************
  4. Haruka          2497  (   11.0 pts) *********************
  5. Go Intellect    2368  (    5.0 pts) ******************
  6. Many Faces      2040  (    6.0 pts) ***********
  7. KCC             1990  (    8.0 pts) **********
  8. Fungo           1976  (    4.0 pts) **********
  9. Goro            1666  (    4.0 pts) ****
 10. Aya             1635  (   13.0 pts) ***
 11. Martha          1611  (    2.0 pts) ***
 12. Image           1588  (    3.0 pts) **
 13. Katsunari       1536  (    5.0 pts) *
 14. Topgoer         1526  (    3.0 pts) *
 15. Gostar          1525  (    6.0 pts) *
 16. Explorer        1519  (    1.0 pts) *
 17. Indigo          1510  (    3.0 pts) *
 18. Smartgo         1505  (    1.0 pts) *
 19. Godipper        1501  (    1.0 pts) *
 20. Ocean           1500  (    0.0 pts) *
 21. Golois          1500  (    0.0 pts) *
 22. Poka            1500  (    0.0 pts) *

1999


     Player        Rating    Points

  1. Go4++           4729  (   21.0 pts) ************************************
  2. Haruka          2953  (   12.0 pts) *****************
  3. KCC             2937  (   17.0 pts) *****************
  4. Many Faces      2559  (   16.0 pts) ************
  5. Handtalk        2531  (   16.0 pts) ************
  6. Fungo           2371  (   16.0 pts) **********
  7. Wulu            2226  (   15.0 pts) *********
  8. Go Intellect    1682  (   11.0 pts) ***
  9. Aya             1678  (    9.0 pts) **
 10. Wakaba          1664  (   10.0 pts) **
 11. Gomaster        1653  (   13.0 pts) **
 12. Jimmy           1634  (    9.0 pts) **
 13. Explorer        1593  (    5.0 pts) **
 14. Carens_whisp    1580  (    4.0 pts) *
 15. Kiseki          1549  (    4.0 pts) *
 16. Goro            1547  (    8.0 pts) *
 17. Takuchan        1534  (    4.0 pts) *
 18. Golois          1533  (    6.0 pts) *
 19. Katsunari       1529  (    7.0 pts) *
 20. Igo1999         1523  (    3.0 pts) *
 21. Biwako          1518  (    6.0 pts) *
 22. Ujiie           1517  (    3.0 pts) *
 23. Mutsuki         1516  (    4.0 pts) *
 24. Gostar          1511  (    2.0 pts) *
 25. Masayan         1509  (    2.0 pts) *
 26. Harukaze        1509  (    2.0 pts) *
 27. Gokutsubushi    1506  (    2.0 pts) *
 28. Lanco           1505  (    2.0 pts) *
 29. Don             1505  (    1.0 pts) *
 30. Indigo          1505  (    4.0 pts) *
 31. Andoukun        1505  (    2.0 pts) *
 32. Tokyo99         1502  (    1.0 pts) *
 33. Ocean           1501  (    1.0 pts) *
 34. Polarstar       1500  (    0.0 pts) *


Jeff's ratings algorithm:

Jeff says: "The rating system used here operates by assigning an initial rating and repeatedly sharing out ratings points depending on who wins and loses each match. Thus the total number of ratings points available stays approximately constant, and the system simply calculates a rating from the current rating of beaten programs. There is no credit assigned for losing to a program. The algorithm repeats this process until all ratings stabilise. This system is very sensitive to linking ratings, so that if A beats B and B beats C, then A may increase his rating if C then beats someone else. The system is very dynamic. It also does not take the order of match results into account. The rating is offset so that ratings start at 1500, but this offset is not used in calculations."

Pseudo code for the algorithm


    for each player
    {
        InitRating[player] = 2000
    }

    // loop until rating stabilises

    do
    {
        finished = TRUE

        for each player
        {
            SumRating[player] = 0
        }

        for each match
        {
            // "resultx" is either 0 or 1

            SumRating[player1] += result1 * ((player1rating-1500) + (player2rating-1500)) 
            SumRating[player2] += result2 * ((player1rating-1500) + (player2rating-1500)) 
        }

        for each player
        {
            PrevRating[player] = InitRating[player]

            InitRating[player] = (SumRating[player]/NumMatches[player]) + 1500

            if (abs(InitRating[player]-PrevRating[player]) > tinythresold)
            {
                finished = FALSE // not stable yet
            }
        }
    }
    while (finished == FALSE)

Back to Mick's Computer Go Page.