Bayeselo - Bayesian Elo Rating - Echecs et informatique sur PC-Windows

Rechercher
Aller au contenu

Menu principal :

Programmes

Bayeselo - Bayesian Elo Rating

Application de calcul de points Elo


Cette petite application console, conçue par le français Rémi Coulom, permet à partir d'un PGN comportant si possible de très nombreuses parties, d'établir un classement Elo.


Téléchargement et installation

On trouve Bayeselo sur le  site de Rémi Coulom. Il consacre une grosse page rédigée en anglais à son utilitaire. Télécharger Bayeselo ?

Créez quelque part un dossier au nom de Bayeselo et copiez-y le fichier "bayeselo.exe" que vous venez de télécharger. Copiez-y également mon petit fichier "Fusion.bat". Ce mini- programme va rassembler toutes les parties que vous comptez utiliser pour établir un classement. Télécharger Fusion.bat ?


Mode d'emploi

Je n'entrerai pas dans le détail du fonctionnement de Bayeselo. Si vous souhaitez en savoir plus, vous pourrez toujours lire les explications, en anglais, de Rémi Coulom, sur la page indiquée plus haut. Pour ma part je resterai basique et pratique, en vous proposant une méthode pas à pas pour utiliser l'application.

Supposons par exemple que vous souhaitiez établir le niveau d'un moteur sur lequel vous auriez modifié des paramètres, afin de vérifier la validité de vos réglages.  

Étape  1 : choisir un joueur de référence

Choisissez un moteur que vous savez proche de votre moteur modifié et dont vous connaissez le classement Elo - que vous spécifirez plus tard à Bayeselo pour servir de point de référence.
Faites ensuite jouer ce moteur de référence avec votre moteur bricolé. Accumulez le plus grand nombre possible de parties. Au minimum une quarantaine. En conservant le même type d'épreuve (par exemple "parties de tournoi en 15 mn").
Faites également jouer vos deux moteurs contre des moteurs plus faibles et plus forts (80 à 150 Elo en plus ou en moins).  Plus il y aura de croisements, plus il sera facile à Bayeselo d'être juste dans son estimation.
Rassemblez aussi le maximum de parties de moteurs s'étant déroulées dans des conditions similaires. En n'oubliant pas toutefois qu'il ne sert à rien d'ajouter des tas de parties entre moteur A et moteur B si A et B ne jouent pas ailleurs avec d'autres moteurs de votre sélection.

Remarque : je vous conseille fortement d'utiliser Arena pour vos tournois. L'interface excelle dans ce rôle : elle organise les appariements, démarre et arrête les moteurs, calcule les scores et peut même éteindre elle-même votre ordinateur à la fin du tournoi ou au bout d'un nombre défini de parties. De plus, pratiquement tous les moteurs d'échecs, Winboard ou UCI,  fonctionnent avec Arena.


Étape 2 : rassembler et fusionner les parties

Copiez toutes les parties, qui doivent être au format Pgn dans un dossier avec Fusion.bat et lancez l'application. Fusion.bat lit toutes les parties et les regroupe dans un PGN unique appelé "Parties.pgn". Copiez "Parties.pgn" dans le dossier de Bayeselo.


Étape 3 : évaluation

Exécutez Bayeselo. Vous devez d'abord donner à l'invite de commande l'ordre de lire le fichier de parties ; tapez "readpgn Parties.pgn" et vérifiez que Bayeselo répond : "xxxx game(s) loaded".
Puis saisissez successivement "elo", "mm" et "exactdist".
A ce stade vous devez indiquer à l'application le moteur de référence, avec la commande "offset". Si par exemple vous comptez utiliser Adroitchess, moteur de 2080 Elo, saisissez "offset 2080 Adroitchess". Attention, le programme est sensible à la casse. Vous devez saisir le nom du moteur exactement comme il apparaît dans le fichier de parties.

Il ne reste plus qu'à afficher l'évaluation de Bayeselo en tapant "ratings". L'application numérote les joueurs par ordre de force décroissante et fournit pour chacun d'eux une évaluation Elo. Sont précisés aussi une marge d'erreur positive et négative, le nombre de parties utilisées pour le calcul, le score du joueur en pourcentage, le niveau moyen des opposants (je crois) et le pourcentage de parties nulles.  



