Pairwise Analysis of Chess Engine Move Selections

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

Michel
Posts: 2292
Joined: Mon Sep 29, 2008 1:50 am

Re: Pairwise Analysis of Chess Engine Move Selections

Post by Michel »

Thanks again! It seems GnuChess sits nicely on its own evolutionary branch,

BTW: My branch of GnuChess suports UCI so WB2UCI should normally not be necessary.
Adam Hair
Posts: 3226
Joined: Wed May 06, 2009 10:31 pm
Location: Fuquay-Varina, North Carolina

Re: Pairwise Analysis of Chess Engine Move Selections

Post by Adam Hair »

That is what I get for assuming instead of reading or typing uci at the prompt.:)
Adam Hair
Posts: 3226
Joined: Wed May 06, 2009 10:31 pm
Location: Fuquay-Varina, North Carolina

Re: Pairwise Analysis of Chess Engine Move Selections

Post by Adam Hair »

I have managed include more engines for comparison. Here is a quick analysis of 83 engines where no assumptions of relatedness are made.
This skews the data some, due to the fact we know some engines are related to Fruit. But, I thought it would be interesting to drop all assumptions and see what the data shows. More in-depth analysis and trees will be included in the future. And hopefully more engines.

Here are the 83 engines:

Code: Select all

1) Alaric 707 (time: 355 ms  scale: 1.0)
 2) Alfil 8.1.1 Optimized (time: 485 ms  scale: 1.0)
 3) Arasan 12.3 (time: 761 ms  scale: 1.0)
 4) Aristarch 4.50 (time: 686 ms  scale: 1.0)
 5) Baron 2.23 (time: 816 ms  scale: 1.0)
 6) Bison 9.11 (time: 288 ms  scale: 1.0)
 7) Bobcat 20110220 (time: 577 ms  scale: 1.0)
 8) Booot 5.1.0 (time: 113 ms  scale: 1.0)
 9) Bright 0.5c (time: 166 ms  scale: 1.0)
