Le classement des moteurs engines

Après de nombreux tournois entre modules, il est intéressant d’établir un classement des moteurs entre eux, et cela même s’ils n’ont pas joué tous l’un contre l’autre, ou au contraire, même s’ils ont joué de nombreuses fois l’un contre l’autre....

Le classement de référence

On prendra pour exemple le classement actuel du site IPON RATING List à cette adresse : http://www.inwoba.de/

Il existe des programmes qui permettent d’établir un classement et font cela et bien même :

Dans un premier temps, nous allons constituer un échantillon de parties, le principe est l’évaluation des moteurs entre eux en fonction de leurs performances dans leurs résultats.

Rassemblez vos parties dans le même fichier PGN

  • Rassembler dans un même dossier tous vos fichiers PGN que vous souhaitez intégrer dans le calcul du classement, plus le nombre de parties est élevé, plus les moteurs jouent entre eux, plus le classement est fiable.

Dans notre exemple, le fichier est constitué de nombreuses parties issus de mes propres tournois et ceux trouvé sur le net (notamment, sur le site du fou numérique

  • Nous allons donc créer un petit exécutable qui va faire cela aisément.
  • Créez un fichier texte et insérez à l’intérieur la ligne de code suivante :
 type *.pgn >> a.txt
  rename a.txt a.pgn

enregistrez et renommez le en " fusion.bat ". Vous placerez le fichier ainsi crée dans le dossier qui contient les fichiers pgn.

  • Double cliquez sur ce fichier, et blop, un fichier a.pgn apparait avec toutes les parties rassemblées dans ce seul fichier.

Le classement Bayesian Elo Rating par Rémi Coulom

(un conseil, lisez la documentation, c’est plutôt intéressant et cela vous explique la différence de traitement avec la méthode Elostat...)

Une page de commande s’affiche, puis saisissez les éléments en gras :

  • ResultSet>readpgn a.pgn
  • 3517 game(s) loaded, 11 game(s) with unknown result ignored.
  • ResultSet>elo
  • ResultSet-EloRating>mm
  • Iteration 100 : 0.000224454
  • 00:00:00,04
  • ResultSet-EloRating>exactdist
  • 00:00:02,94
  • ResultSet-EloRating>offset 2895 Houdini_w32_1.02_2CPU
  • ResultSet-EloRating>ratings
  • Rank Name Elo + - games score oppo. draws
  • ResultSet-EloRating>ratings >Elo.txt

et voila, au bout de la procédure, vous obtenez le classement dans le fichier Elo.txt. Lors de cette manœuvre, on a mis arbitrairement le module Houdini avec une évaluation à 2895 (offset), tous les classements des autres modules découle de cette valeur de référence.

Rank Name                           Elo    +    - games score oppo. draws 
   1 FireBird_11_no_SSE2_NS        2932  192  154    14   86%  2677   29% 
   2 Houdini_1.3A_w32_2CPU         2896  104   96    32   75%  2738   38% 
   3 Houdini_w32_1.02_2CPU         2895   79   76    46   63%  2822   52% 
   4 FireBird_12_w32_new_SMP       2855   75   71    68   75%  2677   35% 
   5 Fire_131_w32_KLO              2851   82   80    44   60%  2787   43% 
   6 FireBird_11_w32_ms            2851   72   70    58   59%  2795   45% 
   7 Houdini_w32_2CPU              2849  131  122    18   69%  2735   50% 
   8 IvanMod12cSSE2                2841   97   97    26   52%  2825   65% 
   9 RobboLito_0085g3_w32          2834   50   49   116   63%  2737   53% 
  10 Stockfish-18-32-ja            2831   77   75    52   58%  2783   38% 
  11 MishasMauler12T x86           2830  136  138    12   46%  2849   75% 
  12 Stockfish-17-32-ja            2822   83   83    42   49%  2824   40% 
  13 FireBird_11_w32_in            2817  122  116    20   65%  2728   50% 
  14 Tankist 1.7 32-bit            2817  121  112    24   69%  2687   38% 
  15 RobboLito_009_w32             2800  129  124    18   58%  2740   39% 
  16 RobboLito_0085g3_w32_no_SSE2  2798   63   61    96   68%  2658   26% 
  17 Fire_12_w32_new_SMP           2784  100   96    34   60%  2696   32% 
  18 Crab_PGO                      2782  147  147    12   50%  2788   50% 
  19 RobboLite                     2780   39   38   240   69%  2636   34% 
  20 IvanHoe-BetaWH_35             2779  125  121    20   58%  2732   35% 
  21 DamirsRybkaKiller51           2778  119  117    18   56%  2743   67% 
  22 FireBird_10_beta_w32_noSSE2   2777  126  117    20   70%  2645   50% 
  23 Stockfish-171-32-ja           2777   62   60    99   67%  2639   32% 
  24 FireBird_10_w32_noSSE2        2776  112  106    28   64%  2671   36% 
  25 IvanHoe-BetaWH_31             2770  131  129    20   55%  2733   20% 
  26 Stockfish-163-32-ja           2759   63   62    87   60%  2681   33% 
  27 Fire_131_w32_NS               2752  138  143    12   42%  2793   67% 
  28 RobboLito_0085d11_w32         2743  135  118    24   77%  2544   29% 
  29 IvanHoe999953                 2738  140  147    12   38%  2795   58% 
  30 IvanHoe999963                 2736  121  123    18   47%  2747   50% 
  31 IvanHoe_v81_w32_no_SEE2       2726  127  123    20   60%  2650   40% 
  32 Critter_0.80_32bit            2709   97  100    32   42%  2762   28% 
  33 Stockfish-162-ja              2669   73   71    70   61%  2583   26% 
  34 Komodo-12-32-ja               2661   63   63    85   50%  2649   36% 
  35 Critter_0.60_32bit            2660  114  117    24   44%  2700   29% 
  36 Rybka v2.2n2.mp.w32           2649  130  121    20   65%  2545   30% 
  37 RobboLito085d2_w32            2642  159  150    10   65%  2571   70% 
  38 RobboLito_0085e4_w32_no_SSE2  2637  112  115    20   43%  2672   65% 
  39 Rybka 2.2 32 bit              2631   32   32   338   65%  2530   34% 
  40 Spark-0.4-win32-mp            2624   69   69    71   50%  2616   35% 
  41 Stockfish_151_ja              2617   41   41   190   61%  2543   38% 
  42 Naum 4.2                      2614  127  141    20   30%  2748   20% 
  43 Komodo-10-32-ja               2595   54   55   121   34%  2706   31% 
  44 Naum4                         2595   85   89    48   38%  2679   21% 
  45 Protector-136-rev308-32-ja    2594  120  133    20   25%  2750   40% 
  46 Cyclone xTreme Fear           2591  123  128    24   42%  2653   17% 
  47 Doch_09.980_32_ja             2588   82   83    44   45%  2614   45% 
  48 Bright-0.5c-frc               2585   55   56   109   43%  2634   39% 
  49 Stockfish_14_ja               2575   48   47   142   61%  2498   38% 
  50 Doch32-134-ja                 2571   84   83    50   53%  2547   22% 
  51 Critter_0.70_32bit            2558  105  100    33   64%  2462   30% 
  52 Cyclone xTreme                2557  116  117    20   48%  2564   45% 
  53 Cyclone xTreme II             2553   47   46   146   57%  2510   36% 
  57 Protector_Win32               2543   62   63    93   42%  2609   23% 
  55 Critter_0.52b_32bit           2541   96  103    38   30%  2685   24% 
  56 Strelka_1.8_UCI               2535   82   83    48   46%  2564   29% 
  57 T20080620                     2521   94   90    34   63%  2439   50% 
  58 Bright-0.5c                   2518   63   65    92   36%  2627   24% 
  59 Spike1.2                      2507   31   31   337   47%  2533   39% 
  60 Fruit-2-3-1                   2503   32   32   322   46%  2533   37% 
  61 Strelka_2_0                   2499   84   86    44   40%  2568   34% 
  62 Bright-0.4a                   2498   35   35   268   47%  2520   32% 
  63 Spark-0.3a-gcc32-mp           2494   79   86    60   23%  2694   23% 
  64 List512                       2490  108  100    30   72%  2353   37% 
  65 Rybka v1.0 Beta.w32           2485  136  143    14   39%  2541   50% 
  66 TogaII                        2478   54   55   110   45%  2507   34% 
  67 Doch12-ja                     2477  104  111    30   35%  2576   30% 
  68 T20090922                     2448   50   51   122   43%  2497   37% 
  69 Bison 9.11 w32                2443   70   71    63   45%  2472   40% 
  70 Naum                          2432   46   47   144   43%  2477   40% 
  71 Critter_0.42                  2431   42   43   176   36%  2524   38% 
  72 Colossus2008b                 2424   46   46   148   47%  2443   36% 
  73 Booot415                      2423   49   49   127   47%  2442   42% 
  74 Fruit_21                      2422   93   94    34   46%  2445   44% 
  75 Delfi                         2420   45   46   149   43%  2467   44% 
  76 Cyrano                        2418   44   44   160   46%  2446   39% 
  77 Crafty_230_win32_ja           2396   68   70    72   38%  2487   28% 
  78 Alaric707                     2391   40   41   199   41%  2455   33% 
  79 Pharaon                       2390   49   49   131   44%  2436   38% 
  80 Daydreamer-175-32-ja          2380   97  102    33   36%  2473   36% 
  81 Bison 9.8 w32                 2378   57   58    98   43%  2425   35% 
  82 Hamsters                      2368   71   72    63   42%  2420   33% 
  83 Slow                          2367   46   46   151   38%  2445   38% 
  84 Movei00_8_438                 2361  100  100    30   50%  2361   40% 
  85 WildCat_8                     2356   50   51   127   37%  2446   36% 
  86 Ruffian_105                   2356  102  102    30   50%  2362   33% 
  87 Aristarch 4.50                2350  101  101    30   48%  2362   37% 
  88 Zappa                         2303  102  107    30   40%  2365   27% 
  89 GarboChess2                   2261  101  109    30   33%  2368   27% 
  90 Ktulu                         2240  106  122    34   22%  2456   15% 
  91 Alfil811                      2148  108  126    30   17%  2376   27% 
  92 T20100131x                    1937  221  482    16    0%  2487    0% 

NB : Attention, le classement ainsi établi ne représente qu’une tendance et une évaluation très sommaire des moteurs car :

  • la taille de l’échantillon utilisée est trop petite
  • le volume de parties joué entre ces modules ainsi évalués est également trop faible.

Le classement EloStat d’Arena

Le programme Arena 2.01 à une option qui permet d’établir un classement, il suffira donc d’installer Arena et d’ouvrir cette routine (menu Extras>Calculer performance avec ELOStat). La méthode de calcul est différente de Bayessan mais on peut constater cependant que le classement rencontre des similitudes :

Le classement de départ est fixé arbitrairement à 2400.

    Program                          Elo    +   -   Games   Score   Av.Op.  Draws

  1 FireBird_11_no_SSE2_NS         : 2827  224 153    14    85.7 %   2516   28.6 %
  2 Houdini_1.3A_w32_2CPU          : 2757  105  97    32    75.0 %   2566   37.5 %
  3 Houdini_w32_1.02_2CPU          : 2750   71  69    46    63.0 %   2657   52.2 %
  4 Houdini_w32_2CPU               : 2707  124 109    18    69.4 %   2564   50.0 %
  5 FireBird_12_w32_new_SMP        : 2703   72  69    68    75.0 %   2512   35.3 %
  6 Fire_131_w32_KLO               : 2694   80  78    44    60.2 %   2622   43.2 %
  7 FireBird_11_w32_ms             : 2693   68  67    58    58.6 %   2633   44.8 %
  8 IvanMod12cSSE2                 : 2677   81  79    26    51.9 %   2663   65.4 %
  9 Stockfish-18-32-ja             : 2671   76  75    52    57.7 %   2617   38.5 %
 10 RobboLito_0085g3_w32           : 2667   44  42   116    62.9 %   2575   53.4 %
 11 FireBird_11_w32_in             : 2665  115 107    20    65.0 %   2557   50.0 %
 12 MishasMauler12T x86            : 2661   94 107    12    45.8 %   2690   75.0 %
 13 Tankist 1.7 32-bit             : 2658  119 114    24    68.8 %   2521   37.5 %
 14 Stockfish-17-32-ja             : 2656   83  83    42    48.8 %   2665   40.5 %
 15 RobboLito_0085g3_w32_no_SSE2   : 2633   64  62    96    68.2 %   2500   26.0 %
 16 FireBird_10_beta_w32_noSSE2    : 2633  117 102    20    70.0 %   2485   50.0 %
 17 RobboLito_009_w32              : 2631  134 131    18    58.3 %   2573   38.9 %
 18 Crab_PGO                       : 2619  147 147    12    50.0 %   2619   50.0 %
 19 RobboLite                      : 2618   37  37   240    69.2 %   2477   34.2 %
 20 IvanHoe-BetaWH_35              : 2615  130 128    20    57.5 %   2562   35.0 %
 21 DamirsRybkaKiller51            : 2613   98  91    18    55.6 %   2575   66.7 %
 22 FireBird_10_w32_noSSE2         : 2613  110 107    28    64.3 %   2511   35.7 %
 23 Fire_12_w32_new_SMP            : 2604  101  99    34    60.3 %   2532   32.4 %
 24 IvanHoe-BetaWH_31              : 2599  146 143    20    55.0 %   2564   20.0 %
 25 RobboLito_0085d11_w32          : 2598  137 127    24    77.1 %   2387   29.2 %
 26 Stockfish-171-32-ja            : 2594   59  58    99    66.7 %   2474   32.3 %
 27 Stockfish-163-32-ja            : 2594   61  61    87    60.3 %   2521   33.3 %
 28 Fire_131_w32_NS                : 2569  108 125    12    41.7 %   2627   66.7 %
 29 IvanHoe_v81_w32_no_SEE2        : 2563  125 122    20    60.0 %   2492   40.0 %
 32 IvanHoe999963                  : 2561  117 118    18    47.2 %   2580   50.0 %
 30 IvanHoe999953                  : 2543  123 140    12    37.5 %   2632   58.3 %
 31 Critter_0.80_32bit             : 2539  105 107    32    42.2 %   2593   28.1 %
 32 RobboLito085d2_w32             : 2526  164  85    10    65.0 %   2419   70.0 %
 33 Stockfish-162-ja               : 2504   73  72    70    61.4 %   2423   25.7 %
 34 Rybka v2.2n2.mp.w32            : 2502  140 135    20    65.0 %   2395   30.0 %
 35 Critter_0.60_32bit             : 2492  121 123    24    43.8 %   2535   29.2 %
 36 Komodo-12-32-ja                : 2482   59  59    85    50.0 %   2482   36.5 %
 37 Rybka 2.2 32 bit               : 2476   31  31   338    64.6 %   2372   34.0 %
 38 Stockfish_151_ja               : 2466   39  39   190    61.3 %   2386   38.4 %
 39 RobboLito_0085e4_w32_no_SSE2   : 2461   88  95    20    42.5 %   2514   65.0 %
 40 Spark-0.4-win32-mp             : 2448   66  66    71    50.0 %   2448   35.2 %
 41 Naum 4.2                       : 2433  149 159    20    30.0 %   2581   20.0 %
 42 Cyclone xTreme Fear            : 2433  133 136    24    41.7 %   2491   16.7 %
 43 Komodo-10-32-ja                : 2432   53  54   121    34.3 %   2545   30.6 %
 44 Naum4                          : 2427   91  93    48    37.5 %   2516   20.8 %
 45 Doch_09.980_32_ja              : 2424   77  77    44    45.5 %   2456   45.5 %
 46 Stockfish_14_ja                : 2421   46  45   142    61.3 %   2342   38.0 %
 47 Bright-0.5c-frc                : 2417   51  52   109    42.7 %   2468   39.4 %
 48 Doch32-134-ja                  : 2408   87  87    50    53.0 %   2387   22.0 %
 49 Cyclone xTreme II              : 2400   46  46   146    56.8 %   2352   35.6 %
 50 Cyclone xTreme                 : 2398  117 118    20    47.5 %   2416   45.0 %
 51 Protector-136-rev308-32-ja     : 2394  118 133    20    25.0 %   2585   40.0 %
 52 Critter_0.70_32bit             : 2390  105 103    33    63.6 %   2293   30.3 %
 53 Protector_Win32                : 2390   63  64    93    42.5 %   2443   22.6 %
 54 Strelka_1.8_UCI                : 2382   84  85    48    45.8 %   2411   29.2 %
 55 Critter_0.52b_32bit            : 2381  103 107    38    30.3 %   2526   23.7 %
 56 T20080620                      : 2373   86  82    34    63.2 %   2279   50.0 %
 57 Bright-0.5c                    : 2366   64  65    92    35.9 %   2467   23.9 %
 58 Spike1.2                       : 2352   29  29   337    46.9 %   2374   39.2 %
 59 Fruit-2-3-1                    : 2347   30  30   322    46.0 %   2376   36.6 %
 60 Bright-0.4a                    : 2345   34  34   268    47.4 %   2364   32.1 %
 61 List512                        : 2344  108 102    30    71.7 %   2182   36.7 %
 62 Strelka_2_0                    : 2341   85  87    44    39.8 %   2413   34.1 %
 63 Spark-0.3a-gcc32-mp            : 2325   85  89    60    23.3 %   2532   23.3 %
 64 TogaII                         : 2316   53  54   110    45.0 %   2350   33.6 %
 65 Doch12-ja                      : 2312  109 112    30    35.0 %   2419   30.0 %
 66 Rybka v1.0 Beta.w32            : 2312  132 138    14    39.3 %   2387   50.0 %
 67 T20090922                      : 2289   49  50   122    43.0 %   2338   36.9 %
 68 Bison 9.11 w32                 : 2274   67  68    63    45.2 %   2307   39.7 %
 69 Critter_0.42                   : 2270   41  42   176    36.4 %   2367   37.5 %
 70 Naum                           : 2268   44  45   144    42.7 %   2319   39.6 %
 71 Colossus2008b                  : 2262   45  45   148    47.3 %   2281   36.5 %
 72 Cyrano                         : 2256   42  42   160    46.2 %   2282   38.8 %
 73 Fruit_21                       : 2255   89  90    34    45.6 %   2286   44.1 %
 74 Booot415                       : 2255   46  47   127    46.9 %   2277   41.7 %
 75 Delfi                          : 2254   42  42   149    42.6 %   2306   43.6 %
 76 Crafty_230_win32_ja            : 2241   70  71    72    37.5 %   2329   27.8 %
 77 Alaric707                      : 2231   40  40   199    41.2 %   2293   33.2 %
 78 Pharaon                        : 2227   47  47   131    43.5 %   2272   38.2 %
 79 Bison 9.8 w32                  : 2213   56  57    98    42.9 %   2263   34.7 %
 80 Daydreamer-175-32-ja           : 2207   97 100    33    36.4 %   2304   36.4 %
 81 Slow                           : 2200   44  44   151    38.4 %   2282   38.4 %
 82 Hamsters                       : 2196   71  72    63    42.1 %   2251   33.3 %
 83 Ruffian_105                    : 2192  105 105    30    50.0 %   2192   33.3 %
 84 Movei00_8_438                  : 2192   99  99    30    50.0 %   2192   40.0 %
 85 WildCat_8                      : 2189   49  50   127    37.0 %   2281   36.2 %
 86 Aristarch 4.50                 : 2182  102 102    30    48.3 %   2193   36.7 %
 87 Zappa                          : 2126  110 113    30    40.0 %   2197   26.7 %
 88 GarboChess2                    : 2080  112 116    30    33.3 %   2200   26.7 %
 89 Ktulu                          : 2077  125 135    34    22.1 %   2297   14.7 %
 90 Alfil811                       : 1930  118 132    30    16.7 %   2210   26.7 %
 91 T20100131x                     : 1719    0   0    16     0.0 %   2319    0.0 %

Conclusion  : Avec une base de donnée (pgn) de qualité médiocre (faible taille de l’échantillon), il n’est pas concevable d’établir un classement fiable, par contre, il est tout a fait possible de montrer des tendances générales pour évaluer le niveau des moteurs.

Attention, ce classement ne peut en aucun cas se corréler avec l’évaluation ELO des humains. En effet, même si le système d’évaluation est proche, il faut absolument éviter de comparer avec les joueurs du top 100 mondial par exemple puisque ici, nous faisons appel de manière arbitraire à un module étalon.

Des exemples d’utilisation de ces méthodes :


Posté le 5 septembre 2010 par FREDO