ZChess - Echecs et informatique sur PC-Windows

Rechercher
Aller au contenu

Menu principal :

Moteurs

ZChess 2.00 London
Le moteur sacrificiel



Mis en circulation en 2000, ZChess version "Londres" est un peu à part dans la lignée de moteurs de Franck Zibi - qui va de HP Chess à Pharaon. Cette version 2.00 de ZChess avait été développée spécialement pour le World Computer Chess Championship de Londres où il devait attirer l'attention par son jeu spectaculaire et risque-tout à la Tal, avec sacrifices à foison.




Au milieu des années 90, le français Franck Zibi a développé en assembleur HP Chess, un mini-moteur d'échecs pour calculatrice HP48. Les faibles capacités de la machine ne permettaient pas  d'explorer au delà de six 1/2 coups en profondeur, offrant un niveau de jeu tout juste suffisant pour satisfaire un joueur d'échecs occasionnel. Franck Zibi s'est alors dit qu'un portage en C permettrait de faire tourner HP Chess sur un PC avec un gain de puissance considérable. Le nouveau moteur fait ses débuts en 1997 sous le nom de ZChess. Son niveau de jeu est conséquent sans être extraordinaire : environ 2200 Elo.
ZChess a évolué jusqu'à la version 2.22 d'octobre 2000 qui atteignait 2450 Elo ; puis le moteur a changé de nom pour devenir Pharaon, lequel a continué à évoluer jusqu'en 2006, approchant les 2700 Elo*. ZChess et Pharaon sont de bons moteurs mais qui ne se distinguent pas particulièrement d'une masse imposante d'autres bons moteurs… sauf ZChess 2.0 London !

* Pharaon est l'un des moteurs de l'interface Eschecs. J'en dit quelques mots dans l'article concernant cette mini-GUI.



Style : attaquant à la Mikhaïl Tal

C'est son style de jeu très agressif et spéculatif qui m'a poussé à ajouter ZChess version "London" dans ma sélection de moteurs d'échecs. Ses parties sont souvent étincelantes d'originalité et émaillé de sacrifices que ne renierait pas le "magicien de Riga". L'analogie entre ZChess et Tal s'impose, y compris lorsque le moteur est poussé vers la défaite par ses coups un peu trop aventureux. Il est fort - environ 2400 Elo* - mais quand même loin de la trop grande habileté tactique d'un Stockfish, pour ne donner que cet exemple. Son jeu reste à dimension humaine, et c'est très bien.

* Il s'agit de la valeur fourni par l'auteur. J'ai fait jouer Zchess 2.0 un tournoi 40/10 avec quelques autres moteurs et Bayeselo a estimé son niveau aux environs de 2360 Elo.

Téléchargement et installation

ZChess a quasiment disparu du Web. Je propose donc le moteur sur mon espace Mega.

Télécharger ZChess London ?

L'archive contient six fichiers dont un exécutable ("ZChess.exe") un fichier batch ("ZCH.BAT"), une bibliothèque d'ouvertures ("z_book.bin"), un fichier texte contenant une liste imposante de coups recommandés ou à éviter ("z_style.txt") et un fichier d'initialisation ("ZCHESS.INI").
Le fichier batch était destiné à envoyer des paramètres à l'interface Winboard. Il n'est donc d'aucune utilité pour nous.

ZChess est un vieux moteur Winboard mal déclaré, et mal interprété par les interfaces modernes. Il fonctionne avec Arena mais celle-ci prend le moteur pour un UCI. PyChess considère que le fichier "Zchess.exe" n'est pas conforme et Crafty Chess Interface accepte le moteur mais n'arrive pas à le faire fonctionner. Enfin, il n'est pris en compte ni par Lucas Chess ni par Mayura Chess Board, qui ne peuvent faire tourner que des moteurs UCI. En résumé, il ne reste qu'Arena. Mais ca marche très bien avec cette interface.

Installation dans Arena

Pour Arena, menu "Modules" > "Installer nouveau module" et allez chercher le fichier "ZChess.exe". Comme l'interface croit reconnaitre un moteur UCI, il faut la détromper : menu "Modules" > "Gérer", onglet "Détails", choisir "ZChess" et dans le champ "Type", remplacer "UCI" par "Winboard (vieux)" (le moteur ne fonctionnera pas si ce n'est pas fait).
Lorsque le moteur fonctionne, il génère deux fichiers binaires supplémentaires : "z_learn.bin", qui contient des données d'apprentissage, et "z_style.bin", qui, je crois comprendre, compile les données du fichier "z_style.txt" (auquel vous pouvez ajouter ou même retrancher des entrées -  ouvrez ce fichier est jetez-y un oeil, c'est assez parlant).


Configuration

Le dossier du moteur contient un fichier d'initialisation, "ZCHESS.INI", qui permet de régler un certain nombre de choses. Ouvrez-le avec le bloc note ou le Wordpad pour le lire et le modifier. Voici les paramètres, commentés (en bleu). Les  plus importants sont en gras et en rouge) :


[HashTables]