10) Cerebro 3.03d (time: 1236 ms  scale: 1.0)
11) ChessTiger 2007 (time: 288 ms  scale: 1.0)
12) Colossus 2008b (time: 408 ms  scale: 1.0)
13) Crafty 23.4 (time: 149 ms  scale: 1.0)
14) Critter 1.0 (time: 21 ms  scale: 1.0)
15) CuckooChess 1.10 (time: 1004 ms  scale: 1.0)
16) Cyrano 0.6b17 (time: 422 ms  scale: 1.0)
17) Daydreamer 1.75 (time: 343 ms  scale: 1.0)
18) Shredder 11 (time: 102 ms  scale: 1.0)
19) Delfi 5.4 (time: 320 ms  scale: 1.0)
20) Dirty24APR2011 (time: 597 ms  scale: 1.0)
21) Dragon 4.6 (time: 1940 ms  scale: 1.0)
22) Et Chess 130108 (time: 408 ms  scale: 1.0)
23) Frenzee Feb 08 (time: 299 ms  scale: 1.0)
24) Fruit 2.1 (time: 381 ms  scale: 1.0)
25) Gaia 3.5 (time: 1689 ms  scale: 1.0)
26) Gandalf 6.0 (time: 485 ms  scale: 1.0)
27) GarboChess 2.20 (time: 538 ms  scale: 1.0)
28) Gaviota 0.83 (time: 577 ms  scale: 1.0)
29) Glass 1.6 (time: 1420 ms  scale: 1.0)
30) Glaurung 1.2.1 (time: 381 ms  scale: 1.0)
31) GnuChess 5.07 1705b TCEC (time: 597 ms  scale: 1.0)
32) Greko 8.0 (time: 1874 ms  scale: 1.0)
33) Gull 1.2 (time: 59 ms  scale: 1.0)
34) Hamsters 0.7.1 (time: 618 ms  scale: 1.0)
35) Hannibal 1.0a (time: 89 ms  scale: 1.0)
36) Hermann 2.6 (time: 970 ms  scale: 1.0)
37) HIARCS 12 (time: 113 ms  scale: 1.0)
38) Houdini 1.5 (time: 10 ms  scale: 1.0)
39) Jonny 4.00 (time: 209 ms  scale: 1.0)
40) Junior 10.1 (time: 211 ms  scale: 1.0)
41) Komodo 1.3 (time: 39 ms  scale: 1.0)
42) Ktulu 8 (time: 234 ms  scale: 1.0)
43) LambChop 10.99 (time: 1749 ms  scale: 1.0)
44) List 512 (time: 577 ms  scale: 1.0)
45) Little Goliath Evolution (time: 1004 ms  scale: 1.0)
46) Loop 2007 (time: 166 ms  scale: 1.0)
47) Movei 00.8.438 (time: 453 ms  scale: 1.0)
48) N2 0.4 (time: 597 ms  scale: 1.0)
49) Naraku 1.31 (time: 381 ms  scale: 1.0)
50) Naum 2.0 (time: 279 ms  scale: 1.0)
51) Naum 4.2 (time: 40 ms  scale: 1.0)
52) Nejmet 3.07 (time: 1874 ms  scale: 1.0)
53) Onno 1.0.4 (time: 113 ms  scale: 1.0)
54) Pepito 1.59.2 (time: 1200 ms  scale: 1.0)
55) Petir_4.999999 (time: 686 ms  scale: 1.0)
56) Pharaon 3.5.1 (time: 577 ms  scale: 1.0)
57) Philou 3.5.1 (time: 874 ms  scale: 1.0)
58) Protector 1.4.0 (time: 77 ms  scale: 1.0)
59) Pseudo07c (time: 874 ms  scale: 1.0)
60) Pupsi2 v0.08 (time: 1004 ms  scale: 1.0)
61) RedQueen 0.98 (time: 577 ms  scale: 1.0)
62) RobboLito 0.085g3 (time: 19 ms  scale: 1.0)
63) Rotor 0.6 (time: 640 ms  scale: 1.0)
64) Ruffian 2.1.0 (time: 502 ms  scale: 1.0)
65) Rybka 4 (time: 18 ms  scale: 1.0)
66) Sjeng WC2008 (time: 109 ms  scale: 1.0)
67) SlowChess Blitz WV 2.1 (time: 502 ms  scale: 1.0)
68) SmarThink 1.20 (time: 209 ms  scale: 1.0)
69) SOS 5.1 (time: 640 ms  scale: 1.0)
70) Spark 1.0 (time: 61 ms  scale: 1.0)
71) Spike 1.4 (time: 65 ms  scale: 1.0)
72) Stockfish 2.1 (time: 18 ms  scale: 1.0)
73) Strelka 2.0 B (time: 288 ms  scale: 1.0)
74) Tao 5.6 (time: 1280 ms  scale: 1.0)
75) The King 3.50 (time: 355 ms  scale: 1.0)
76) Thinker 5.4d Inert (time: 80 ms  scale: 1.0)
77) Tornado 4.4 (time: 243 ms  scale: 1.0)
78) Twisted Logic 20100131x (time: 178 ms  scale: 1.0)
79) Ufim 8.02 (time: 844 ms  scale: 1.0)
80) Umko 0.9 (time: 178 ms  scale: 1.0)
81) WildCat 8 (time: 437 ms  scale: 1.0)
82) Yace 9987 (time: 1040 ms  scale: 1.0)
83) Zappa Mexico II (time: 102 ms  scale: 1.0)
This produces 3403 data points. The distribution of the data can be approximated by a normal distribution, but Student's T is a better fit, so I am using it instead. The Student's T curve that best fits the data has these parameters:

degrees of freedom : 3.904
location : 46.293
scale : 2.542

Image




Here is some of the data. The last column, "Percentage", gives the probability of a given data point occuring ( given the possible distribution of the data).