Vous pouvez obtenir une édition texte en tapant "ratings>Evaluation_Elo.txt" (par exemple).

Il est évident que si vous cherchez à établir votre propre Elo plutôt que celui d'un moteur, la méthode restera identique. Vous pourrez vous comparer soit à des joueurs humains, soit à des moteurs dont vous connaissez le niveau Elo.

Fiabilité de l'évaluation

Bayeselo vous donne pour chaque évaluation d'un joueur une marge d'erreur positive et négative. J'ignore comment il parvient à ces chiffres ; je constate seulement que la marge positive est en général à peu près de même valeur que la marge négative - il est rare que la différence dépasse 5 points - et que plus il y a de parties, moins la marge est élevée. Il faut au moins une quarantaine de parties pour avoir une évaluation de qualité significative. Malgré tout, la marge d'erreur reste importante. Pour une cinquantaine de parties, elle est de l'ordre de 80 Elo en plus et en moins. Il faut au moins 1200 parties pour réduire cet interval à +15 / -15. Sur l'exemple ci-dessus, le joueur "Standard", est évalué à partir de 422 jeux mais a encore une marge d'erreur total de 50 points. Cela nous rappelle que la côte Elo n'est pas un système parfait et qu'elle ne rend compte qu'approximativement de la force d'un joueur. Bayeselo est même plus fin que le système Elo officiel. Il ne faut donc pas trop s'inquiéter de ces écarts - mais alimenter le plus possible le programme en parties.


J'ai utilisé Bayeselo pour établir la force relative de mes différents fichiers de poids pour le moteur Chessterfield et de mes joueurs "Cdrill".


Encore quelques observations...

➤Il peut arriver que dans le listing d'évaluation le même joueur apparaissent sous des noms légèrement différents. Par exemple "R. Robinson" et "Rob Robinson", "Adroit Chess" et "AdroitChess"… L'ennui, c'est que Bayeselo les considère alors comme des joueurs différents. Pour contraindre l'application à les confondre, il y a une solution simple : changez le nom "Parties.pgn" en "Parties.txt" et ouvrez le fichier dans un traitement de texte. Utilisez le module de recherche (s'ouvre généralement avec "Ctrl+F") et convertissez Adroit Chess en AdroitChess, R. Robinson en Rob Robinson, etc. Lorsque tous les noms sont uniformisés, renommez "Parties.txt" en "Parties.pgn" et relancez Bayeselo.

"exactdist" est l'un des quatre algorithmes disponibles pour calculer les intervalles. C'est celui qui est censé être le plus fiable, mais vous pouvez aussi tenter "covariance", qui peut donner également de bons résultats.

➤Il n'est pas possible de donner en même temps deux valeurs de référence à Bayeselo, l'une supérieure, l'autre inférieure à la valeur Elo que vous recherchez - du moins je ne crois pas. Il est facile par contre de demander au programme de calculer à partir d'une valeur offset, puis de recommencer avec une autre et de comparer les évaluations. Cela permet en général de cerner un peu mieux la valeur recherchée.

➤Pour obtenir une évaluation vraiment fiable, il faut beaucoup de parties et beaucoup de croisements. Toutefois, Bayeselo ne se trompe généralement pas dans l'ordre de classement. Donc, si vous intercalez dans votre PGN des parties de plusieurs moteurs dont vous connaissez le Elo, vous obtiendrez de précieux indices pour affiner l'évaluation de l'application. Plusieurs sites Internet publient des classements très fiables de moteurs d'échecs. Ils utilisent généralement… Bayeselo pour leurs évaluations ! Le plus réputé est le Computer Chess Ratings Lists, ou CCRL, qui met à jour régulièrement trois pages de classement de moteurs  :
CCRL 40/15 (évaluation des moteurs en parties de 40 coups/15 mn)
CCRL 40 Blitz (évaluation en parties blitz)
CCRL 40/2 FRC (évaluation en parties de 15 mn et blitz pour moteurs d'échecs 960)

Autre site sérieux, utilisant également Bayeselo : le Kirr's Chess Engine Comparison, plus connu sous le sigle KCEC.


Voilà. Ce sera probablement le dernier article de l'année 2020. Bonnes fêtes de fin d'année et bonne année 2021 à tous.  

Rob Robinson, décembre 2020


 
 
 
 
 
 
 
Retourner au contenu | Retourner au menu _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();