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").

ZChess est un moteur Winboard qui semble perturber les modules d'installation des interfaces. 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.

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" (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.  Il contient les paramètres suivants - que je commente, en bleu :  

[HashTables]
SIZE_HT=16
Il s'agit de la taille de la table de hachage. Valeurs possibles : 8, 16, 32, 64, 128, 256. Porter de préférence à 64 voire 128 Mo si vous comptez utiliser le moteur à un bon niveau de force et / ou en parties longues.
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. Porter éventuellement à 8 Mo.
[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 quatre paramètres précédents concernent les diverses routines d'élagage de l'arbre de recherche. Null Move et Moins1 sont activés par défaut. Si on les désactive, le moteur produira un jeu de meilleure qualité (un peu) mais sera sensiblement plus lent et perdra en force (beaucoup). Les deux routines d'élagage de futilité sont par contre désactivées par défaut, mais on pourrait faire la même remarque : si on les active, le jeu perdra en qualité mais gagnera en force. Mon conseil : 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 rouge 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)
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]
Ces paramètres ne concernent généralement pas les simples utilisateurs. Ils ne sont pas commentés.
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


Gérer la force du moteur

Avec un niveau de force de 2360 Elo, la question de l'affaiblissement de ZChess se posera pour beaucoup d'utilisateurs. Pour Arena, plusieurs méthodes sont disponibles. Nous pouvons d'abord désactiver la pendule pour nous : Menu "Options" > "Pendule arrêtée" (l'icône en forme d'horloge doit être entourée d'un filet bleu. Dans ce cas, seul le moteur subit la pression du temps). Assurez-vous cependant que la pondération est bien désactivée, sinon arrêter la pendule ne servira pas à grand-chose.
Une autre possibilité serait de ralentir le 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. Le problème est de savoir à quelle force correspondent les diverses valeurs possibles. Mais comme Zchess m'a servi de banc-test pour préciser l'utilisation de ce module d'Arena je peux vous en dire un peu plus et vous proposer le graphe ci-dessous :




La courbe de progression de la valeur de Force (%) est une croissance de type logarithmique : 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. Si c'est encore trop fort, imposez au moteur un contrôle de temps rapide et désactivez la pendule.

* 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. Je suppose que le même tournoi en contrôle de temps 40/10 pourrait donner un résultat un peu différent mais c'était vraiment beaucoup trop coûteux en temps !



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