Menu principal :
Glossaire technique des échecs
Ce glossaire n'a pour but que d'éclairer certaines notions techniques relatives au fonctionnement des programmes et moteurs d'échecs. Un minimum de connaissance est en effet nécessaire afin de comprendre comment régler de façon optimal les applications et moteurs que nous utilisons.
Sujets traités
Analyse de parties
Architecture SSE3 et SSE4 -
Bibliothèques d'ouvertures
Centipion
Chess engine communication protocol
Contempt factor
Contrôle de temps
ECO -
Editeur de positions
Elagage alpha-
Elagage précoce
Elo
EPD (Extented Position Description)
Evaluation
FEN -
Fichier de poids
Fonction d'évaluation
Hashtables
Interface utilisateur
Moteur d'échecs
Minimax et élagage alpha-
NNUE -
MultiPv
Notation algébrique
Numeric Annotation Glyphs -
Pawnhash (table de hachage de pions)
PGN -
Polyglot
Pondération
PopCnt
Réflexion sur temps adverse
Règle des cinquantes coups
Réseau neuronal et algorithme classique
Système 32 bits, système 64 bits
Tables de finales
Table de hachage
Table de transposition
Tables pieces / cases
UCI -
UCI to Winboard
USI -
Xboard / Winboard
Les moteurs les plus puissants (Stockfish, Komodo, Leela Chess Zero...) dépassent maintenant les 3500 elos. Ils sont bien plus forts que les meilleurs joueurs humains et c'est pourquoi ils sont employés aujourd'hui davantage comme moteur d'analyse et de conseil que comme adversaires pour jouer. Ces moteurs, malgré encore certaines limites, sont capables d'évaluer avec une grande justesse les mouvements de chaque joueur et de leur attribuer un score d'évaluation, le plus souvent en centipion (centième de la valeur d'un pion).
L'évaluation est toujours faites en référence aux blancs. Cette convention a pour conséquence que les notes positives traduisent des bons coups pour les blancs et des mauvais coups pour les noirs. Et inversement.
Ainsi une évaluation de +0.20 indique que le moteur d'analyse donne aux blancs un petit avantage sur les noirs, valant cinq centièmes de la valeur d'un pion. Si le moteur donne +10 ou +15, c'est que les noirs ont fait une petite boulette, laquelle se traduit par un avantage pour les blancs équivalent à la valeur de 10% ou 15% d'un pion.
Rapport d'analyse d'une partie fourni par de module d'analyse de Lichess. Un modèle dans la présentation des données. Compact et pratique.
La compilation de ces notes successives permet de construire un graphe, la courbe d'évaluation, qui en reprend les principes : quand les blancs gagnent le graphe pointe vers le haut et les valeurs des positions sont positives. Lorsqu'ils perdent, les valeurs sont négatives et le graphe pointe vers le bas. Pour les noirs c'est exactement l'inverse: les bons coups ont toujours une valeur négative.
La courbe d'évaluation permet de voir d'un coup d'oeil les moments de la partie où les plus grosses erreurs ont été commises. Elle est souvent interactive : lorsque l'on pose le curseur de la souris sur un point de la courbe, la position correspondante s'affiche sur l'échiquier. A partir de là les modules d'analyse offrent en général plusieurs possibilités de traitement : reprendre la partie et développer une variante, étudier les propositions de lignes de mouvement plus intéressantes...
Remarque importante : un moteur utilisé à son plus haut niveau pour l'analyse d'une partie ou d'une position consomme beaucoup de ressources machine. C'est pourquoi il est recommandé d'optimiser son fonctionnement (tables de hachages à la bonne taille, mobilisation de tous les threads dispnibles) et d'éviter toute tache qui pourrait consommer de la mémoire ou du temps de traitement de vos processeurs. Fermez tous les programmes inutiles et en particulier les navigateurs internet.
Quels moteurs pour l'analyse ?
Un moteur peut être utilisé pour l'analyse d'abord si sa configuration interne le permet. La plupart des moteurs UCI récents offrent cette possibilité. Longtemps j'ai dit ici qu'il fallait aussi qu'il soit très puissant. Mon avis a un peu évolué depuis. Les moteurs ultra-puissants comme Stockfish sont évidemment les meilleurs dans ce rôle d'analyse. Stockfish est d'ailleurs le moteur utilisé par les modules d'analyses des principaux serveurs de parties en ligne (Lichess, Chess.com, Chess24...). Si elle existe, ils seront capables de trouver une solution au problème posé par une position sur laquelle les humains se cassent les dents. Ils explorent l'arborescence à grande profondeur et peuvent voir ce qui reste inaccessible aux humains. Mais il faudra parfois chercher beaucoup pour comprendre pourquoi le moteur a proposé tel ou tel coup.
Komodo et Naum, plutôt que Stockfish ?
Plus la puissance du moteur repose sur ses capacités tactiques, plus le caractère abstrait de l'analyse sera accentué. C'est pourquoi déjà je préfère pour l'analyse employer un moteur comme Komodo, davantage axé sur les connaissances positionnelles, que Stockfish. Certes les versions gratuites les plus récentes de Komodo (Komodo 14 et Dragon by Komodo 1 actuellement) est moins forte mais elle mettra davantage l'accent sur nos erreurs positionnelles.
Un autre choix intéressant serait de recourir à l'ancien moteur commercial Naum, un monstre de connaissances positionnelles. Sa dernière version, la 4.6, est maintenant disponible gratuitement. Elle atteint la force non négligeable de 3100 Elo, bien suffisante pour une analyse de qualité. Ce moteur est notamment connu pour être un des rares à savoir gérer correctement les positions présentant un système de forteresse de pions.
Ne pas condamner les moteurs moins forts
J'ai été sensible aussi à un argument relevé sur un forum de discussion en faveur de l'utilisation de moteurs moins forts pour l'analyse. Un joueur faisait remarquer qu'un moteur de 3600 Elo actuelk réfuterait certainement un grand nombre de coups de Paul Morphy, pourtant considérés comme brillant dans les annales. Ce joueur était demandeur d'une analyse moins pointue mais plus humaine, qu'il pourrait comprendre plus facilement, au besoin en se creusant un peu la tête. Autrement dit, un moteur de force humaine, disons autour de 2500 ou 2600 Elo, pourrait aussi faire l'affaire.
On pourrait même aller un peu plus loin : un moteur d'analyse de 2000 Elo ne permettrait pas d'obtenir une analyse très pointue et risquerait fort dans certaines situations, de très mal évaluer une position. Il n'en reste pas moins qu'il détecterait sans peine les erreurs les plus grossières d'un simple amateur ou d'un joueur débutant.
Les meilleurs modules d'analyse
Toutes les interfaces d'échecs, commerciales ou freewares, possèdent des fonctions d'analyse - à l'exception de la petite Mayura chess board. Notons aussi l'existence du bon module d'analyse proposé par le serveur de parties en ligne Lichess.
Module d'analyse de Lucas Chess : le plus puissant, le plus fun
Pour mes analyses de parties, j'utilise prioritairement le module de Lucas Chess. L'outil est vraiment exceptionnel. Il peut utiliser le moteur de votre choix et la présentation des données de l'analyse est très aboutie. Les interfaces payantes ne font pas mieux.
En savoir sur le module d'analyse de Lucas chess ?
Module d'analyse de Scid vs PC : puissant aussi mais austère
L'analyseur de l'interface spécialisée dans la gestion des bases de parties est aussi performant que celui de Lucas chess mais plus austère. Ce n'est pas étonnant : comme Chessbase, Scid vs PC s'adresse avant tout à un public de joueurs d'échecs de bon niveau pour qui le fun est une qualité très accessoire.
En savoir sur le module d'analyse de Scid vs PC ?
Un élément du rapport d'analyse de partie fourni par Lucas chess.
Module d'analyse de Lichess : le plus accessible
Le module proposé par le serveur de parties en ligne Lichess est facile à utiliser et la présentation des données est des plus attrayantes. Il utilise Stockfish, mais le module ne lui laisse que très peu de temps de réflexion. En conséquence, les analyses de Lichess manquent de précision. Elles suffisent cependant à mettre l'accent sur les fautes les plus importantes. En résumé, un bon outil "grand public".
En savoir plus sur le module d'analyse de Lichess ?
Autres modules d'analyse
L'interface Arena a son propre module d'analyse, mais il est assez rustique. Celui de Crafty chess interface s'appuie sur le moteur Crafty, très fort, mais ne peut analyser que la position courante - et non une partie entière.
Fritz 5, interface commerciale à présent distribuée gratuitement par Chessbase, possède également un module d'analyse performant.
Rapport d'analyse rendu par Fritz 6 pour l'interface Frtiz 5, aujourd'hui libérée par Chessbase.
Il arrive souvent que les moteurs UCI un peu anciens soient livrés avec une version "PopCnt". PopCnt est un ensemble d'instructions typiques des architectures SSE3 ou SSE4 utilisées par certains processeurs Intel Core et Amd K10. Elles permettent aux processeurs de calculer plus vite et apporteront aux moteurs d'échecs qui sont capables de les utiliser un gain en vitesse de l'ordre de 10%, voire plus. Ce n'est pas négligeable.
Pour savoir si vos processeurs prennent en charge ou pas les instructions PopCnt, vous pouvez recourir à un logiciel gratuit comme CPU-Z, à télécharger sur le site officiel de CPUID : https://www.cpuid.com/softwares/cpu-z.html
Ce programme explore votre configuration matérielle et vous donne quantité d'informations utiles. En particulier, sur l'onglet principal, dans le champ "Instructions", CPU Z vous indique ce que votre ordinateur supporte. Dans l'exemple ci-dessous, on voit que mon vieil ordinateur de bureautique prend en charge les jeux d'instructions SSE4 - donc le PopCnt.
Il y a un moyen encore plus simple de le déterminer : installez dans votre interface habituelle la version Popcnt d'un moteur qui la propose (Rhetoric, OpenTal ou Rodent) puis lancez une partie. Cela ne fonctionne jamais à moitié, donc si le moteur démarre (après avoir épuisé les coups de la bibliothèque d'ouvertures) c'est que ca marche ! Sinon vous n'aurez plus qu'à supprimer la version PopCnt pour la remplacer par la version standard, toujours proposée avec le moteur.
B.
Bibliothèque d'ouvertures
Une bibliothèque d'ouvertures est une base de données de début de parties qui va être utilisée par les moteurs pour jouer les premiers coups de la partie de façon presque instantanée, sans recours aux algorithmes de réflexion. Les plus grosses explorent jusqu'aux cent premiers 1/2 coups !
Inconvénients
Ces grosses tables sont formidables mais elles sont source d'inconvénients. Il n'est pas rare que le moteur joue ses 15 premiers coups à toute vitesse, en les puisant dans la table. Cela fait 30 déplacements de pions avant que l'ordinateur ne se mette réellement à jouer. Ce qui veut dire aussi, avant qu'il ne soit possible qu'il commette une erreur (si la bibliothèque est de qualité) !
Par ailleurs, c'est le style du moteur qui disparaît littéralement dans l'une des trois phases importantes d'une partie d'échecs. Les bibliothèques privilégiant les lignes les plus courantes et les plus performantes, tous les moteurs tendent à jouer les mêmes coups. C'est pourquoi un ou plusieurs moyens d'échapper à ces inconvénients sont souvent proposés. En voici une liste non-exhaustive :
➤Doter le moteur d'une bibliothèque minimale ne permettant que de jouer les 3 à 6 premiers coups.
➤Permettre d'activer ou désactiver la bibliothèque (choix quasi-toujours proposé)
➤Contraindre le moteur à choisir aléatoirement une ligne moins optimale dans la table, afin de varier ses ouvertures.
➤Permettre de définir par avance le nombre de ½ coups pouvant être puisés dans la bibliothèque.
➤Il y a une dernière possibilité, plus subtile : permettre au moteur de charger une bibliothèque imprimant un style particulier au jeu. C'est ce que le concepteur du moteur Rodent, Pawel Koziol, appelle une bibliothèque "guide".
Remarque : dans les compétitions de moteurs, les bibliothèques d'ouvertures sont soit prohibées, soit limitées à un nombre restreint de ½ coup (souvent 8, soit 4 coups).
Bibliothèques "guide"
Lorsqu'on est un hyper-attaquant comme Mikhaïl Tal, on ne débute pas une partie de la même façon qu'un joueur positionnel et défensif tel que Petrossian. Certains joueurs, influencés par l'école hypermoderne, joueront plus volontiers des ouvertures dites "de flanc". D'autres préfèreront les ouvertures inhabituelles, voire exotiques. Elles sont souvent moins productives que les ouvertures standards mais elles peuvent déstabiliser un joueur qui ne les connaît pas. Par exemple, le moteur Rodent est livré avec cinq bibliothèques que je qualifierais de génériques, chargées de donner un style au début de la partie :
➤La bibliothèque "active" correspond à un joueur offensif et tactique
➤La bibliothèque "solid" est inversement une collection d'ouvertures pour joueur positionnel et défensif.
➤La bibliothèque "flank" utilisera prioritairement les ouvertures permettant un contrôle à distance du centre de l'école hypermoderne - en particulier les ouvertures dites de flanc (d'où son nom)
➤"ph-gambitbook" est adapté à un hyper-attaquant à la Tal.
➤Enfin "ph-exoticbook" est le livre qui explore les sentiers peu fréquentés.
A ce sujet, voir "Les bibliothèques d'ouvertures de Rodent"
Formats
En ce qui concerne les logiciels libres, deux formats sont dominants : le format Abk ("*.abk") d'Arena et le format Polyglot ("*.bin") de Winboard. Le format de Chessbase / Fritz, ("*.ctg"), est utilisé, lui par beaucoup de programmes du commerce.
On trouve encore des bibliothèques d'ouvertures en texte et des PGN, à l'extension *.pgn, mais ce sont des formats obsolètes, très peu utilisés à présent.
Codification ECO
Les ouvertures ont fait l'objet d'un classement dit ECO (voir à ce nom) devenu quasi-universel. Dans le système ECO, les ouvertures sont déterminées par une lettre majuscule de A à E et par un chiffre de 0 à 99.
Le centipion correspond à un centième de la valeur d'un pion. C'est l'unité de base des modules d'évaluation de la qualité des mouvements des joueurs. Une évaluation de +0.20 pour les blancs indique par exemple que le moteur d'analyse donne aux blancs un petit avantage sur les noirs, valant cinq centièmes de la valeur d'un pion. Si le moteur donne +10 ou +15, c'est que les noirs ont fait une bêtise, laquelle se traduit par un avantage pour les blancs équivalent à la valeur de 10% ou 15% d'un pion.
A noter : l'évaluation étant toujours donnée relativement aux blancs, les bonnes évaluations pour les noirs sont forcément négatives.
Voir aussi : Analyse de parties
Chess Engine Communication Protocol
Voir Xboard/Winboard
Contempt factor (ou Draw factor)
Le contempt factor, que l'on pourrait traduire par "facteur de mépris", est une manière de régler l'optimisme du moteur envers sa situation sur l'échiquier. Il sert à déterminer quelle décision le moteur doit prendre lorsqu'il se trouve dans l'une des situations où il pourrait être raisonnable ou avantageux de se diriger vers une partie nulle :
➤Offre de nullité de l'adversaire dans une situation inférieure du moteur
➤Evaluation du moteur arrivant à la conclusion que la position va conduire à une partie nulle
➤Evaluation du moteur arrivant à la conclusion que la position va conduire à une impasse
➤Approche des 50 coups sans capture ni poussée de pions...
Si nous avons un Contempt factor ou un Draw factor fixé à zéro (avec une valeur généralement en centième de pion) cela signifie que la valeur d'une nulle pour le moteur est... nulle ! Donc il ne sera pas enclin à accepter d'aller vers une partie nulle. Si on augmente ce chiffre, par exemple à 100 (un pion), une nulle équivaut à un pion et donc le moteur sera susceptible d'accepter une nulle même s'il bénéficie de l'avantage d'un pion. Cela rend le moteur frileux.
Si au contraire nous avons -100, le moteur sera incité à chercher à gagner la partie même dans une situation inférieure de la valeur d'un pion.
Robert Hyatt, programmeur de renom de moteurs d'échecs, conseille de ne pas aller en dessous ou en dessus de la valeur d'un pion. Trop de mépris risque en effet de conduire à une défaite ; pas assez de mépris peut conduire à renoncer trop tôt dans une position gagnable.
Attention toutefois : la présentation de la donnée varie beaucoup selon les moteurs. Le moteur The King de Chessmaster, par exemple, mesure le paramètre Contempt for draw sur une échelle de -5 à +5 ; et les valeurs positives traduisent le rejet accentué de la nullité et non son acceptation. La simulation de Bobby Fischer, joueur très pugnace, affiche un contempt de +3 tandis qu'un joueur hyper-frileux comme Flohr affiche un contempt de -4.
Cette manière de présenter le facteur de mépris est aussi celle de Rodent IV, entre autres. Il faut donc s'assurer de ce sur quoi le moteur se base avant de choisir une valeur.
A l'époque de Paul Morphy, il n'y avait pas de limite au temps qu'un joueur pouvait passer à jouer un coup, ce qui conduisait à des parties parfois interminables. A partir de 1850 apparaissent les premières tentatives de réglementer le temps du jeu. Il faudra tout de même attendre 1862, à l'occasion du deuxième tournoi international de Londres, pour que le temps de chaque joueur soit limité officiellement pour la première fois. Autre date importante sur cette question de contrôle du temps : 1894, tournoi de Leipzig. C'est là qu'apparut la double pendule mécanique, utilisée dans toutes les compétitions jusqu'à la fin des années 80.
Double-pendules mécaniques
Ces fameuses pendules, conçues pour les échecs mais utilisées également pour d'autres types de jeu, sont en réalité des chronomètres doubles qui décomptent le temps imparti à chaque joueur (qui peut-être différent, si l'un des joueurs supporte un handicap). Pour le premier coup, le chronomètre des blancs est activé par les noirs, puis le joueur qui vient de jouer un coup arrête sa pendule d'un appui sur un bouton poussoir, ce qui active celle de son adversaire.
Le néerlandais Meijer a inventé par la suite un petit perfectionnement bien utile, le drapeau. Lorsque le temps d'un joueur approche de son terme un petit drapeau rouge se soulève. Il retombe lorsque l'aiguille de la pendule arrive à la verticale. C'est le signe que le temps imparti au joueur est épuisé. Il "perd au temps" même s'il était sur le point d'écraser son adversaire.
Temps incrémental - Pendule de Fischer,
pendule de Bronstein
Lorsqu'un joueur est sur le point d'épuiser son temps - les allemands parlent de situation de zeitnot - il peut être amené à jouer très rapidement les coups suivants, ce qui nuit à la qualité du jeu. Il peut aussi perdre la partie faute de temps, même s'il était dans une situation de supériorité écrasante. Le problème posé par ce couperet mortel n'a pu être résolu que lorsque l'électronique, à la fin des années 80, fut assez avancée pour permettre de mettre en oeuvre des horloges capables de décomptes beaucoup plus complexes.
L'un des systèmes les plus utilisés a été inventé en 1988 par l'ancien champion du monde Bobby Fischer. La pendule de Fischer ajoute à chaque coup joué un temps dit "incrémental", variant de quelques secondes pour une partie blitz à quelques minutes pour les parties longues. Ainsi, lorsque le joueur a épuisé son temps, il lui reste toujours quelques secondes pour jouer un coup et éviter le zeitnot.
Dans le système de Fischer, le temps incrémental non consommé s'ajoute au temps total. Il n'est pas perdu. Le joueur russe David Bronstein a proposé une variante, dans laquelle le temps incrémental non-consommé est perdu.
Prenons l'exemple de l'application du système Fischer lors d'une partie longue de championnat: chaque joueur dispose d'un crédit de temps de 1h40 pour 40 coups. Chaque fois qu'un joueur joue un coup, il arrête sa pendule mais voit son crédit de temps incrémental augmenter de 30 secondes. Ce qui représente 20 minutes supplémentaires pour les 40 premiers coups.
Au 41eme coup débute la seconde période, d'une durée d'une demi-heure. A la fin de cette première période de 40 coups on rajoute donc une demi-heure pour la fin de la partie, plus à nouveau 30 secondes de temps incrémental par coup.
E.
ECO - Encyclopédie des ouvertures d'échecs
Au milieu des années 70, un grand maître d'échecs Serbe, Aleksandar Matanovic, a conduit un projet consistant à construire, à partir de l'examen de milliers de parties de grands maîtres, une véritable encyclopédie des ouvertures. En 1974, la société Serbe l'Informateur d'échecs a publié en cinq volumes les résultats de ces travaux, sous le nom d'Encyclopaedia of Chess Openings - plus connue aujourd'hui sous l'abréviation "ECO".
Chaque ouverture et ses variantes ont été classées et codées dans ces cinq volumes intitulées A, B, C, D et E. Le code est de la forme "Lettre majuscule de A à E et chiffre de 00 à 99".
Le volume A regroupe les ouvertures :
A0 : de flanc diverses
A1 à A3 : ouvertures anglaises
A4 à A7 : défenses Benoni et indiennes diverses
A8 et A9 : défense hollandaise
Le volume B les ouvertures :
B0 : débuts semi-ouverts divers
B1 : défense Caro-Kann
B2 à B9 : défense sicilienne
Le volume C les ouvertures :
C0 et C1 : défense française
C2 à C5 : débuts ouverts divers
C6 à C9 : ouvertures espagnoles
Le volume D les ouvertures :
D0 à D6 : débuts fermés et gambit dame
D7 à D9 : défenses Grünfeld et néo-Grünfeld
Le volume E les ouvertures :
E0 : catalanes
E1 : défenses bogo-indienne et ouest-indienne
E2 à E5 : défense nimzo-indienne
E6 à E9 : défense est-indienne
Au fil du temps - et surtout à partir du moment ou l'encyclopédie a été diffusée sous la forme numérique de la base ECO, cette codification a été largement adoptée par les joueurs d'échecs, au point qu'elle est devenue quasiment officielle.
Toutefois, ces dernières années, le système ECO a été très souvent critiqué comme étant insuffisant pour caractériser les jeux modernes. C'est pourquoi des versions étendues ont été proposées. Dans l'une d'elles, devenue plus populaire que les autres, les ouvertures sont caractérisées par une lettre minuscule supplémentaire (de a à z) et par un chiffre de 1 à 4. Ainsi, il y a une ouverture E99 dans la base ECO standard et par exemple une ouverture E99b2, variante de la précédente, dans la base ECO étendue.
Scid vs PC, gestionnaire de bases de parties gratuit, propose à la fois la version ECO standard et la variante étendue.
Editeur de positions
Dans un programme d'échecs, l'éditeur de positions est un module qui permet de créer de toutes pièces - c'est le cas de le dire - une position d'échecs, en déterminant de plus qui est au trait et si des possibilités de roques ou de prise en passant sont encore possibles. Éventuellement, l'éditeur permettra aussi de choisir une règle du jeu alternative, telle que par exemple les "échecs 960".
L'éditeur de positions d'Arena
En général l'éditeur part d'un échiquier vide et vous permet de poser les pièces sur l'échiquier, de changer la couleur d'une pièce ou de l'effacer avec la seule souris et ses boutons gauche et droite. Mais très souvent on part de la position courante d'une partie en train d'être jouée ou encore d'une partie en cours de relecture.
Une fois l'édition terminée, on sauvegarde la position au format Pgn ou Fen. Elle pourra être relue par les interfaces d'échecs les plus courantes, gratuites ou payantes. Il est fréquent aussi qu'on puisse tout de suite commencer à jouer à partir de la position éditée.
Arena, Lucas Chess et Crafty Chess Interface disposent chacun d'un bon éditeur de positions. Bizarrement, Scid vs PC n'en a pas - et c'est bien à peu près tout ce qui lui manque.
Le serveur de parties en ligne Lichess en a un assez bon, indispensable pour développer les "studies", intéressants petits ensembles pédagogiques développés par les membres.
L'éditeur de positions de Lichess
Élagage alpha-beta
Voir "Minimax"
Élagage précoce
Un moteur algorithmique possède deux fonctions principales : la recherche et l'évaluation. La recherche consiste à générer l'arbre des coups consécutifs à un mouvement sur le plateau. Mais son rôle est également d'éliminer aussi vite que possible les portions de l'arborescence qui ne mènent à rien de bon. Cet élagage des branches "mortes" est indispensable car l'arbre devient très vite extrêmement grand et ne saurait être exploré en totalité par le moteur, sans réduction.
La première manière de minimiser l'arbre est de recourir à une routine dite "alpha / bêta", une forme d'élagage rétrograde utilisé par presque tous les moteurs algorithmiques. Mais pour réduire de manière plus agressive l'arbre de recherche les moteurs d'échecs utilisent aussi très souvent des heuristiques dites "d'élagage précoce".
Voici schématiquement comment cela fonctionne : chaque position sur laquelle passe la recherche est transmise à l'évaluation afin qu'elle soit examinée sommairement. Cette évaluation "paresseuse" va consister par exemple à calculer le poids total des pièces puis à consulter une table pieces/case afin d'obtenir un jugement rapide sur la valeur positionnelle du coup. Si cette mini-évaluation rend un score très mauvais, toute la branche est abandonnée, ce qui fait gagner beaucoup de temps au moteur ; il pourra explorer plus profondément les branches les plus prometteuses.
Malheureusement, tous les procédés d'élagage ont le même défaut : étant donné que la décision de scier une branche provient d'une analyse sommaire, l'élagage précoce va inévitablement sacrifier par erreur certaines positions qui auraient pu donner d'excellents résultats. Le cas typique est celui d'un sacrifice de pièce ignoré par l'évaluation en raison de son coût matériel alors qu'il permettait plus loin une amélioration significative de la position, voire un mat forcé.
Sur un moteur moderne, les procédés d'élagage sont extrêmement performants et laisseront passer peu de bonnes occasions. Il est néanmoins souvent proposé de régler le niveau d'agressivité des différentes heuristiques. Sur le plan pratique, il faut retenir ceci : un élagage agressif fait gagner de la force (beaucoup) mais diminue la qualité du jeu (un peu). Pour le dire autrement, il augmente les capacités tactiques du moteur mais diminue sa maîtrise de la position. Si la possibilité vous est offerte de désactiver certaines routines d'élagage ou de diminuer leur agressivité, évaluez-en l'opportunité en fonction de votre objectif. Si par exemple vous utilisez le moteur pour l'analyse, vous aurez probablement intérêt à réduire l'agressivité de l'élagage. Mais il faudra compenser en accroissant sensiblement le temps laissé au moteur pour examiner chaque position.
Les heuristiques d'élagage précoce les moins spécialisées s'affichent dans les menus de configuration des moteurs sous le nom générique de "pruning". Vous verrez aussi parfois la fameuse "lazy evaluation" (évaluation paresseuse), que vous aurez à désactiver ou conserver. Mais vous aurez aussi assez fréquemment à régler des procédés d'élagage plus spécialisés :
➤"futility pruning" (élagage de futilité),
➤"null move pruning" ou "null move reduction" (élagage du mouvement nul)
➤"late move reduction" ou LMR (réduction des mouvements tardifs), appelé aussi parfois "History pruning"...
➤"razoring" (rasage)
Voir aussi "Minimax et élagage alpha-beta"
Elo
Le Elo est un système assez complexe de notation des joueurs que je ne vais pas expliquer ici. Je supposerai que le lecteur sait déjà de quoi il s'agit et je me contenterai de soulever quelques points utiles pour l'utilisateur de logciels d'échecs.
Les meilleures joueurs humains dépassent les 2850 Elo. C'est le norvégien Magnus Carlsen qui a obtenu le Elo le plus élevé jamais enregistré : 2882 en 2019. Ce sont toutefois des performances rarissimes. Par contre, plus d'une centaine de moteurs, commerciaux ou gratuits, dépassent aujourd'hui les 3000 Elo. Stockfish, le plus fort, affiche 3645 Elo*, chiffre formidable qui montre que l'ordinateur et l'humain ne jouent plus dans les mêmes catégories.
Sauf rares exceptions, les moteurs n'affrontent plus aujourd'hui les joueurs humains dans les compétitions qui pourraient établir leur Elo respectif. Les humains sont classés d'un côté, les moteurs de l'autre. Il n'y a pas déconnexion totale, car au départ les moteurs et les humains étaient évalués ensemble. Mais une comparaison directe n'est plus possible. On ne peut donc pas vraiment dire que Stockfish vaut 760 Elo de plus que Magnus Carlsen. Par contre, il est sûr et certain que ce moteur est bien plus fort que le champion du monde norvégien.
Toutefois la question du Elo se pose bien différemment pour les moteurs que pour les joueurs humains. Si vous faites tourner un moteur d'échecs avec un vieux portable à simple coeur et 2 Go de ram, vous n'aurez pas le Elo promis par les classements, loin de là. C'est pourquoi les sites qui effectuent ce genre d'évaluation utilisent toujours la même configuration matérielle, assez puissante, et les mêmes conditions d'utilisation pour effectuer ces tests. C'est le cas par exemple pour le site CCRL, référence en la matière. Plus de 440 moteurs y sont classés et réévalués fréquemment.
* Note de CCRL 40/15 en novembre 2024
EPD (Extented Position Description)
Le format EPD, ou en français "format de description étendue", a été développé au début des années 90 par John Stanback et Steven Edwards, à partir du format FEN. C'est aussi un standard de description de positions d'échecs, qui utilise d'ailleurs en grande partie les mêmes méthodes de traduction de la position que le format FEN.
Comme les fichiers FEN, les fichiers EPD sont physiquement de simples fichiers textes utilisant uniquement les caractères ASCII et pouvant être modifiés avec le plus basique des éditeurs de textes. Ils ont l'extension ''*.epd''.
Là où le format EPD se différencie, c'est par sa capacité à échanger données et commandes avec les logiciels d'échecs. Il est ainsi utilisé pour collecter des résultats de tests de moteurs d'échecs ou des données puisées dans des bases de parties, afin de constituer des bibliothèques de situations spécifiques ou de configurations de mat, qui seront ensuite utilisées par l'interface pour organiser des exercices tactiques du type "trouver le mat en x coups".
Tous les joueurs sur ordinateur connaissent le format Pgn et le format Fen mais très peu savent ce qu'est le format EPD, alors que la plupart des logiciels avancés l'utilisent. C'est parce que l'EPD sert rarement à afficher une position quelconque sur un échiquier, comme le FEN. Les programmes manipulent le format, tout en le cachant plus ou moins à l'utilisateur, qui n'a pas vraiment besoin de savoir qu'il est là. C'est le cas par exemple de Scid vs PC, qui l'emploie pour la gestion de ses exercices tactiques alors qu'on n'en trouve strictement aucune trace dans les menus. Seul l'aide interne de Scid nous apprend que l'interface l'utilise. Par contre Arena lit et sauvegarde les Epd et autorise leur manipulation.
Un moteur d'échecs algorithmique comprend deux fonctions principales : la recherche, qui génère l'arbre des coups et élague les branches non-productives, et l'évaluation qui détermine la valeur d'une position donnée. Pour rester très général, le principe de l'évaluation est d'examiner successivement un certain nombre de critères, d'appliquer un bonus ou un malus à chacun d'eux puis à faire le total des bons et des mauvais points, ce qui permet d'attribuer une note à la position.
Les critères examinés sont très variables d'un moteur à l'autre. Ils sont de deux types : matériels et positionnels.
Le critère matériel principal est évidemment la mesure du poids des pièces de la position, pour le moteur et pour l'adversaire.
La variété des critères positionnels pouvant être mobilisée est considérable. En voici quelques uns de fréquemment employés dans l'évaluation : bonus pour un roi mis en sécurité par un roque, bonus pour avoir un pion au centre, bonus pour avoir une bonne structure de pions, bonus pour avoir un pion passé, bonus pour un pion qui s'approche de la 8eme rangé, bonus pour avoir une tour sur la 7eme rangée, bonus pour des cavaliers proches du centre, malus pour avoir des pions isolés, doublés ou arriérés, malus pour un roi qui ne peut plus roquer, malus pour un roi placé dans une colonne ouverte, malus pour des cavaliers sur les bords ou des tours obstruées, etc.
Le score obtenu pour une position est inscrit dans une table et la recherche poursuit l'exploration de l'arborescence. Lorsque toutes les réponses ont été examinées - ou lorsque le temps imparti ou la profondeur fixée sont atteints - le coup ayant généré le meilleur score pour le moteur est joué.
F.
FEN - Forsyth-Edwards Notation
Le format FEN est un système de description d'une position d'échecs qui remonte à loin puisqu'il a été inventé par l'écossais David Forsyth au 19ème siècle. Le système est simple et ne nécessite que peu de caractères. Rien d'étonnant à ce qu'il soit devenu quasiment universel en informatique et accepté par tous les programmes d'échecs sérieux.
Le format FEN comporte six champs séparés par un espace. Le premier, le plus imposant, correspond à la description des pions sur le tableau. Cette description part de la case haut-gauche et descend vers la case bas-droite. Chaque rangée est décrite de gauche à droite et séparée des autres par un "/". Les lettres majuscules sont utilisées pour les pièces blanches, les lettres minuscules pour les pièces noires. Une lettre indique la présence d'une pièce, un chiffre indique le nombre de cases vides jusqu'à la prochaine pièce.
Voici un exemple d'une position FEN complète :
rn2k2r/1p1bqppp/2p1pn2/b5N1/2pP1P2/P1N3P1/3BP1BP/R2Q1RK1 b kq - 1 13
Il correspondant à cette configuration :
"rn2k2r" est la description de la rangé du haut, de gauche à droite :
r = tour (rook) noire tout à gauche
n = cavalier (kNight)
2 = 2 cases vides
k = roi (king) noir
2 = 2 cases vides
r = seconde tour noire
"1p1bqppp" décrit la rangée immédiatement en dessous :
1 = 1 case vide
p = 1 pion noir
1 = 1 case vide
b = fou (bishop) noir
q = reine (queen) noire
p = 1 pion
p = 1 pion
p = 1 pion
Etc.
Le dernier groupe, "R2Q1RK1", correspond à la rangée du bas de l'échiquier :
R = tour blanche
2 = 2 cases vides
Q = dame blanche
1 = 1 case vide
R = seconde tour blanche
K = roi blanc
1 = 1 case vide
Comme vous pouvez le voir, cela correspond bien à notre position-exemple.
Le groupe de lettre et de chiffres suivants sert à fixer le statut des joueurs à la position donnée:
Joueur au trait
"w" indique que c'est aux blancs de jouer ; "b" si c'est aux noirs. Ici c'est donc aux noirs de jouer.
Situation vis-à-vis du roque
Un groupe de 2 lettres a pour fonction de fixer la situation vis-à-vis du roque. Pour cela on utilise les lettre ''KQ'' et ''kq''. ''K'' correspond au petit roque des blancs, ''Q'' au grand roque des blancs, ''k'' au petit roque des noirs et ''q'' au grand roque des noirs
Les lettres manquantes signifient que le roque n'est plus possible d'un côté ou de l'autre.
S'il n'y a plus de roque possible de part et d'autre, on utilise le symbole "-".
Dans l'exemple, nous avons "kq" qui signifie : noir conserve ses deux possibilités de roque ; blanc n'en a plus.
Prise en passant
Si une prise est possible, la case est spécifiée sous forme de notation algébrique standard. Sinon on affiche un symbole "-"
L'avant dernier champ indique le nombre de demi-coups depuis la dernière capture ou la dernière poussée de pion. Cette information permet aux logiciels de gérer la règle des 50 coups.
Enfin le dernier champ indique le nombre de coups ayant déjà eu lieu. Dans l'exemple nous en sommes au treizième. Ce chiffre est incrémenté chaque fois que les blancs jouent un nouveau coup.
Fichier de poids
Voir Réseau neuronal et algorithme classique
Fonction d'évaluation
Voir Moteur d'échecs, Evaluation, Elagage précoce
H.
Hashtables ou tables de transposition
Vous avez surement déjà entendu des parler des tables de hachage, mais à quoi servent-elle ? Essayons de résumer l'essentiel, au besoin en caricaturant beaucoup. Pour jouer un coup, un moteur d'échecs explore l'arbre des possibilités en les testant une par une dans l'ordre. Problème : l'arbre est immense et pour une même position donnée à l'arrivée, 15 ou 20 1/2 coups plus loin, il y a toujours un très grand nombre de combinaisons de coups possibles. Ce qui revient à dire que sans moyen d'y remédier, le moteur passerait une grande partie de son temps pour chaque nouveau coup, à re-tester inutilement des wagons de positions sur lesquelles il est déjà passé.
A quoi ça sert ?
Le remède c'est la table de hachage, encore appelée table de transposition, vous allez comprendre pourquoi. Chaque fois que le moteur a exploré une branche, toutes les positions déjà évaluées vont être codées sur 64 bits en hexadécimal, avant d'être stockées dans la table avec leur évaluation. Grâce à cette clef, le moteur a juste à lire la valeur de la position déjà évaluée et peut passer à la suivante sans refaire l'évaluation, ce qui procure au moteur un gain de temps considérable.
Il y a néanmoins un problème pratique... Le nombre de positions est énorme. Pour éviter de saturer la mémoire réservée à la table, le moteur va devoir faire sans cesse de la place en supprimant les entrées qu'il estime obsolètes. Mais s'il s'est trompé et que l'entrée effacée est à nouveau nécessaire, il devra refaire l'évaluation et non se contenter de lire la valeur associée. D'où l'importance de la taille réservée aux tables de hachage. Plus elle sera grosse plus le moteur sera rapide. A condition que la mémoire ram ne soit pas saturée !
Quelle taille choisir pour la table de hachage ?
La quantité de mémoire que vous devez attribuer à la table de hachage dépend de la puissance de votre matériel, de la quantité de mémoire vive disponible, du moteur, de sa puissance et du niveau auquel vous le faite jouer. Si votre Elo se situe à 1200 et que vous devez affronter un moteur à un niveau équivalent ou même un peu plus fort en blitz ou partie rapide, une table de hash de 32 Mo devrait être suffisante. Par contre si vous faites tourner sur 4 threads d'une machine moderne un moteur très puissant à son plus haut niveau, par exemple Stockfish, comme moteur d'analyse, vous avez intérêt à augmenter la taille de la table. 512 Mo est un minimum. Il serait même mieux de passer à 1 Go si vous avez 8 Go de ram car les moteurs tactiques comme Stockfish, qui fouillent en profondeur, saturent vite les tables de hachage. Mais attention à la panne de mémoire vive ! Ne mobilisez pas 1 Go si vous n'avez que 2 Go de mémoire !
Lorsque la ram est saturée, l'ordinateur recoure à la mémoire virtuelle, c'est-à-dire qu'il va utiliser le disque dur comme de la mémoire vive. Mais les accès-disque sont beaucoup moins rapides que les accès à la mémoire, même avec un disque dur SSD. D'où grave ralentissement, voire blocage. C'est pour cette raison qu'avant de lancer une partie d'échecs il est impératif de fermer toutes les applications en fonctionnement, en particulier les navigateurs Internet, afin de libérer un maximum de ram.
Les moteurs positionnels fouillent moins en profondeur et saturent moins vite les tables de hachage. Ils ont donc un peu moins besoin de grosses tables.
En résumé, plus vous utilisez de threads, plus vous sollicitez le moteur à un haut niveau de force, plus votre moteur est tactique, plus la table de hash doit être grosse. Et plus vous risquez la panne de ram.
Voir aussi : Comment régler une table de hachage ?
Interface utilisateur
Une interface d'échecs ou Chess GUI est un logiciel programmé pour envoyer des instructions de fonctionnement à un moteur d'échecs et pour récupérer les données de sa réflexion, dans le but de les afficher sur un écran pour les utilisateurs. Plus généralement, l'interface aura en charge de gérer l'ensemble de l'environnement de fonctionnement du ou des moteurs : elle affiche bien sûr l'échiquier et les pièces et gère les conditions de temps de la partie mais aussi l'accès à diverses tables (tables de finales, bibliothèques d'ouvertures), à divers modules de communication (exportation / importation de parties ou de positions), aux modules d'analyse, à la recherche de mat, etc.
Dans les années 90 à 2000, beaucoup de programmes d'échecs fonctionnaient avec une interface utilisateur actionnant un unique moteur d'échecs interne. Puis sont apparues les interfaces capables d'accueillir de nombreux moteurs différents. Pour fonctionner, ceux-ci doivent néanmoins parler un langage commun, le protocole de communication. Dans le domaine des échecs libres, on n'en compte plus que deux :
➤Le protocole xboard-Winboard, le plus ancien, relativement obsolète et pour cette raison moins en vogue aujourd'hui mais toujours utile pour faire fonctionner d'excellents vieux moteurs
➤Le protocole UCI, le plus moderne et le plus performant, utilisé universellement par tous les moteurs nouveaux depuis une dizaine d'années au moins.
Les interfaces d'Echecs & Informatique
Voici la liste des interfaces généralistes dont il est question sur ce site. Je n'ai pas mentionné celles qui permettent surtout de gérer des variantes (Chess V, CuteChess, FairyGround, Liground) ni Nibbler, excellente interface qui vaut surtout cependant pour Leela Chess Zero.
Arena
Arena est l'interface la plus universelle. Elle accepte sans problème l'immense majorité des moteurs UCI mais peut faire tourner également les moteurs Xboard, y compris les plus anciens, avec très peu d'échecs. En résumé :
Puissance et fonctionnalités : ++++
Moteurs xboard : ++++
Moteurs UCI : ++++
Lucas Chess
Lucas Chess a fait le choix de n'accepter que les moteurs UCI, avec lesquels, en revanche, il ne rencontre jamais de problème. C'est une interface très puissante mais aussi plus ludique qu'Arena. En résumé :
Puissance et fonctionnalités : ++++
Moteurs xboard : -
Moteurs UCI : ++++
Pychess
Pychess est une interface moderne qui nous vient du monde Linux. Elle accepte généralement assez bien les moteurs xboard comme les UCI mais elle n'est pas aussi universelle qu'Arena (j'ai constaté quelques échecs alors qu'Arena n'est jamais prise en défaut).
Puissance et fonctionnalités : ++++
Moteurs xboard : +++
Moteurs UCI : +++
Crafty Chess Interface
Crafty Chess Interface est une interface bourrée de qualité, très fun, et qui accepte les deux protocoles... mais sur laquelle beaucoup de moteurs dysfonctionnent. Un autre de ses défauts et de ne pas donner accès au menu de configuration des moteurs. En résumé :
Puissance et fonctionnalités : +++
Moteurs Xboard : ++
Moteurs UCI : ++
Scid vs PC
Scid vs PC est un cas à part car c'est d'abord un gestionnaire de parties et de données d'échecs. Mais c'est aussi une interface permettant de jouer aux échecs avec des moteurs différents. On est loin cependant de l'universalité d'Arena. L'intégration se passe parfois mal. Les moteurs UCI sont mieux acceptés que les moteurs Xboard qui, lorsqu'ils fonctionnent, ne peuvent de toute façon pas être utilisés comme adversaire par un joueur humain.
Puissance et fonctionnalités : ++++
Moteurs xboard : +
Moteurs UCI : +++
Mayura Chess Board Free
Mayura Chess Board Free est la version gratuite d'une interface shareware assez basique mais très bien conçue et assez mignonne. Elle accepte uniquement les moteurs UCI dont l'intégration est le plus souvent un succès. L'interface gère le réglage de Elo des moteurs UCI 2 mais la version gratuite ne permet pas l'accès au menu de configuration des moteurs.
Puissance et fonctionnalités : ++
Moteurs xboard : -
Moteurs UCI : +++
Xboard / Winboard
Technologiquement dépassée, l'interface xboard / Winboard est assez complexe d'utilisation. Elle n'est presque plus utilisée aujourd'hui, bien qu'elle sache très bien faire fonctionner les vieux moteurs xboard. Elle est aussi encore utile pour employer tous les vieux moteurs de variantes, que l'interface gère très bien.
Les dernières versions de Xboard acceptent les moteurs UCI grâce à la médiation de Polyglot, un logiciel qui effectue en quelque sorte une traduction à la volée des données reçues par le moteur UCI, afin que l'interface puisse l'utiliser. Cela échoue toutefois souvent. En résumé :
Puissance et fonctionnalités : +++
Moteurs Xboard : ++++
Moteurs UCI : ++
EsChecs
EsChecs est l'interface la plus minimaliste. L'avantage est la simplicité d'utilisation. L'inconvénient est qu'on ne lui demandera guère autre chose que d'animer le plateau et les pièces. EsChecs peut accueillir de nouveaux moteurs UCI ou des winboard convertis avec WB2UCI. En général, ça fonctionne ; mais on ne peut accéder à aucun menu de configuration.
En résumé :
Puissance et fonctionnalités : +
Moteurs Xboard : +
Moteurs UCI : ++
M.
Moteur d'échecs
Un moteur d'échecs est un ensemble d'algorithmes qui permettent à un programme de jouer en respectant les règles du jeu - et si possible en étant assez intelligent pour offrir un adversaire informatique assez fort pour contenter les bons joueurs humains. C'est en quelque sorte le cerveau du programme d'échecs.
Les moteurs d'aujourd'hui sont plus forts que les meilleurs joueurs humains. Il n'en reste pas moins que, seuls, ils ne sont pas capables de grand chose. Pour être utilisés, il leur faut une interface graphique. Et pour la faire fonctionner, un protocole de communication permettant à l'interface de communiquer les conditions de la partie au moteur et d'être informée non seulement des coups de celui-ci mais aussi d'un certain nombre d'informations telles que par exemple l'état de la réflexion du moteur.
Protocoles de communication
Il fut un temps ou chaque programme d'échecs, commercial ou gratuit, avait son propre moteur interne et celui-ci communiquait avec son interface selon un protocole conçu spécialement pour lui. C'est de moins en moins vrai aujourd'hui, même pour les grands produits commerciaux. C'est le monde du logiciel libre et gratuit qui a donné le La au début des années 90. Lorsque GnuChess et les premiers moteurs d'échecs libres et performants commencèrent à apparaître, la nécessité d'une interface graphique pouvant d'abord accepter GnuChess, puis les autres moteurs libres, a germé. Cela a donné naissance, en 1990, aux premières versions de Xboard, utilisable initialement sur les systèmes Unix : Gnu, Linux et Bsd. Dans un second temps est apparu Winboard, version Windows de Xboard.
Pour que GnuChess puisse communiquer avec Xboard, les auteurs de l'interface ont conçu un protocole de communication appelé Chess Engine Communication Protocol ou CECB. Mais ce nom ne s'est jamais imposé et le protocole est resté connu sous le nom de l'interface : Xboard / Winboard.
Le protocole a été abondamment documenté pour permettre aux développeurs des moteurs d'adapter leurs produits ; en 2004 plus de 250 moteurs pouvaient déjà fonctionner sans trop de problème avec Xboard et Winboard. Parmi eux, Crafty, le premier moteur libre d'une force comparable aux meilleurs moteurs commerciaux. En résumé le protocole CECB est devenu un standard dans le monde du logiciel libre et gratuit.
Quelques années plus tard, un autre protocole est apparu : l'UCI (Universal Chess Interface). Les premières versions ont été libérées en 2000, dix ans après Xboard. il s'est imposé lentement mais sûrement. Plus moderne et plus facile à utiliser, il permet à l'interface de régler finement le fonctionnement du moteur. Actuellement, les moteurs libres les plus performants et les plus récents sont tous sans exceptions des UCI. D'excellents anciens moteurs Winboard sont convertis en moteur UCI grâce au logiciel Winboard to UCI (ou Wb2UCI). Malheureusement, ce n'est pas une application d'usage courant et les conversions sont plutôt rares. Heureusement, certaines interfaces (Arena par exemple) sont capables de faire tourner sans problème les moteurs Xboard - ce qui est un bien car certains de ces vieux moteurs sont vraiment excellents. Justement, faisons un petit point rapide sur les interface gratuites disponibles...
Moteur d'échecs alogorithmiques
Un moteur d'échecs algorithmique possède toujours au moins deux composants de base : un algorithme de recherche et une fonction d'évaluation de positions.
Le rôle du module de recherche est d'explorer l'arborescence des coups possibles pour sélectionner les lignes de coups les meilleures. La tache de la fonction d'évaluation est de donner une note à une position sur laquelle le moteur passe. Le processus de "réflexion" du moteur est donc un fonctionnement en réalité très mécanique - quelle que soit sa sophistication. Les meilleurs moteurs algorithmiques sont précisément ceux qui arrivent à nous donner l'illusion d'une pensée humaine.
La fonction d'évaluation
La fonction d'évaluation est essentiellement une opération de comptage. Elle commence par faire le bilan matériel de la position, en attribuant par exemple 100 points pour chaque pion, 315 par cavalier, 330 par fou, 500 pour une tour, 940 pour une dame...
Même les évaluations les plus simples sont capables de traduire en points certains éléments positionnels. Elles pourraient par exemple compter un point pour chaque case accessible aux fous ou aux tours, permettant ainsi de déterminer la capacité d'action de ces pièces. La mobilité d'un camp peut d'ailleurs être mesurée en comptant toutes les cases accessibles à chacune des pièces.
La fonction d'évaluation intègre de nombreux mécanismes de bonus/malus. Il sera ainsi procédé à une soustraction de points pour un roi n'ayant pas encore pu roquer après l'ouverture, un cavalier coincé dans un coin, une tour complètement bloquée, un pion doublé, arriéré ou isolé... Inversement, certaines configurations favorables peuvent être traduites en bonus. Un pion passé se verra par exemple attribuer immédiatement un important bonus de points. A chaque mouvement qui le rapprochera de la promotion, ce bonus sera majoré. Autres exemples : un pion placé au centre bénéficiera aussi d'un fort bonus ; les fous étant beaucoup plus efficaces par paire, une paire de fous obtiendra également un bonus, etc.
Pour évaluer sa propre position, le moteur soustrait à ses points ceux de l'adversaire, joueur humain ou autre moteur. Si le résultat de l'évaluation est positif, cela signifie que la position lui est plus favorable.
L'algorithme de recherche
L'algorithme de recherche poursuit l'exploration des mouvements découlant de la position initiale. Il faut comprendre que l'évaluation est purement statique. Il se peut fort bien qu'une position jugée très bonne aboutisse quelques coups plus loin à un mat certain. C'est pourquoi le module d'évaluation est dynamiquement relié à l'algorithme de recherche. Et la qualité de cette liaison fera beaucoup pour l'efficacité de la recherche et pour la puissance du moteur. Voyons comment cela fonctionne en simplifiant à l'extrême : une fois déterminée une position considérée comme très favorable par l'évaluation, le moteur génère les coups suivants et sollicite à nouveau l'évaluation pour chacun d'eux. Si lors de la poursuite de l'exploration la recherche constate qu'une position très bien notée initialement aboutit à un mat, à une perte importante de matériel ou simplement à une position rédhibitoirement mauvaise, toute la branche sera bien sûr abandonnée.
Plus humain ou plus rapide en calcul ?
Plus l'évaluation est sophistiquée et plus le jeu du moteur semblera humain et motivé par des impératifs positionnels. Charger la fonction d'évaluation peut d'ailleurs affaiblir la force d'un moteur. Ainsi, Rodent IV a perdu environ 70 points de Elo par rapport à Rodent III. Il est un peu moins fort certes, mais son jeu est de meilleur qualité et d'aspect plus humain que son prédécesseur. Les programmeurs peuvent donc suivre plusieurs stratégies différentes : se concentrer sur la qualité de l'évaluation, ce qui suppose presque nécessairement que la recherche sera moins rapide mais le jeu davantage positionnel. Ou optimiser au maximum la recherche, ce qui rendra le moteur tactiquement plus fort.
Il y a eu une époque où la course au Elo le plus élevé à conduit les programmeurs à s'appuyer sur le point fort des ordinateurs : leurs énormes capacités de calcul. Cela a donné des moteurs très forts mais au jeu d'apparence très peu humaine. Les coups joués, motivés par des considérations trouvant leurs raisons dans des positions très éloignées dans l'arborescence, devenaient incompréhensibles. Ce déséquilibre au profit de la tactique est beaucoup moins visible aujourd'hui. Les moteurs forts sont beaucoup plus équilibrés même si certains sont à l'évidence plus riches en connaissances positionnelles que d'autres qui s'appuient davantage sur les capacités tactiques.
Moteurs programmables
Certains paramètres de la fonction d'évaluation peuvent parfois être modifiés directement par l'utilisateur. Cela permet d'obtenir des styles de jeu différents pour le même moteur. Nous sommes alors en présence d'un moteur programmable. Un moteur comme CDrill permet ainsi d'agir sur six critères différents, pour obtenir un jeu plus ou moins mobile, plus ou moins défensif ou agressif, plus ou moins positionnel...
Un moteur comme Rodent IV, beaucoup plus sophistiqué, permet de régler plus de 60 paramètres. Ce qui permet à ce moteur d'être utilisé pour reproduire avec précision le style d'un joueur. Entre les deux, nous avons eu le moteur The King, de Chessmaster, qui, avec ses 26 paramètres, a été le premier moteur capable d'imiter le jeu de grands maîtres humains.
Voir aussi :
Elagage précoce
Evaluation
Minimax et élagage alpha-beta
Moteurs à intelligence neuronale
A ma connaissance, le premier moteur accessible au grand public utilisant un réseau de neurones artificiels a été Chessterield CL, diffusé entre 1998 et 2000. La puissance des ordinateurs de l'époque étaient cependant insuffisante pour que cette technologie nouvelle prennent son envol. Il faudra attendre plus de 20 ans pour qu'apparaisse Leela Chess Zero, puis pour que le réseau neuronal soit intégré sous forme de noyau "NNUE" dans le moteur algorithmique des moteurs les plus modernes et les plus forts. Je n'entre pas dans le détail ici. Lisez plutôt dans ce glossaire :
Réseau neuronal (moteur à réseau neuronal)
NNUE - Efficiently Updatable Neural Networks
La plupart des moteurs d'échecs intègrent un algorithme dit "Minimax", dont la fonction consiste à explorer la totalité de l'arbre des coups possibles jusqu'à une certaine profondeur, en assignant à chaque position une valeur basée sur son évaluation du bénéfice pour le joueur et pour son adversaire.
Le problème de l'algorithme Minimax est qu'il lui faut beaucoup de temps pour explorer toutes les branches à grande profondeur. C'est pourquoi les minimax sont toujours associés à des algorithme dit "d'élagage alpha-béta" dont la fonction consiste à couper le maximum des branches filles de l'arbre qu'ils ont de bonnes raisons de considérer comme peu productives. Les branches élaguées le sont souvent par comparaison avec l'évaluation d'une branche "soeur" (issues du même noeud supérieur) déjà explorée et qui sera nécessairement meilleure.
Ce système d'élagage "de base" permet à l'algorithme minimax d'explorer à une profondeur beaucoup plus grande, avec un risque faible - s'il est bien conçu - d'ignorer des branches valables. Mais beaucoup de moteurs lui associent des heuristiques d'élagage "précoce", qui permettent une réduction plus agressive de l'arbre de recherche (voir "Elagage précoce")
Ces définitions sont vraiment "à la hache", je le reconnais, mais il ne s'agit pas ici d'apprendre aux joueurs d'échecs à programmer des moteurs, juste à ce qu'ils sachent de quoi on parle et comment leurs réglages vont influer sur les performances d'un moteur. Pour explorer ces notions en détails, je vous invite à lire ce document en pdf. On y fait le point de façon assez clair et concise sur l'élagage.
MultiPv
La plupart des interfaces sont en
mesure d'afficher le cours de la réflexion du moteur, c'est ce qu'on appelle couramment la "sortie". Vous avez certainement déjà remarqué avec Arena, par exemple, que lorsque c'est au tour du moteur de jouer, il étudie une séquence de coups, l'abandonne pour une autre, puis pour une troisième, une quatrième, etc, à la recherche du meilleur coups à jouer. La meilleur ligne trouvée par le moteur à l'instant T s'appelle la variation principale ou PV. Ce travail est fait séquentiellement. Le MultiPV lui permet de le faire simultanément. Cela peut être très utile dans le cadre d'un travail d'analyse de positions. Beaucoup de moteurs proposent d'ailleurs le MultiPV en option (le paramètre par défaut étant toujours sur "1", c'est-à-dire que le MultiPV est désactivé).
CDrill 1800 explore en même temps une variation principale et une variation secondaire...
Le Multi-PV est un outil délicat, qui n'est pas toujours bien utilisé. Si vous demandez à votre moteur de suivre plusieurs pistes simultanément, le jeu pourra sur le long terme gagner en précision et qualité, mais sans allongement sensible du temps de réflexion, ce qui se passera concrètement c'est une baisse du niveau de force. Il est facile de comprendre pourquoi : le temps de réflexion de l'ordinateur est divisé par deux lorsqu'il y a deux variations, par trois quand il y en a trois… Sur l'exemple ci-dessous, donné par Michele Tumbarello Alessandro, on observe la chute de performance Elo du moteur Greko 7 en fonction du nombre de pistes suivies par son Multi-PV.
(ce test est basé sur 1200 parties contre d'autres moteurs, timing 10+0, où Greko 7.1 est réglé à 2000 noeuds par secondes, tous les autres paramètres étant sur les valeurs par défaut).
On comprend que si l'objectif est d'obtenir d'un moteur sa force de jeu maximale, il vaut mieux désactiver le Multi-PV. Par contre si vous utilisez le moteur comme outil d'analyse ou de conseil et que vous pouvez lui laisser le temps qu'il faut pour explorer en profondeur, la qualité de l'analyse pourrait être meilleure.
A noter : lorsque qu'on utilise le mode MCTS ("Monté Carlo") de Komodo 12, 13 et 14, le Multi-Pv est en quelque sorte gratuit, ne consommant pratiquement pas de ressources supplémentaires. Cela tient à la méthode d'évaluation MCTS, très différente de l'évaluation algorithmique classique (voir à ce sujet "Le mode Monté-Carlo : avantages, inconvénients et restrictions").
Quoi qu'il en soit, si vous comptez demander à un moteur puissant d'explorer en même temps plusieurs pistes, mieux vaut quand même avoir une machine multi-coeurs et une bonne réserve de ram.
N.
NNUE
NNUE est un acronyme obtenu par l'inversion des premières lettres de Efficiently Updatable Neural Networks. C'est une forme particulière de réseau neuronal, conçue initialement par le japonais Yu Nasu pour développer un moteur de shogi. En termes simples, ce moteur, au lieu d'une fonction d'évaluation algorithmique classique, utilise un réseau de neurones à quatre couches qui n'a pour fonction que de choisir quelques coups candidats, en se basant sur la connaissance positionnelle profonde du réseau. En effet, l'évaluation neuronale est trop lente pour explorer dans le détail à très grande profondeur.
Une fois fait le choix des premiers coups, le réseau NNUE passe le témoin aux algorithmes classiques, qui vont continuer à explorer en profondeur les branches choisies grâce à leurs routines ultra-rapides.
Stockfish a été le premier moteur d'échecs à adopter ce système, avec beaucoup de succès puisqu'il a obtenu dès les premiers essais, sur la version 12, un gain de force de l'ordre d'une centaine de points Elo. Un bon considérable, alors même que le moteur évalue deux fois moins de positions que la version algorithmique.
Komodo (version dite "Dragon"), Fritz et Leelenstein, trois moteurs commerciaux, ont également été dotés d'une évaluation NNUE ; beaucoup d'autres moteurs ont suivi...
Outre le gain considérable en force, déjà évoqué, les avantages d'un moteur NNUE sur un moteur 100% neuronal comme Leela Chess Zero réside principalement dans le fait que n'ayant plus à subir sur la totalité de l'exploration la lenteur du réseau neuronal, il n'a pas besoin d'une carte graphique puissante pour bien fonctionner. Un bon CPU lui suffit. Il est également beaucoup moins gourmand en mémoire vive.
L'incorporation d'un noyau neuronal a permis aux moteurs algorithmiques de reprendre nettement l'avantage sur Leela Chess Zero, qui menaçait de prendre le large. En utilisant en somme l'arme de l'adversaire...
Voir aussi : Réseau neuronal et algorithme classique
Notation algébrique
La notation algébrique est un système de notation des parties d'échecs très ancien puisqu'il a été élaboré par Philippe Stamma en 1737. Pourtant c'est la notation descriptive, plus complexe, qui s'est imposée. Du moins jusque dans les années 70. A partir de là, la notation algébrique est revenue puis est devenue le format standard de notation des parties d'échecs, sous une forme simplifiée dite "notation algébrique abrégée". C'est même aujourd'hui le format officiel de la Fédération internationale des échecs. L'une des raisons de ce succès tardif est que la notation algébrique est facilement informatisable et qu'elle a été le système de notation adopté pour le format de fichiers PGN (Portable game Notation), aujourd'hui quasi-universel.
Les coordonnées
La notation distingue d'abord les 8 rangées, notées de 1 à 8 des blancs aux noirs, et les 8 colonnes, notées de a à h, de gauche à droite. Il y a par ailleurs 26 lignes obliques, qui ne font l'objet d'aucune notation. Avec ce système, chaque case à des coordonnées correspondantes au croisement entre une rangée et une colonne. Par exemple au début d'une partie le pion-roi pour les blancs est sur la case e2.
Les pièces
La notation algébrique met en oeuvre un système simple pour caractériser les pièces : chaque pièce, à l'exception des pions, est représentée par une lettre unique. Ce code change en fonction de la langue utilisée. Pour nous, francophones, il faut connaître la notation en français et en anglais - car l'anglais est utilisé dans les échanges internationaux et par le format de fichier PGN. Voici ces codes :
Roi : R en français, K (king) en anglais
Dame : D en français, Q (queen) en anglais
Tours : T en français, R (rook) en anglais
Fous : F en français, B (bishop) en anglais
Cavaliers : C en français, N (kNight) en anglais
Pions : pas de caractérisation.
L'expérience montre qu'il est tout à fait inutile d'avoir des codes distincts pour les deux tours, les deux fous et les deux cavaliers. Ni pour les 8 pions.
Autre remarque : avec les programmes informatiques, la lettre de pièce est souvent remplacée par un petit symbole représentant la pièce sans ambiguïté. C'est plus lisible et ce système se joue des différences dues au langage.
La notation
La notation algébrique utilise les éléments vus ci-dessus de la manière suivante : pour caractériser un déplacement, on indique la pièce (sauf pour les pions), les coordonnées de la case de départ, l'action, qui peut-être un simple déplacement ("-"), un déplacement avec prise ("x"), et les coordonnées de la case d'arrivée.
Exemples :
e2-e4 : pion e2 se déplace en e4
Cg1-f3 : cavalier g1 se déplace en f3.
Cf6xe4 : cavalier f6 prend le pion sur la case e4.
La promotion a une notation particulière, de même que le roque.
La promotion se note avec à la fin du coup la lettre de pièce choisie pour la promotion : "D" ou "Q" (promotion en dame), "T" ou "R" (promotion en tour), "F" ou "B" (promotion en fou) et "C" ou "N" (promotion en cavalier).
Exemple : e7-e8D (français) ou e7-e8Q (anglais). Le pion e7 se déplace en e8 et se voit promu en dame.
Le roque se note "O-O" pour le coté roi (petit roque) et "O-O-O" pour le coté dame (grand roque).
La prise en passant se note "e.p"
Lorsque le roi est mis en échec, on le signale par un "+"
Lorsque le roi est mat, on l'indique par un "#" ou par "++".
Lorsqu'un joueur demande à l'autre s'il accepte la nullité de la partie on l'indique par "(=)".
Les coups sont numérotés en commençant par 1. Un coup comprend deux 1/2 coups, soit un déplacement pour blanc et un pour noir. Ce qui donne par exemple :
1. e2-e4 Cg8-f6
2. d2-d4 Cf6xe4
Commentaires abrégés
Par la suite la notation algébrique s'est enrichie d'une série de six codes constitués de "!" et de "?" destinés à caractériser un coup :
Très bon coup : "!!"
Bon coup : "!"
Coup intéressant : "!?"
Coup douteux : "?!"
Mauvais coup : "?"
Très mauvais coup : "??"
Ces codes sont les plus courants de la série des codes NAG, qui sont à présent plus de 150.
Notation algébrique abrégée
Du point de vue logique, le plus souvent les coordonnées de départ ne sont pas nécessaires, ni l'information annonçant la prise. L'écrémage de toutes les situations pouvant donner lieu à simplification a donné naissance à la notation algébrique abrégée, utilisée massivement en informatique (le format de fichier PGN l'utilise).
Les différences sont les suivantes :
1/ Les coordonnées de départ ne sont pas indiquées, sauf s'il y a ambiguïté. Dans la majorité des cas, une seule pièce peut prendre position sur la case d'arrivée. Ainsi e2-e4 devient e4 dans la notation abrégée.
2/ La pièce qui se déplace n'est pas précisée, sauf s'il y a ambiguïté. Si plusieurs pièces peuvent occuper la case d'arrivée, la pièce qui se déplace est indiquée par son code. Exemple : Cf6 signifie qu'un cavalier dans les parages se déplace en f6.
3/ Si le code de pièce ne suffit pas, on indique le numéro de rangée de départ de la pièce. "C3e5" signifie par exemple que le cavalier présent sur la rangée 3 va en e5.
Ci-dessus, la même partie en notation abrégée lue par Crafty Chess Interface (version anglaise, à gauche), par Arena (version française, en haut) et par Scid vs PC (version avec symboles)
Le format abrégé est clairement moins facile à lire, pour un humain. Pour un ordinateur, c'est l'inverse. La notation abrégée est traitée plus rapidement et prend moins de place. C'est pourquoi le format de fichier PGN utilise la notation abrégée. Ainsi que d'une manière général tous les dispositifs informatiques. Certes, le gain sur une partie est ridiculement faible. Mais lorsqu'un logiciel devra par exemple rechercher une position spécifique parmi plusieurs millions de parties, ça comptera.
Il faut aussi se rendre compte que les logiciels compensent largement en générant automatique le code de la notation abrégée et en proposant de nombreuses commodités de visionnage des parties qui nous épargne d'avoir à lire directement les parties en notation abrégée.
Voici pour finir un exemple de début de partie codé en notation abrégée :
1.f4 d5 (blanc : le pion f2 se déplace en f4 / noir : le pion d7 se déplace en d5)
2.e3 Nf6 (blanc : le pion e2 se déplace en e3 / noir : le cavalier g8 se déplace en f6)
3.b3 e6 (blanc : le pion b2 se déplace en b3 / noir : le pion e7 va en e6)
4.Bb2 Be7 (blanc : fou c1 va en b2 / noir : fou f8 va en e7)
5.Bd3 b6 (blanc : fou f1 va en f3 / noir : pion b7 se déplace en b6).
Numeric Annotation Glyphs - NAG
Le système NAG est un ensemble de codes standardisés permettant de commenter les coups d'une partie d'échecs sans surcharger le contenu des parties enregistrées sous forme de PGN. Ils se présentent sous la forme du caractère "$" suivi d'un nombre entre 0 et 139 (sauf pour les Nag 1 à 6 qui peuvent le plus souvent être traduits par des "!" et des "?").
Il y a donc 139 codes NAG, ce qui ne facilite pas leur mémorisation. La plupart des joueurs connaissent au moins les 10 premiers, qui servent à commenter le coup qui précède immédiatement :
0 null annotation : pas d'annotation
1 good move (traditional "!") : bon coup
2 poor move (traditional "?") : mauvais coup
3 very good move (traditional "!!") : coup excellent
4 very poor move (traditional "??") : très mauvais coup
5 speculative move (traditional "!?") : coup spéculatif
6 questionable move (traditional "?!") : coup douteux
7 forced move (all others lose quickly) : coup forcé (tous les autres coups perdent rapidement)
8 singular move (no reasonable alternatives) : seul coup (pas d'alternative raisonnable)
9 worst move : le plus mauvais coup
Les NAG de 10 à 135 sont des commentaires sur la position et les NAG de 136 à 139 expriment la pression du temps (Zeitnot).
Si vous souhaitez disposer de tous les codes NAG, référez vous à cette section de l'article de Wikipédia sur les fichiers PGN.
P.
Pawnhash (table de hachage de pions)
Certains moteurs utilisent une table de hachage spéciale pour mettre en cache des configurations de pions. Cette table sert en général à des algorithmes spécialisés dans l'évaluation de la structure de pions et de leurs relations au roi. Lorsqu'elles existent, elles sont de petite taille car les configurations de pions possibles sont relativement peu nombreuses et évoluent lentement dans une partie ; disons de 1 à 16 Mo. Comme toujours, le choix de la taille de la table dépend du moteur et de l'usage qu'on en fait. Scidlet, moteur 1800 Elo, se contentera facilement de 4 Mo en jouant au maximum de ses possibilités. Un moteur plus fort, jouant à un niveau élevé sera mieux avec 8 Mo.
PopCnt
Voir Architecture SSE3 et SSE4
PGN - Portable Game Notation
Un PGN est un fichier texte qui contient sous une forme codifiée une ou plusieurs parties d'échecs. Chaque jeu comprend deux parties :
➤L'en-tête : c'est ici que sont stockées les informations factuelles. Sept types d'informations d'en-tête sont obligatoires : "Event", "Site", "Date", "Round", "White", "Black" et "Result". On peut en ajouter librement beaucoup d'autres, du moment qu'on respecte la forme [Info "xyz"]. On trouve souvent par exemple le code ECO, le Elo des joueurs et le nombre de coups de la partie.
➤Le corps : il contient les mouvements, présentés en notation algébrique abrégée. On peut y stocker aussi des commentaires et les variantes éventuels de la partie.
Les fichiers sont du type "parties.pgn" et sont reconnus par la quasi-totalité des programmes d'échecs gratuits ou commerciaux. Cette universalité est l'atout majeur des PGN. C'est le format de base de données de parties le plus courant. Les fichiers PGN ont toutefois deux inconvénients :
➤ils sont très lourds et les logiciels peinent à les utiliser dès qu'ils rassemblent plus de quelques centaines de milliers de parties, alors que les bases de parties les plus connues contiennent plusieurs millions de parties. En pratique, ces grosses bases ne peuvent pas être gérées sous forme de PGN.
➤les logiciels libres et gratuits prennent en général assez mal en charge les caractères accentués des fichiers PGN. Au point qu'il paraît judicieux de commenter en évitant les accents. Le problème est plus criant avec les logiciels freeware ou libres, moins peaufinés que les produits du commerce.
PGN simple
Voici l'exemple simple d'une partie sans commentaire, avec uniquement la notation de la partie, en version anglaise. Il s'agit de la confrontation entre Andrew Smith et le joueur français François André Philidor. Notez que les coups sont numérotés et que chaque coup comprend 2 1/2 coups, un pour blanc un pour noir.
[Event "Divers"]
[Site "Londres - GB"]
[Date "1790"]
[EventDate "?"]
[Round "6"]
[White "Andrew Smith"]
[Black "François André Philidor"]
[Result "0-1"]
[ECO "C24"]
[WhiteElo "?"]
[BlackElo "?"]
[PlyCount "66"]
1.e4 e5 2.Bc4 Nf6 3.d3 c6 4.Bg5 h6 5.Bxf6 Qxf6 6.Nc3 b5 7.Bb3
a5 8.a3 Bc5 9.Nf3 d6 10.Qd2 Be6 11.Bxe6 fxe6 12.O-O g5 13.h3
Nd7 14.Nh2 h5 15.g3 Ke7 16.Kg2 d5 17.f3 Nf8 18.Ne2 Ng6 19.c3
Rag8 20.d4 Bb6 21.dxe5 Qxe5 22.Nd4 Kd7 23.Rae1 h4 24.Qf2 Bc7
25.Ne2 hxg3 26.Qxg3 Qxg3+ 27.Nxg3 Nf4+ 28.Kh1 Rxh3 29.Rg1
Rxh2+ 30.Kxh2 Rh8+ 31.Nh5 Rxh5+ 32.Kg3 Nh3+ 33.Kg4 Rh4# 0-1
PGN avec commentaire
Un fichier PGN peut contenir beaucoup d'autres informations. Notamment des commentaires. Ceux-ci sont insérés entre chaque 1/2 coups ou entre chaque coup. Pour être perçus comme simples commentaires ils doivent être placés entre les caractères "{" et "}". Voici un exemple de PGN largement commentée, la fameuse "partie de l'Opéra" de Paul Morphy.
[Event "Partie de l'Opéra"]
[Site "Paris - France"]
[Date "?"]
[Round "?"]
[White "Paul Morphy"]
[Black "Duke Karl / Count Isouard"]
[Result "1-0"]
[Opening ""]
[Eco "C41"]
[TimeControl ""]
1. e4 {Commentaires de Dominick Blanchette. Dans cette partie, Morphy offrait un parfait exemple d`une mobilisation rapide des pièces suivie d`une attaque bien menée. La partie a été jouée contre deux adversaires, un duc et un conte, à l`opéra de Paris en 1858.} e5
2. Nf3 d6
3. d4 Bg4 {Une erreur de la part des noirs aide les blancs à développer leurs forces. }
4. dxe5 Bxf3 {Forcé. Si les noirs jouaient 4... dxe5, les blancs répondraient par 5. Qxd8+ Kxd8 6. Nxe5 qui gagne un pion. }
5. Qxf3 dxe5
6. Bc4 {Les blancs sortent une autre pièce avec tempo. La menace est Qxf7#.} Nf6
7. Qb3 {Attaque double. Les blancs menacent 8. Fxf7+ ou 8. Qxb7 gagnant un pion dans les deux cas.} Qe7
8. Nc3 {Un coup de maître! Après le simple 8. Qxb7, les blancs auraient pu obtenir une victoire technique avec leur pion de plus. Cependant, Morphy montre un admirable contrôle et au lieu de prendre le pion, il décide d`y aller pour un développement de pièces qui pourrait lui permettre de mettre rapidement Ko ses adversaires. Cette approche requiert un développement de pièces le plus rapide possible. Morphy joue de façon différente que les autres joueurs de son époque car il préfère attaquer le roi ennemi avec tous ses pions au lieu de négliger son développement et d`attaquer avec seulement une ou deux piéces. Morphy ne capture du matériel que si ça lui donne un avantage marquant. c6 Les noirs permettent à la dame noire de protéger le pion b7 et de garder les pièces blanches à l'écart de la case d5. }
9.Bg5 {Les blancs développent calmement une autre pièce. Notez la différence du développement: 4 pièces de développées du côté des blancs contre seulement 2 du côté des noirs. b5 Les noirs tentent une contre attaque et veulent essayer de repousser les pièces blanches. Toutefois, ce coup n`aide pas les noirs à rattrapper leur retard de développement, et il permettra aux blancs d`ouvrir la position complètement.
10. Nxb5 Avec toutes leurs pièces développées et leurs tours qui sont prêtes à bondir dans l`action sur la colonne D, les blancs sont mures pour l`attaque. cxb5 Les noirs accélèrent leur propre défaite et ouvrent la position encore plus aux blancs.... }
11. Bxb5+ Nbd7
12. O-O-O {De façon simultanée,les blancs mettent leur roi en sécurité tout en mettant une tour sur la colonne D et en permettant aussi à la tour h1 de venir occuper les colonnes centrales. Notez comment le cavalier d7 commence à subir de la pression... Rd8 Le cavalier d7 étant cloué, il lui faut de la protection supplémentaire... Observez comment le roi noir est emprisonné! C`est peut-étre le signe qu`une combinaison est en préparation... }
13. Rxd7 Rxd7
14. Rd1 {Maintenant c`est au tour de la tour d`être clouée sur la case d7! Les noirs ont un avantage matériel, mais il ne lui sert pas puisque deux de leurs pièces, la tour h8 et le fou f8 ne participent pas à la partie... tandis que les blancs utilisent tout leur arsenal! Qe6 Les noirs essaient désespérément de se sortir de quelques clouages (dans ce cas-ci, le cavalier f6). Cependant, la dame libère la diagonale h4-d8 pour permettre au fou g5 de pouvoir participer à la ronde de l`attaque du roi ennemi. Voyez-vous comment les blancs peuvent terminer la partie à l`aide d`une superbe combinaison?}
15. Bxd7+ {Fourchette conte la dame et le roi. Les noirs doivent capturer le fou sous peine de perdre leur dame. Si les noirs capturent à l`aide de leur dame (le coup qui leur permettrait de tenir plus longtemps...), les blancs regagneraient tout leur matériel et en auraient même plus: 15... Qxd7 16. Rxd7 Nxd7 et les blancs ont une dame et un fou (12 points) contre une tour, un fou et un cavalier (11 points) en plus d'avoir 2 pions de plus. Aussi, le roi noir est exposé au centre de échiquier. Nxd7 (Les blancs peuvent terminer la partie en 2 coups... }
16. Qb8+ Nxb8 {Forcé.
17. Rd8# (Une partie magique. Avec la grâce d`un artiste, Morphy combine la stratégie et la tactique afin de créer cette œuvre magnifique.} 1-0
Pour rendre la lecture plus facile, j'ai séparé chaque coup par un retour chariot. Cela n'empêchera pas le PGN de fonctionner mais le corps du PGN se présente le plus souvent comme un bloc compact, difficile à lire.
PGN avec variantes
Les PGN sont capables aussi de prendre en compte les variantes. Voici l'exemple fourni par Wikipedia :
[Event "Interclubs FRA"]
[Site "?"]
[Date "????.??.??"]
[Round "?"]
[White "Calistri, Tristan"]
[Black "Bauduin, Etienne"]
[Result "1-0"]
1.e4 c5 2.Nf3 e6 3.d4 cxd4 4.Nxd4 Nc6 5.Nc3 a6 6.Be2 Qc7 7.O-O Nf6 8.Be3 Bb4
9.Na4 O-O 10.c4 Bd6 11.g3 Nxe4 12.Bf3 f5 13.Bxe4 fxe4 14.c5 Be7 Les Noirs ont un pion d'avance mais de gros problèmes pour mettre leur Fc8 et leur Ta8 en jeu
15.Qg4 Ne5 16.Qxe4 d5 17.cxd6 Bxd6 18.Rac1 Qa5 19.Nb3 +/- D Les blancs ont récupéré leur pion et toutes leurs pièces sont mobilisées
19...Qb4
(19...Qd5 20.Qxd5 exd5 21.Nb6 Bh3 22.Nxa8 Nf3+ 23.Kh1 Bxf1 24.Rxf1 Rxa8 25.Rd1±)
(19...Nf3+ 20.Kg2 Qh5)
20.Qxb4 Bxb4 21.Nb6 $18 Les noirs n'arriveront jamais à sortir leur Fc8
21...Rb8 22.Bc5 Bxc5
(22...Nd3 23.Bxf8 Nxc1 24.Rxc1 Bxf8 25.Rxc8 Rxc8 26.Nxc8+-)
23.Nxc5 Rd8 24.Rfd1 Re8 25.Ne4 Nf7 26.Rc7 Kf8 27.Rdc1 1-0
Ce PGN contient deux variantes (entre parenthèses) pour les coups 19 à 25 et 19-20 et une autre pour les coups 22 à 26.
PGN multi-parties ou "multiple"
Lorsque le PGN contient plusieurs parties, elles se suivent simplement dans le fichier texte. Les interfaces qui sont présentées sur ce site gère sans difficulté les PGN multiples. Certains programmes plus frustres n'acceptent que les PGN simples.
Polyglot
Voir UCI
Pondération (réflexion sur temps adverse)
La pondération consiste pour le moteur à continuer sa réflexion alors que vous-même êtes en train de penser à votre coup suivant. Quand c'est à nouveau son tour, l'ordinateur aura pris beaucoup d'avance sur son coup suivant. C'est un élément important de puissance d'un moteur d'échecs. Ne perdez pas de vue que cela le rend sensiblement plus fort. Si vous l'avez limité à cinq secondes de réflexion mais que vous le laissez réfléchir 10 minutes quand c'est votre tour, dans une partie non-chronométrée, il sera évidemment beaucoup plus fort que prévu.
Dans une partie entre deux moteurs, le principe est de désactiver la pondération. Elle ne sera pas efficace et elle risque même d'entraîner une chute de la performance des deux moteurs. Le système est conçu pour permettre à l'ordinateur de "penser" quand il n'a rien d'autre à faire, pas quand le temps machine est déjà occupée par la réflexion d'un second moteur.
R.
Règle des cinquantes coups
En fin de partie, lorsqu'il reste peu de pièces sur l'échiquier, il arrive souvent que deux joueurs accumulent les mouvements sans que l'un ou l'autre n'arrive à prendre l'avantage. Et il y a trop d'espace disponible pour que la situation finisse par un pat. Pour éviter ces interminables course-poursuites stériles, on a, au début du 20eme siècle, instauré la "règle des 50 coups". Elle stipule que lorsque plus aucune prise ou poussé de pion n'a eu lieu depuis 50 coups, la partie est déclarée nulle. Le principe est en effet que n'importe quelle finale gagnante arrivera à terme au plus en 50 coups.
Au milieu du 20eme siècle, on a découvert toutefois que dans certaines très rares configurations, il fallait plus de 50 coups pour arriver au mat. Il y a eu alors un certain flottement : parfois on appliquait quand même la règle, parfois on repoussait la limite à 100 coups, parfois on gérait de complexes exceptions...
Finalement, en 1992, la FIDE a tranché : la règle des 50 coups s'applique désormais dans tous les cas. Mais certaines interfaces d'échecs nous laisse le choix de suivre la règle ou pas.
Réseau neuronal (moteur à réseau neuronal)
Alors que plusieurs moteurs de go utilisent avec succès des réseaux neuronaux pour obtenir des moteurs très puissants, et ce depuis de nombreuses années, les échecs n'en n'ont bénéficié que tardivement. Il y a une raison à cela : obtenir une intelligence suffisante avec des algorithmes classiques était beaucoup plus difficile pour le go que pour les échecs (voir le dossier go de Rob Jeux). On s'est donc tourné vers d'autres techniques... qui par la suite ont été employées également pour les échecs.
Algorithmes classiques
Il y a quelques années seulement, presque tous les moteurs d'échecs utilisaient des algorithmes classiques : une routine de recherche associée à une fonction d'évaluation explore en profonde l'arbre des possibilités pour y trouver un bon coup sinon le meilleur. Il est théoriquement possible d'obtenir le coup parfait, en explorant toute l'arborescence jusqu'à la fin de la partie. En pratique ça ne l'est pas car le nombre des positions à évaluer croît de manière exponentielle et devient vite si énorme qu'aucun système informatique ne peut en venir à bout. Les algorithmes classiques comportent donc divers types de routines dont le but est d'élaguer les branches qui ne mènent pas à un bon résultat (voir Minimax et élagage alpha-beta, Elagage précoce). C'est très complexe, mais c'est mécanique. Le programmeur sait toujours ce que va faire son moteur et comment il arrive à un résultat.
Voir aussi plus haut "Recherche et évaluation de positions"
Réseau neuronal et apprentissage
Dans le cas d'un réseau neuronal, l'approche n'est pas logique mais plutôt statistique. Le résultat n'est pas un calcul mais une prédiction. Prenons le cas d'un réseau neuronal classique à trois couches, dit "perceptron", à qui on va apprendre à reconnaître des objets. La première couche de neurones artificiels reçoit les données : on lui fournit par exemple des photos de motos et des photos de voitures, il doit apprendre à les différencier. Les neurones engrangent les informations, sans savoir ce qu'ils vont en faire : formes, formes dans les formes, couleur, taille, nombre de roues, nombre de personnes sur ou dans le véhicule... Des éléments pertinents sont retenus en même que d'autres qui ne le sont pas. Les neurones suivants associent un poids à chaque donnée isolée, au début au hasard. A la sortie, ils déterminent un résultat, qui peut être juste ou faux. Puis la bonne réponse est donnée au réseau. Des algorithmes dit "d'entrainement" vont alors, en fonction de ce qui était attendu, mettre à jour la liaison entre les neurones, dans le sens d'un renforcement si le résultat était juste et dans le sens de l'inhibition s'il était faux. C'est l'apprentissage ! Petit à petit, le poids des divers stimulis va être minorés ou majorés en fonction du résultat. En recommençant avec des dizaines de milliers de photos de voitures et de motos, le réseau neuronal va finir par isoler les éléments pertinents: petite taille, grande taille, habitacle, pas d'habitacle, deux ou quatre roues, présence de vitres ou non, d'essuie-glace ou pas, nombre d'humains... La variable couleur recevra par contre un poids faible car elle est faiblement pertinente. L'ensemble des données collectées s'appellent logiquement les "données de poids".
Dans ce système, même les concepteurs du réseau neuronal ne savent pas exactement ce qui s'y passe. D'où des résultats parfois surprenants. Par exemple un robot de conversation à réseau neuronal, chargé de stimuler le trafic sur un réseau social, avait remarqué que les propos à connotation raciste mobilisaient davantage les internautes. Il s'est alors mis à tenir lui-même des propos racistes, ce qui n'était pas du tout ce qu'on voulait obtenir de lui !
En ce qui concerne les échecs, l'ensemble des résultats obtenus par l'accumulation de parties donne lieu à la constitution d'un réseau de données appelé "fichier de poids". Toujours en simplifiant à l'extrême, le moteur va se diriger vers un coup plutôt qu'un autre simplement parce qu'en fouillant son réseau de poids, il constatera qu'il aura permis de gagner plus souvent. La difficulté est que ce processus de recherche est très lent, pour des processeurs classiques. Elle a été contournée en mettant à contribution les processeurs des cartes graphiques de gamers, beaucoup aptes à retrouver les données utiles dans le fichier de poids (voir plus bas).
Apprentissage supervisée et non supervisé
Chessterfield, Rhetoric, Leela Chess Zero
Pour revenir à des considérations pratiques, dans ma sélection initiale de moteurs, seul deux sur 32 utilisaient un réseau neuronal : Chessterfield et Rhetoric. Chacun a appris à mieux jouer aux échecs grâce à un apprentissage supervisé, consistant à lui fournir des quantités de parties de grands maîtres à explorer - ou des parties de moteurs très puissants. Si le moteur est le cerveau, les données résultant de ces explorations, les fameux "fichiers de poids", sont en quelque sorte le contenant de ce cerveau, l'expérience acquise lui permettant à la longue de jouer et même de bien jouer aux échecs. L'auteur de Rhetoric a cependant renforcé le fichier de poids obtenu par l'apprentissage supervisé en utilisant les données déjà obtenues pour faire tourner le moteur contre lui-même, ce qui lui permet de sélectionner de nouvelles lignes gagnantes. Cette seconde technique s'appelle l'apprentissage par renforcement.
Pour Rhetoric, c'est son auteur qui s'est chargé de constituer le fichier de poids et le moteur nous est livré avec ; c'est à prendre ou à laisser. Pour Chessterfield, on nous laisse la possibilité, en nous fournissant le module d'apprentissage, de créer nous mêmes nos propres fichiers de poids. La force de Chessterfield est toutefois assez limitée : 2000 elo au grand maximum. Mais c'était un moteur expérimental, développé il y a plus de 25 ans. Plus récent, Rethoric est déjà beaucoup plus fort, à peu près au niveau des très bons joueurs humains.
En janvier 2018 est apparu Leela Chess Zero, un moteur neuronal développé sur la base des principes du moteur expérimental Alpha Chess Zero (de Deepmind, filiale de Google spécialisée dans les intelligences artificielles). Il est beaucoup plus puissant que Chessterfield et même que Rhetoric. Durant un temps, le moteur a même réussit à damer le pion à Stockfish, avec un fichier de poids en grande partie construit par renforcement à partir de zéro - puis complété par un apprentissage supervisé.
Des fichiers de poids pour un jeu plus humain
Dans un premier temps, la technique neuronal avait pour seul objectif de rendre le moteur d'échecs plus fort. Puis des chercheurs ne sont rendu compte qu'il pouvait servir aussi à reproduire avec beaucoup de réalisme le jeu de joueurs humains faibles ou moyens. En effet, si l'on entraine le moteur avec des parties de joueurs humains de faibles niveaux, le moteur jouera faiblement de manière réaliste, ce que peu de moteurs algorithmiques réussissent à faire. Ca a été le but par exemple de l'expérimentation MAIA, une série de fichiers de poids spécifiques de joueurs Lichess de diverses tranches de niveau.
Une démarche intermédiaire serait d'entraîner le moteur avec des parties de joueurs faibles puis à améliorer un peu le niveau général en lui fournissant des parties de Stockfish réglé à un niveau de force moyen. Ca a été par exemple la démarche suivi par l'auteur de Toga III, Dietrich Kappe, avec ses poids "Gyal".
Inconvénient de l'emploi de l'évaluation neuronale
Les moteurs à évaluation totalement neuronale peuvent être plus forts que les moteurs à algorithmes classiques, mais à condition de tourner sur des machines très puissantes nécessitant notamment de coûteuses cartes graphiques. Pour manipuler les données des fichiers de poids, les processeurs graphiques sont en effet beaucoup plus à l'aise que les chipset de l'ordinateur (on estime que le temps de traitement et en moyenne 10 à 15 fois plus rapide, avec une carte performante). Il faut aussi beaucoup de mémoire vive. Pour vous donner une idée du problème : le fichier de poids le plus performant de Leela Chss Zero occuppe 4 Go en mémoire et 330 Mo sur le disque. Il nécessite une configuration exceptionnelle et une version particulière de LC0 pour le prendre en charge. On comprend que la plupart des utilisateurs ne bénéficient pas d'une machine assez bien équipée pour profiter vraiment des avantages des moteurs à réseau neuronal. Cette difficulté a été en partie résolue en mettant au point des systèmes hybrides qui se basent sur un réseau de neurones tout en utilisant aussi des algorithmes classiques (voir "NNUE").
S.
Système 32 bits, système 64 bits
Il y a quelques années les processeurs jonglaient avec des registres d'une taille de 32 bits, soit 32 emplacements ou stocker la valeur 0 ou 1. Avec le développement de la capacité des machines, la baisse du prix de la mémoire et aussi l'augmentation de la puissance des processeurs eux-mêmes, les registres sont passés de 32 à 64 bits. L'avantage, c'est qu'avec 64 bits, le CPU peut effectuer ses calculs plus rapidement, car il peut traiter plus de données simultanément. Un autre avantage non-négligeable et qu'avec une architecture 64 bits, les processeurs peuvent traiter beaucoup plus que 3.5 Go de ram, limite indépassable des systèmes 32 bits.
Windows 7 et 8 vous donnait encore le choix d'installer le système en 32 ou 64 bits, selon la capacité de votre ou vos processeurs. Il faut quand même savoir qu'aujourd'hui, il n'y a plus aucun processeurs 32 bits sur le marché, même pour des machines bas de gamme. Si votre système est en 32 bits cela signifie que vous utilisez un très vieil ordinateur. Il reste toutefois utile de savoir de quoi il s'agit car beaucoup de moteurs anciens - mais de grande qualité - sont livrés en deux versions, l'une pour machine 32 bits, l'autre pour machine 64 bits. Surtout ne prenez pas l'un ou l'autre au hasard ! Selon les moteurs, la vitesse de réflexion d'une version 32 bit sera de 40 à 60% plus lente. Ce n'est pas rien !
Par contre si vous lancez une version 64 bits sur une machine 32 bits, le moteur ne fonctionnera tout simplement pas.
T.
Table de hachage
Voir Hashtables
Tables de finales
Le principe de ces tables est de rassembler dans une base de données l'ensemble des configurations possibles lorsqu'il ne reste plus que 3 à 6 pièces sur l'échiquier. Lorsque la partie s'approchera de la fin, la recherche pourra fouiller dans les tables dès que la profondeur d'exploration l'amènera sur un plateau ne comportant plus que quelques pièces - un peu comme elle le fait avec une bibliothèque d'ouvertures en début de partie.
Les tables de finales peuvent apporter de la puissance aux moteurs d'échecs dans une phase de jeu où leur force a tendence à s'affaiblir. Les très forts moteurs UCI actuels, ceux dont le Elo dépasse 2700 Elo, en ont moins besoin, en général. Il n'en reste pas moins que sans ces bases, et un système performant pour les gérer, même les meilleurs moteurs verront leurs performances baisser un peu en fin de partie.
Scid vs PC et Arena gèrent les tables de finales soit en permettant le lien entre les tables et les moteurs qui savent les utiliser, soit comme outils d'études des phases finales du jeu. Lucas Chess et Crafty Chess Interface ont laissé ce domaine de côté.
Pour bien utiliser les tables de finales, il faut connaître leurs limites. C'est pourquoi je leur ai consacré un chapitre entier de ce site. A lire ici : "Echecs : les tables de finales".
Tables piece-square (ou pièce/case)
Ces tables, utilisées par de nombreux moteurs d'échecs, stockent des valeurs pour chaque pièce présente sur chaque case de l'échiquier (ou certaines pièces et certaines cases). Les tables piece-square vont par exemple inciter les cavaliers à rester loin des bords et à contrôler le centre, les pions à rester au centre et à avancer, les rois à se cantonner dans les coins en milieu de parties, etc. Elles constituent la base des heuristiques d'élagage précoce et d'évaluation paresseuse. Accessibles rapidement, elles permettent d'écarter à un faible coût machine certaines positions très défavorables sans recourir à une évaluation complète.
En permettant d'accélérer la recherche, les tables piece-case augmente la force des moteurs - sans dénaturer l'apparence humaine du jeu car le recours à ces tables ressemble à la manière dont les humains jouent. Elles présentent toutefois des inconvénients. Basée sur des principes rigides et par nature statiques, elles peuvent conduire le moteur à faire de lourdes erreurs. L'expérience montre qu'associées à une fonction d'évaluation basique les tables piece-square les mieux testées ne donnent au moteur qu'une force modérée. Une bonne fonction d'évaluation reste indispensable. Elle permettra par exemple d'ajuster le contenu des tables au moment de l'exécution, en fonction de la qualité de la structure de pions, de la distance au roi ennemi, de la phase de la partie (ouverture, milieu, fin de partie), etc.
Des tables porteuses de style
Les valeurs contenues dans les tables ont été établies à partir de considérations générales mais leur validité est ensuite longuement testées (en faisant jouer de nombreuses parties au moteur). Les principes retenus peuvent évidemment varier. Si l'on a choisi comme base les fondamentaux de l'école classique (contrôle du centre avec les pions, mobilisation rapide des pièces mineures, préservation d'une bonne structure de pions...) le moteur jouera de manière différente que si on a retenu plutôt les principes hypermodernes ou un type de jeu très offensif. En clair, les tables véhiculeront aussi le style du moteur. C'est pourquoi certains moteurs laissent à l'utilisateur le choix d'une table plutôt qu'une autre. Rodent IV propose par exemple cinq jeux de tables piece-square différents.
Tables piece-square spécialisées
Les tables de fin de partie sont des tables piece-square spécialisées dans les situations où ne restent sur le plateau que six pions ou moins. Elles peuvent être externes ou intégrées dans le moteur, généralement sous la forme d'une seconde table.
Certains moteurs utilisent des tables pièce-square spécifiques afin de gérer la protection de son propre roi et l'attaque du roi ennemi (table King Tropism).
U.
UCI to Winboard
Voir UCI
UCI - Universal Chess Interface
L'UCI est un protocole de communication qui permet à un moteur de fonctionner avec une interface d'utilisation, par exemple Arena ou Lucas Chess. Il a été conçu par Rudolf Huber et Stefan Meyer-Kahlen, le créateur de Shredder, en 2000 et c'est un programme libre. Plus moderne que le protocole Xboard/Winboard, il l'a peu à peu remplacé. Tous les moteurs récents utilisent le protocole UCI.
Pour que les moteurs UCI puissent être utilisées avec l'interface Winboard Chess - ou les autres interfaces Winboard - le français Fabien Letouzey a développé l'adaptateur Polyglot (Crafty Chess Interface l'emploie). Le logiciel libre UCI to Winboard (UCI2WB) accomplit la même tache.
Mais aujourd'hui c'est surtout dans l'autre sens que le problème se pose : il s'agit surtout de faire fonctionner de vieux mais excellents moteurs Winboard avec des interfaces UCI. Un logiciel prend en charge cette conversion : Winboard to UCI, ou Wb2UCI. Parmi mes moteurs préférés, plusieurs l'utilisent, notamment Prodeo et Winchess.
Voir aussi :
Moteur d'échecs
Xboard / Winboard
USI - Universal Shogi Interface
L'USI est un protocole de communication ouvert créé par le norvégien Tord Romstad pour permette à des moteurs de Shogi de communiquer avec des interfaces graphiques. Très similaire à l'UCI, dont il s'inspire, il utilise une variante de la notation notation Forsyth-Edwards (FEN) des échecs pour traduire des positions sur un plateau de 9x9 cases. Beaucoup de bons moteurs de Shogi sont aujourd'hui des moteurs USI.
W.
Winboard
Voir Xboard/Winboard
X.
Xboard/Winboard
Initialement Xboard était une interface graphique conçue au début des années 1990 pour faire fonctionner le moteur libre GNUChess avec Linux. Par la suite, c'est devenu un protocole de communication permettant à de nombreux moteurs de fonctionner avec cette interface. Ce protocole s'appelle Chess Engine Communication Protocol (CECB) mais le nom de Xboard lui est resté.
L'ensemble a été porté sur Windows quelques années plus tard. CECB (protocole de communication), Xboard Chess et Winboard Chess (Interfaces) sont devenus de véritables standards des échecs "libres" dans les années 2000.
L'échiquier vert olive et caca d'oie de Winboard chess a longtemps symbolisé les échecs libres et gratuits.
Aujourd'hui on utilise beaucoup moins Winboard Chess et son protocole de communication tombe en désuétude. Il présente certains limitations frustrantes comme par exemple la difficulté de limiter la force du moteur selon des critères tels que le temps par coup ou la profondeur d'analyse. Beaucoup de moteurs Winboard ne connaissent comme moyen de limitation que le choix du temps pour toutes la partie. L'intérêt de Winboard aujourd'hui réside surtout dans sa capacité à mettre en oeuvre tous les vieux moteurs xboard et en particulier de nombreux moteurs de variantes que l'interface avait une grande aptitude à gérer. Xboard et Winboard sont aujourd'hui en mesure d'accepter les moteurs UCI, mais, sans jeu de mot, avec un niveau d'échecs élevé.
Certains moteurs importants comme Prodeo ont continué leur développement à partir du protocole xboard / winboard mais en utilisant un logiciel qui les convertit à la fin en moteur UCI. Le plus souvent ce convertisseur est Winboard to UCI (Wb2Uci), application libre et très efficace, mais qui n'est pas d'un usage grand public.