Code: Select all

		                                      % Matching Moves	t(alpha,d.f.)	Percentage
Fruit 2.1	           Loop 2007	              71.13	            19.31	     0.03036
Loop 2007	           Onno 1.0.4	              67.88	            16.78	     0.04609
Fruit 2.1	           Onno 1.0.4	              67.83	            16.74	     0.04641
Strelka 2.0 B	       Thinker 5.4d Inert	      62.07	            12.26	     0.11678
Houdini 1.5	           RobboLito 0.085g3	      61.87	            12.11	     0.12126
Naum 4.2	           Strelka 2.0 B	          61.37	            11.72	     0.13351
Hannibal 1.0a 	       Twisted Logic 20100131x	  60.74	            11.23	     0.15140
Philou 3.5.1	       Stockfish 2.1	          60.43	            10.99	     0.16138
Loop 2007	           Umko 0.9	                  60.33	            10.91	     0.16479
Alaric 707	           Fruit 2.1	              60.28	            10.87	     0.16653
Alaric 707	           Loop 2007	              59.88	            10.56	     0.18135
Colossus 2008b 	       Fruit 2.1	              59.69	            10.41	     0.18901
Fruit 2.1	           Umko 0.9	                  59.42	            10.20	     0.20064
Onno 1.0.4	           Umko 0.9	                  59.38	            10.17	     0.20244
Alfil 8.1.1 Optimized  Glaurung 1.2.1 	          59.07	             9.93	     0.21718
Critter 1.0 	       RobboLito 0.085g3	      59.04	             9.91	     0.21868
Alaric 707	           Onno 1.0.4	              58.49	             9.48	     0.24880
Naum 4.2	           Thinker 5.4d Inert	      58.40	             9.41	     0.25424
Colossus 2008b 	       Loop 2007	              58.23	             9.28	     0.26496
Fruit 2.1	           Strelka 2.0 B	          58.18	             9.24	     0.26822
Delfi 5.4	           Loop 2007	              57.65	             8.83	     0.30636
Loop 2007	           Naraku 1.31	              57.65	             8.83	     0.30636
Delfi 5.4	           Fruit 2.1	              57.50	             8.71	     0.31845
Critter 1.0 	       Houdini 1.5	              57.40	             8.63	     0.32685
Colossus 2008b 	       Onno 1.0.4	              57.37	             8.61	     0.32943
Loop 2007	           Strelka 2.0 B	          57.11	             8.41	     0.35296
Onno 1.0.4	           Strelka 2.0 B	          57.10	             8.40	     0.35391
Fruit 2.1	           Naraku 1.31	              57.00	             8.32	     0.36358
Alaric 707	           Rotor 0.6	              56.68	             8.07	     0.39699
Colossus 2008b 	       Naraku 1.31	              56.68	             8.07	     0.39699
GarboChess 2.20	       Strelka 2.0 B	          56.68	             8.07	     0.39699
Alaric 707	           Strelka 2.0 B	          56.65	             8.05	     0.40033
Naraku 1.31	           Onno 1.0.4	              56.57	             7.99	     0.40941
Delfi 5.4	           Onno 1.0.4	              56.48	             7.92	     0.41996
Fruit 2.1	           N2 0.4	                  56.05	             7.58	     0.47561
Hamsters 0.7.1	       Loop 2007	              56.02	             7.56	     0.47984
Fruit 2.1	           SmarThink 1.20	          55.89	             7.46	     0.49879
Loop 2007	           Rotor 0.6	              55.60	             7.23	     0.54476
Fruit 2.1	           Rotor 0.6	              55.49	             7.15	     0.56366
Fruit 2.1	           Hamsters 0.7.1	          55.38	             7.06	     0.58343
Loop 2007	           SmarThink 1.20	          55.33	             7.02	     0.59272
Naraku 1.31	           Umko 0.9	                  55.32	             7.02	     0.59460
Colossus 2008b 	       Umko 0.9	                  55.26	             6.97	     0.60605
Fruit 2.1	           Naum 4.2	                  55.22	             6.94	     0.61385
N2 0.4	               Onno 1.0.4	              55.01	             6.78	     0.65703
Hamsters 0.7.1	       Rotor 0.6	              54.98	             6.75	     0.66352
Loop 2007	           Naum 4.2	                  54.98	             6.75	     0.66352
RobboLito 0.085g3	   Rybka 4	                  54.98	             6.75	     0.66352
Loop 2007	           N2 0.4	                  54.96	             6.74	     0.66789
Sven
Posts: 4052
Joined: Thu May 15, 2008 9:57 pm
Location: Berlin, Germany
Full name: Sven Schüle

