Arena_force - Echecs et informatique sur PC-Windows

Rechercher
Aller au contenu

Menu principal :

Technique


Etude concernant le module de réduction de force d'Arena



Pour tous les moteurs ne disposant pas d'un dispositif de réduction de force, Arena propose son propre module "Force (%)". Il n'est toutefois pas facile d'utilisation car la courbe de réduction n'est pas linéaire.  Si l'on attribue un chiffre de 50 au réglage "Force (%)", nous n'obtenons pas du tout une réduction de moitié de la force d'un moteur, loin de là. Car "Force (%)" mesure en fait un taux de ralentissement du moteur. 50 signifie qu'il passera en moyenne deux fois moins de temps à réfléchir à un coup. Or, la perte de force liée au ralentissement d'un moteur d'échecs produit une courbe de type logarithmique. En partant de 1 la croissance de force est d'abord forte, mais la courbe s'infléchit immédiatement jusqu'à devenir presque plate lorsque l'on s'approche des valeurs les plus élevées. Examinons ce que cela implique sur un exemple…


Zchess, banc-test du module "Force (%)"

Zchess est un moteur de force moyenne (environ 2360 Elo) auquel je viens de consacrer un article, en raison de son style particulièrement agressif.  Comme ce moteur ne propose aucun dispositif interne de réduction de force, j'ai cherché à établir quel serait son niveau à différentes valeurs de "Force (%)". Voici la méthode que j'ai utilisé :

1/ J'ai installé Zchess sans réduction de force dans Arena puis je l'ai réinstallé 16 fois avec les valeurs suivantes de Force (%) : 90, 80, 70, 60, 50, 40, 30, 20, 10, 7, 6, 5, 4, 3, 2 et 1. Il y a 7 subdivisions dans la première tranche de 10% car c'est dans celle-ci que les variations sont les plus importantes.

2/ J'ai organisé un tournoi toute ronde de 1054 parties 40/5 entre mes 17 déclinaisons de Zchess.

3/ Une fois en possession de tous les résultats, j'ai utilisé Bayeselo pour mesurer la force de chacun d'eux. Chaque version a joué 62 parties mais comme une partie est un résultat pour deux moteurs, chacune obtient en fait 124 résultats ; de quoi évaluer la force avec un niveau de précision correct. Voici le résultat de la mesure (après lissage des petites irrégularités) :



On observe qu'entre 90 et 100 la différence est cosmétique ; à 50, Zchess est ralenti de moitié mais n'a perdu que 60 Elo. A 30, le moteur est encore à 2250 Elo et à 1 il est loin d'être nul puisqu'il pointe à plus de 2000 Elo ! Comme mode de réduction, Force (%) n'est pas top ! Comme vous le verrez sur le second graphe, le module ne réussit pas à affaiblir Zchess de plus de 13%.


Généralisation

Pour que ce travail soit généralisable à d'autres moteurs, de force différente, j'ai converti les performances Elo de Zchess en pourcentage de la force maximale. Ce qui donne :



Reste à savoir dans quelles mesures ce graphe est transposable à d'autres moteurs. Il sera certainement utile mais il faut aussi connaître ses limitations. Pour commencer, il aurait été préférable de tester les  17 niveaux de Zchess en parties 40/15 - ou au moins 40/10, pour se rapprocher de la norme CCRL. Le fait de recourir à un contrôle de temps beaucoup plus rapide est certainement un facteur d'imprécision. Malheureusement, la durée totale d'un tournoi de plus de 1000 parties 40/10 est vraiment prohibitive.
Après, il faut s'attendre à ce qu'un moteur beaucoup plus fort ou beaucoup plus faible produise une courbe sensiblement différente.
Enfin, dernier point, les moteurs ont une capacité plus ou moins grande de trouver un bon coup en peu de temps. Vu la résistance de Zchess à tenir les 2000 Elo à 1% on peut supposer qu'il était assez bon dans ce registre et que d'autres moteurs seraient davantage affaiblis à si petite vitesse. Bref, il faudrait compléter ce tableau avec le même exercice pour d'autres moteurs.

Je reviendrai donc probablement compléter cette page dans le futur.


Rob Rob, octobre 2024

 
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); })();