SIZE_HT=16

Il s'agit de la taille de la table de hachage. Valeurs possibles : 2, 4, 8, 16, 32, 64, 128, 256. EFFACER_HT=TRUE
Remise à zéro de la table au démarrage. Ne pas modifier.

[HashPawns]


SIZE_HP=4

Taille de la table de hachage de pions en Mo. Valeurs possibles : 1, 2, 4, 8, 16, 32, 64.

[Display]

noise=5
La réflexion du moteur ne commence à s'afficher qu'au 5eme coup de profondeur d'évaluation. Ne pas modifier.
K_BEST_MODE=1
Il s'agit ici ni plus ni moins du système MultiPv. Par défaut il est désactivé, ce qui est le mieux lorsque le moteur est utilisé comme adversaire.  Si supérieur à 1, l'interface affichera la variation principale puis PV2, PV3...

[Search]

min_sd=2
Quel que soit le temps dont dispose le moteur, sa recherche ira au moins jusqu'à la profondeur de 2 coups. Ne pas modifier.
max_sd=35
Quel que soit le temps dont dispose le moteur, sa recherche s'arrêtera à la profondeur de 35 coups.  Ne pas modifier.
selectivite=25
Nombre maximal de plies qui doivent être ajoutées à la profondeur d'exploration. Ne pas modifier.
USE_COMBINATION_EXTENSIONS=TRUE
(sans intérêt pour nous)
USE_PVS_SEARCH=TRUE
(ne pas modifier)
USE_FAILSOFT=FALSE
(ne pas modifier)
USE_NULL_MOVE=TRUE
USE_MOINS1=TRUE
USE_FUTILITY_SUPERIEUR=FALSE
USE_BIG_FUTILITY_SUPERIEUR=FALSE
Les paramètres précédents concernent les diverses routines d'élagage de l'arbre de recherche. Les plus importantes sont activées et je suggère de ne rien y changer. Failsoft et les deux modes de l'élagage de futilité sont désactivés par défaut. Là encore, je suggère de ne rien changer.

[TableBase]


ZChess est capable d'exploiter les tables de finale Nalimov. Vous devrez indiquer le chemin vers vos tables, si vous les avez.
USE_TB=TRUE
Recherche des tables de finales activée. Si vous ne les avez pas ou ne comptez pas les utiliser, remplacer TRUE par FALSE
TBPATH=./TB;C:\Echecs\Arena\TB\Nalimov;
Chemin vers les tables Nalimov. Remplacez la partie en noir par votre propre chemin. Vérifiez que les tables sont bien prises en compte en lançant l'exécutable du moteur. Si tout va bien vous devez avoir le message "Found TableBase Files, up to 3 (4 ou 5) men".

[MISC]

ENABLE_PONDERING=TRUE
La pondération est activée par défaut. Je conseille généralement de la désactiver (FALSE). Mais avec Arena cela peut être fait simplement depuis l'interface.
ENABLE_BOOK=TRUE
La bibliothèque d'ouvertures interne est activée. Ne la désactivez que si vous comptez utiliser plutôt une bibliothèque Abk d'Arena.
ENABLE_LOG=TRUE
Le fichier journal est créé par défaut. Inutile pour la plupart des utilisateurs, donc à mettre de préférence sur FALSE.
ENABLE_LEARN_BIN=TRUE
Le fichier d'apprentissage sera créé et alimenté. Il permettra au moteur de ne pas rejouer une position qui l'a fait perdre dans une partie antérieure.

[Evaluation]

DRAW_SCORE=0
Réglage du "Contempt factor" en centième de la valeur d'un pion. Ici, augmenter la valeur pousse le moteur à accepter plus facilement d'aller vers une partie nulle.
OPPONENT_TYPE=0
Il y a trois types d'opposant pour le moteur : 0 = indéterminé, 1 = humain, 2 = moteur d'échecs ou ordinateur. Si vous utilisez ZChess comme adversaire, le mieux sera de régler ce paramètre sur "1".
ENABLE_RESIGN=TRUE
Si TRUE, le moteur est autorisé à abandonner dans une situation qu'il estime désespérée (il ne le fera pas par contre si l'adversaire n'a plus que très peu de temps disponible).
ENABLE_DRAW_OFFER_WHEN_GAFFE=FALSE
Ce paramètre permet d'autoriser (TRUE) ou interdire (FALSE) au moteur de proposer à l'adversaire humain d'abandonner s'il a commis une gaffe dans une situation nettement meilleure.

[Debuggage]


DEBUT_DEBUG_INFO=1
FIN_DEBUG_INFO=1
DEBUG_TEST=1
ECART_DEBUG_INFO=1
START_DEBUG_INTERACTIF=1
DEBUG_LINE=
DEBUG_EPD=
USE_INTERNAL_ITERATIVE_DEEPENING=FALSE
USE_FENETRE_ASPIRANTE=FALSE

Ces paramètres ne concernent pas les simples utilisateurs. Ils ne sont pas commentés.