Re: Pairwise Analysis of Chess Engine Move Selections

Post by Sven »

Code: Select all

                                            % Matching Moves   t(alpha,d.f.)   Percentage
Fruit 2.1              Loop 2007                 71.13               19.31        0.03036
Loop 2007              Onno 1.0.4                67.88               16.78        0.04609
Fruit 2.1              Onno 1.0.4                67.83               16.74        0.04641
Strelka 2.0 B          Thinker 5.4d Inert        62.07               12.26        0.11678
Houdini 1.5            RobboLito 0.085g3         61.87               12.11        0.12126
Naum 4.2               Strelka 2.0 B             61.37               11.72        0.13351
Hannibal 1.0a          Twisted Logic 20100131x   60.74               11.23        0.15140
Philou 3.5.1           Stockfish 2.1             60.43               10.99        0.16138
Loop 2007              Umko 0.9                  60.33               10.91        0.16479
Alaric 707             Fruit 2.1                 60.28               10.87        0.16653
Alaric 707             Loop 2007                 59.88               10.56        0.18135
Colossus 2008b         Fruit 2.1                 59.69               10.41        0.18901
Fruit 2.1              Umko 0.9                  59.42               10.20        0.20064
Onno 1.0.4             Umko 0.9                  59.38               10.17        0.20244
Alfil 8.1.1 Optimized  Glaurung 1.2.1            59.07                9.93        0.21718
Critter 1.0            RobboLito 0.085g3         59.04                9.91        0.21868
Alaric 707             Onno 1.0.4                58.49                9.48        0.24880
Naum 4.2               Thinker 5.4d Inert        58.40                9.41        0.25424
Colossus 2008b         Loop 2007                 58.23                9.28        0.26496
Fruit 2.1              Strelka 2.0 B             58.18                9.24        0.26822
Delfi 5.4              Loop 2007                 57.65                8.83        0.30636
Loop 2007              Naraku 1.31               57.65                8.83        0.30636
Delfi 5.4              Fruit 2.1                 57.50                8.71        0.31845
Critter 1.0            Houdini 1.5               57.40                8.63        0.32685
Colossus 2008b         Onno 1.0.4                57.37                8.61        0.32943
Loop 2007              Strelka 2.0 B             57.11                8.41        0.35296
Onno 1.0.4             Strelka 2.0 B             57.10                8.40        0.35391
Fruit 2.1              Naraku 1.31               57.00                8.32        0.36358
Alaric 707             Rotor 0.6                 56.68                8.07        0.39699
Colossus 2008b         Naraku 1.31               56.68                8.07        0.39699
GarboChess 2.20        Strelka 2.0 B             56.68                8.07        0.39699
Alaric 707             Strelka 2.0 B             56.65                8.05        0.40033
Naraku 1.31            Onno 1.0.4                56.57                7.99        0.40941
Delfi 5.4              Onno 1.0.4                56.48                7.92        0.41996
Fruit 2.1              N2 0.4                    56.05                7.58        0.47561
Hamsters 0.7.1         Loop 2007                 56.02                7.56        0.47984
Fruit 2.1              SmarThink 1.20            55.89                7.46        0.49879
Loop 2007              Rotor 0.6                 55.60                7.23        0.54476
Fruit 2.1              Rotor 0.6                 55.49                7.15        0.56366
Fruit 2.1              Hamsters 0.7.1            55.38                7.06        0.58343
Loop 2007              SmarThink 1.20            55.33                7.02        0.59272
Naraku 1.31            Umko 0.9                  55.32                7.02        0.59460
Colossus 2008b         Umko 0.9                  55.26                6.97        0.60605
Fruit 2.1              Naum 4.2                  55.22                6.94        0.61385
N2 0.4                 Onno 1.0.4                55.01                6.78        0.65703
Hamsters 0.7.1         Rotor 0.6                 54.98                6.75        0.66352
Loop 2007              Naum 4.2                  54.98                6.75        0.66352
RobboLito 0.085g3      Rybka 4                   54.98                6.75        0.66352
Loop 2007              N2 0.4                    54.96                6.74        0.66789
Just for even more readability :-)
Sven
User avatar
Graham Banks
Posts: 44012
Joined: Sun Feb 26, 2006 10:52 am
Location: Auckland, NZ

Re: Pairwise Analysis of Chess Engine Move Selections

Post by Graham Banks »

Adam Hair wrote:I have managed include more engines for comparison. Here is a quick analysis of 83 engines where no assumptions of relatedness are made.
This skews the data some, due to the fact we know some engines are related to Fruit. But, I thought it would be interesting to drop all assumptions and see what the data shows. More in-depth analysis and trees will be included in the future. And hopefully more engines.
Any chance that you could post a list that includes all done to date?
gbanksnz at gmail.com
Adam Hair
Posts: 3226
Joined: Wed May 06, 2009 10:31 pm
Location: Fuquay-Varina, North Carolina

Re: Pairwise Analysis of Chess Engine Move Selections

Post by Adam Hair »

Yes. Though, many of the other engines I have tested are actually earlier versions of engines listed above.

My main focus at this point is to see if every group of engines that tend to choose similar moves at a higher rate include an open source engine that preceeded the other engines.
Gian-Carlo Pascutto
Posts: 1260
Joined: Sat Dec 13, 2008 7:00 pm

Re: Pairwise Analysis of Chess Engine Move Selections

Post by Gian-Carlo Pascutto »

Adam Hair wrote: This produces 3403 data points. The last column, "Percentage", gives the probability of a given data point occuring ( given the possible distribution of the data).
Is the percentage (really: probability) in the last column corrected for the fact that you did 3403 simultaneous comparisons instead of 1? If not, the number is wrong and tremendously overstating the real probability.
Gian-Carlo Pascutto
Posts: 1260
Joined: Sat Dec 13, 2008 7:00 pm

Re: Pairwise Analysis of Chess Engine Move Selections

Post by Gian-Carlo Pascutto »

Nevermind this - you used student-t but didn't actually do a pairwise comparison, you just used that as the distribution you guessed, so this isn't directly relevant to the quoted percentage.

I'm not sure where the 3403 data points come from, but you probably still suffer from the same flaw wrt false positives just due to the sheer amount of possible pairs. If you pick 3403 samples from a distribution, you'll expect about 170 of them to have a 5% or less probability of occurring even if there is nothing particular about them. This should be taken into account when interpreting those percentages.

The validity of your probability also hinges on the question if the distribution is correct and how accurate the estimation of it is. You found that student-t is a better fit than the normal distribution, despite there being no particular reason why this data shouldn't have been normally distributed. Note that student-t differs from the normal distribution in that it has bigger sidelobes (more outliers). So another explanation is: not all data points included are actually from the same, "null hypothesis" distribution of engines that are unrelated to each other. You mentioned this in your text, but it obviously affects what distribution is going to fit your data best. Quite possibly, if you combine the distribution of unrelated engines with that of engines with a common origin, your best fit will actually be a bimodal distribution!