A noter : lors de la dernière mise à jour de cet article, j'ai réinstallé Zchess dans Arena et le moteur a dysfonctionné. Il jouait correctement mais plus aucun réglage du fichier ini n'était pris en compte. Après beaucoup de manipulations pour le relancer j'ai éteint et rallumé mon ordinateur, installé une copie propre d'Arena et réinstallé Zchess. Tout a alors bien fonctionné. Moteur au standard Winboard ancien, Zchess est un moteur délicat qui a besoin d'être chouchouté.   


Gérer la force du moteur

Je n'ai plus le tournoi qui m'a permis d'évaluer Zchess à 2360 Elo mais je sais qu'il y avait plusieurs centaines de parties, que le CT était 40/10 et que la table de hachage était à 128 Mo. Je pense donc la mesure fiable et cela fait de Zchess un moteur assez fort. La question de son affaiblissement se pose...

Méthode d'affaiblissement


Voici la stratégie que je propose :
➤Limiter la taille des deux tables de hachage :
➤Désactiver la bibliothèque pour conduire le moteur vers une bibliothèque plus légère.
➤Désactiver la pondération.
➤Ne pas conduire le moteur vers les tables de finales Nalimov.
Pour cela, ouvrez le fichier "ZCHESS.INI" et dans la section "[HashTables]" indiquez "SIZE_HT=2".
Dans la section "[TableBase]", indiquez "USE_TB=FALSE".
Dans la section " [HashPawns]" indiquez "SIZE_HP=1".
Dans la section "[MISC]", indiquez "ENABLE_PONDERING=FALSE" et "ENABLE_BOOK=FALSE".

Pour la bibliothèque d'ouverture, il vaut mieux éviter quand même d'en priver complètement le moteur, sans quoi ses débuts risques d'être vraiment cahotiques. Avec Arena il suffit de guider le moteur vers une bibliothèque au format de l'interface, l'Abk : "Modules" > "Gérer", choissir Chenard dans la liste des moteurs, onglet "Détails", onglet "Bibliothèque" et allez chercher la bibliothèque avec le sélecteur de fichiers. "Utilisez bibliothèque principale d'Arena avec ce module" doit être décoché.

Je vous propose deux Abk :
Mini.abk. C'est une bibliothèque très légère, qui ne fournira jamais plus de 8 1/2 coups.

Tal.abk. Bibliothèque de 12 1/2 coups obtenue avec les parties de Mikhaïl Tal.


Agir sur le contrôle de temps


Les seules mesures précédentes pourraient sans doute abaisser le niveau de jeu d'environ 200 Elo. Le reste pourrait être obtenu en sélectionnant une cadence blitz ou rapide. Par exemple :
➤Pour 2000 Elo : CT 40/2
➤Pour 1850 Elo : CT 5+0
➤Pour 1750 Elo : CT 3+0
Attention : c'est purement indicatif. Je n'ai pas testé ces réglages. Vérifiez par vous même.
Evidemment, l'idée est que la limitation de temps ne vous soit pas imposée. Avec Arena, il faut désactiver la pendule : Menu "Options" > "Pendule arrêtée". L'icône en forme d'horloge doit être entourée d'un filet bleu. Attention toutefois : sur les versions récentes de Windows, la pendule tend à se réactiver après chaque coup du moteur. Soyez attentif : si vous voyez le compteur recommencer à égréner le termps qui passe, cliquez à nouveau sur l'icône "pendule". Sinon vous ne tarderez pas à perdre au temps.


Ralentir le moteur avec Force (%) ?

Arena dispose d'une option permettant de ralentir la réflexion du moteur : menu "Modules" > "Gérer", onglet "Détails", sélectionnez ZChess dans la liste des moteurs, onglet "Spécial" et changez la valeur de "Force (%)".
Par défaut la valeur est à 100, soit la force maximale du moteur. A 50%, la vitesse de traitement des données est en principe divisée par deux. Le problème est de savoir à quelle force correspondent les diverses valeurs possibles. Il y avait longtemps que je me proposais de tester ce module d'Arena et je l'ai fait avec Zchess. Les résultats ont été très surprenants. Les voici, sous forme de graphe :




Nous sommes en présence d'une courbe logarithmique inverse : en partant de 1 la progression est très rapide d'abord (raison pour laquelle il y a 8 niveaux dans les premiers 10%) puis elle s'infléchit progressivement pour finir presque à plat avec les valeurs supérieures à 80%*.
Vous noterez qu'à 1%, Zchess affiche une force qui reste supérieure à 2000 Elo. Alors que diviser son temps de travail par deux ne fait perdre que 60 Elo au moteur. Clairement, Force (%) n'est pas un outil facile à utiliser. D'autant que l'effet doit être très variable en fonction de la cadence. Je déconseille de l'utiliser.


* Le tournoi avec lequel j'ai établi cette courbe était de 1054 parties de 40 coups par tranche de 5 minutes, donc un contrôle de temps assez rapide, mais qui laissait quand même 7,5 secondes de réflexion par coup, en moyenne.

Rob Rob, octobre 2024 (révision janvier 2026).

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