So basically, I'd take the "percentage" numbers with a few cups of salt until a more rigorous analysis is done.
Adam Hair
Posts: 3226
Joined: Wed May 06, 2009 10:31 pm
Location: Fuquay-Varina, North Carolina

Re: Pairwise Analysis of Chess Engine Move Selections

Post by Adam Hair »

Hi Gian-Carlo,

Thanks for responding to this thread. Any valid criticism is welcomed.
Gian-Carlo Pascutto wrote:Nevermind this - you used student-t but didn't actually do a pairwise comparison, you just used that as the distribution you guessed, so this isn't directly relevant to the quoted percentage.
I should have been more explicit. The use of "pair-wise" in the title
refers to the comparison of the move selections of pairs of engines.
For 83 engines, the number of pairs is 82*83/2 = 3403. The actual
data is derived from the number of moves each pair of engines chose
in common when using the similarity tester. I used the website
http://zunzun.com/ to find the statistical distribution that best fit the data.
The second best fit to the data ( using the negative log likelihood to judge
between models ) was a Student's T distribution with the parameters I
gave above. The best fit was labelled Johnson SU, which I have never
heard of and involved more parameters and was only marginally a better
fit. A normal distribution with mean = 46.310 and st.dev = 3.538 was
14th best. The percentage in the last column was derived from using
the Student's T distribution with the given parameters. One thing that I
left out is that the percentages calculated were for both tails, not just the
upper tail ( the pairs that fall in the lower tail involve Sjeng and Junior).
So, since we might be more interested in the upper tail, those percentages
should be divided by 2. Hence, the probability that two engines would
match 71.13% of their moves is 0.01518%. Assuming, of course, that
this is an accurate model for the population of engines. I am not ready to
make any assumptions like that.
Gian-Carlo Pascutto wrote: I'm not sure where the 3403 data points come from, but you probably still suffer from the same flaw wrt false positives just due to the sheer amount of possible pairs. If you pick 3403 samples from a distribution, you'll expect about 170 of them to have a 5% or less probability of occurring even if there is nothing particular about them. This should be taken into account when interpreting those percentages.
You are right. I would like to note that 536 pairs fell in the upper 5% tail.
And the highest percentage in the table above is 0.66789%, which should
have been 0.33395%. Out of 3403 samples, we would expect to find 11
to 12 occuring in the upper 0.33395% tail, whereas there are 49 pairs
listed above. All of which is irrelevant if the actual distribution for the
population of engines differs from this estimate.
Gian-Carlo Pascutto wrote: The validity of your probability also hinges on the question if the distribution is correct and how accurate the estimation of it is. You found that student-t is a better fit than the normal distribution, despite there being no particular reason why this data shouldn't have been normally distributed. Note that student-t differs from the normal distribution in that it has bigger sidelobes (more outliers). So another explanation is: not all data points included are actually from the same, "null hypothesis" distribution of engines that are unrelated to each other. You mentioned this in your text, but it obviously affects what distribution is going to fit your data best. Quite possibly, if you combine the distribution of unrelated engines with that of engines with a common origin, your best fit will actually be a bimodal distribution!
I agree with you 100%.
Gian-Carlo Pascutto wrote: So basically, I'd take the "percentage" numbers with a few cups of salt until a more rigorous analysis is done.
I would probably take a couple of cups of salt less than you, but I do
agree with you. More rigorous analysis is needed. That analysis is waiting
on the accumulation of more data.

Thanks for the comments,
Adam
Adam Hair
Posts: 3226
Joined: Wed May 06, 2009 10:31 pm
Location: Fuquay-Varina, North Carolina

Re: Pairwise Analysis of Chess Engine Move Selections

Post by Adam Hair »

Sven Schüle wrote:

Code: Select all

                                            % Matching Moves   t(alpha,d.f.)   Percentage
Fruit 2.1              Loop 2007                 71.13               19.31        0.03036
Loop 2007              Onno 1.0.4                67.88               16.78        0.04609
Fruit 2.1              Onno 1.0.4                67.83               16.74        0.04641
Strelka 2.0 B          Thinker 5.4d Inert        62.07               12.26        0.11678
Houdini 1.5            RobboLito 0.085g3         61.87               12.11        0.12126
Naum 4.2               Strelka 2.0 B             61.37               11.72        0.13351
Hannibal 1.0a          Twisted Logic 20100131x   60.74               11.23        0.15140
Philou 3.5.1           Stockfish 2.1             60.43               10.99        0.16138
Loop 2007              Umko 0.9                  60.33               10.91        0.16479
Alaric 707             Fruit 2.1                 60.28               10.87        0.16653
Alaric 707             Loop 2007                 59.88               10.56        0.18135
Colossus 2008b         Fruit 2.1                 59.69               10.41        0.18901
Fruit 2.1              Umko 0.9                  59.42               10.20        0.20064
Onno 1.0.4             Umko 0.9                  59.38               10.17        0.20244
Alfil 8.1.1 Optimized  Glaurung 1.2.1            59.07                9.93        0.21718
Critter 1.0            RobboLito 0.085g3         59.04                9.91        0.21868
Alaric 707             Onno 1.0.4                58.49                9.48        0.24880
Naum 4.2               Thinker 5.4d Inert        58.40                9.41        0.25424
Colossus 2008b         Loop 2007                 58.23                9.28        0.26496
Fruit 2.1              Strelka 2.0 B             58.18                9.24        0.26822
Delfi 5.4              Loop 2007                 57.65                8.83        0.30636
Loop 2007              Naraku 1.31               57.65                8.83        0.30636
Delfi 5.4              Fruit 2.1                 57.50                8.71        0.31845
Critter 1.0            Houdini 1.5               57.40                8.63        0.32685
Colossus 2008b         Onno 1.0.4                57.37                8.61        0.32943
Loop 2007              Strelka 2.0 B             57.11                8.41        0.35296
Onno 1.0.4             Strelka 2.0 B             57.10                8.40        0.35391
Fruit 2.1              Naraku 1.31               57.00                8.32        0.36358
Alaric 707             Rotor 0.6                 56.68                8.07        0.39699
Colossus 2008b         Naraku 1.31               56.68                8.07        0.39699
GarboChess 2.20        Strelka 2.0 B             56.68                8.07        0.39699
Alaric 707             Strelka 2.0 B             56.65                8.05        0.40033
Naraku 1.31            Onno 1.0.4                56.57                7.99        0.40941
Delfi 5.4              Onno 1.0.4                56.48                7.92        0.41996
Fruit 2.1              N2 0.4                    56.05                7.58        0.47561
Hamsters 0.7.1         Loop 2007                 56.02                7.56        0.47984
Fruit 2.1              SmarThink 1.20            55.89                7.46        0.49879
Loop 2007              Rotor 0.6                 55.60                7.23        0.54476
Fruit 2.1              Rotor 0.6                 55.49                7.15        0.56366
Fruit 2.1              Hamsters 0.7.1            55.38                7.06        0.58343
Loop 2007              SmarThink 1.20            55.33                7.02        0.59272
Naraku 1.31            Umko 0.9                  55.32                7.02        0.59460
Colossus 2008b         Umko 0.9                  55.26                6.97        0.60605
Fruit 2.1              Naum 4.2                  55.22                6.94        0.61385
N2 0.4                 Onno 1.0.4                55.01                6.78        0.65703
Hamsters 0.7.1         Rotor 0.6                 54.98                6.75        0.66352
Loop 2007              Naum 4.2                  54.98                6.75        0.66352
RobboLito 0.085g3      Rybka 4                   54.98                6.75        0.66352
Loop 2007              N2 0.4                    54.96                6.74        0.66789
Just for even more readability :-)
Sven
Sven, could I ask you how you did that?