Glossaire technique - Echecs et informatique sur PC-Windows

Rechercher
Aller au contenu

Menu principal :

Technique

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.



A


Analyse de parties

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



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.
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 la version la plus récente version gratuite de Komodo (la 14 actuellement) est moins forte mais elle mettra davantage l'accent sur vos 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, a été libérée et 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.
Mais j'ai été sensible aussi à un argument relevé sur un forum de discussion en faveur de moteurs moins forts. Un joueur faisait remarquer qu'un moteur de 3500 Elo réfuterait certainement
un grand nombre de coups considérés pourtant dans les annales comme brillants. 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.

Remarque : un moteur utilisé à son plus haut niveau pour l'analyse d'une partie consomme beaucoup de ressources machine. C'est pourquoi il est recommandé d'optimiser son fonctionnement 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.



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.



Architecture SSE3 et SSE4 (Streaming SIMD Extensions 3 ou 4) - PopCnt


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, Stockfish, 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.



C


Centipion

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 (CECB)

Voir Xboard/Winboard



Contrôle de temps

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 de futilité (Futility Pruning)

On peut demander à un algorithme alpha-beta d'élargir un peu son élagage, afin de couper aussi des branches dont l'évaluation partielle est de très peu supérieure à une branche soeur (et que le minimax aurait donc conservé). L'idée est que si elle est un peu meilleure, il est peu probable qu'elle soit franchement meilleure que la branche de référence.
L'activation ou non d'une routine d'élagage de futilité est un choix que vous aurez à fixer pour certains moteurs. En général, l'élagage est sur off. Car c'est un pari qui n'est pas forcément gagnant. On peut considérer comme un principe qu'il augmente la force tactique d'un moteur, mais entraîne aussi une moindre maîtrise de la position. Autrement dit, il change un peu le style mais pas forcément le niveau de jeu du moteur.

Voir aussi "Minimax et élagage alpha-beta"




Elo

Le Elo est un système assez complexe de notation des joueurs. Les meilleures joueurs humains s'approchent des 2850 elo. Actuellement, 50 moteurs dépassent les 3000 Elo. Ce qui veut dire qu'ils sont plus forts que les meilleurs humains. Stockfish, le plus fort, affiche 3465 elo, chiffre formidable.  
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.

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 550 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.


Evaluation paresseuse (lazy evaluation)

Tous les moteurs algorithmiques modernes utilisent une forme d'évaluation paresseuse.  Cela consiste à effectuer une première évaluation d'une position en utilisant des moyens rapides et peu gourmands en ressources tels que la consultation de tables de matériel et des tables pièces/cases. Si le score est en dessous d'une certaine valeur, l'évaluation s'arrête, considérant qu'il est peu probable que l'exploration approfondie de cette position présente un intérêt. Dans le cas contraire, l'évaluation se poursuit avec des moyens plus sophistiqués. Cette technique permet d'économiser beaucoup de temps d'exploration, avec des risques faibles - si l'heuristique est bien réglée - d'abandonner prématurément une position gagnante.


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.



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

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 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é 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. Le gain de temps est considérable.

Il y a néanmoins un problème pratique... Le nombre de positions est énorme et un nombre de 64 bits en hexadécimal ne peut pas stocker toutes les valeurs. 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 utilisez 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 moins besoin de grosses tables.  
En résumé, 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 ?



Heuristique à mouvement nul (null move pruning)

Le null move pruning (c'est sous ce vocable que vous le verrez apparaître le plus souvent) est une technique qui permet d'améliorer l'élagage alpha-beta en étudiant sans trop approfondir la résultante d'une situation où le joueur au trait aurait passé son tour (null move). Elle se base sur l'idée que la majorité des coups d'un joueur va améliorer sa position. Cela paraît à priori idiot, pourtant cette méthode permet dans une majorité de cas d'anticiper l'élagage de certaines branches, pour un coup d'exploration moindre.

La technique permet au moteur d'avancer plus vite mais elle diminue sa précision et risque d'entraîner des erreurs tactiques grossières, surtout dans les cas où le joueur au trait est dans une situation difficile. C'est pourquoi le choix est souvent donnée de désactiver la routine. Dans le cas d'un moteur très puissant comme Komodo, vous pouvez laisser sans crainte Null move pruning actif. Il est peu probable qu'il perdent pied. Dans le cas de moteurs beaucoup moins puissant, la question peut se poser.

Voir "Minimax et élagage alpha-beta"



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 performant, il permet à l'interface de régler beaucoup plus finement le fonctionnement du moteur. Par exemple, tous les UCI acceptent qu'on leur impose un temps moyen en seconde par coup, réglage difficile à obtenir d'un Xboard.  
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...


Les interfaces


Xboard / Winboard

Bien qu'un peu vieillotte, l'interface est toujours utilisée. C'est en effet la plus adaptée pour faire fonctionner les vieux moteurs xboard. Or, si ces moteurs sont moins forts, beaucoup on un style de jeu plus proche du jeu humain que les moteurs UCI récents.
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é :
Moteurs Xboard : ++++
Moteurs UCI : ++



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é :
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. En résumé :
Moteurs xboard : -
Moteurs UCI : ++++



Crafty Chess Interface

Crafty Chess Interface est un programme bourrée de qualité et qui accepte les deux protocoles...  mais sur laquelle beaucoup de moteurs dysfonctionnement. Un autre de ses défauts et de ne pas donner accès au menu de configuration des moteurs. En résumé :
Moteurs Xboard : ++
Moteurs UCI : ++



Scid vs PC

Ce gestionnaire de bases de parties est également une interface permettant de jouer aux échecs avec des moteurs différents. Mais comme pour Crafty Chess Interface, 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.
Moteurs xboard : +
Moteurs UCI : +++


Mayura Chess Board

Mayura Chess Board est une interface shareware assez basique mais très bien conçue. Elle accepte seulement les moteurs UCI. Leur intégration est cependant parfaite. L'interface gère notamment le réglage de Elo des moteurs UCI 2, très pratique. La version gratuite de Mayura, plus limitée, ne permet pas par contre l'accès au menu de configuration des moteurs.  
Moteurs xboard : -
Moteurs UCI : +++


Minimax et élagage alpha-beta

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 permet à l'algorithme minimax d'explorer à une profondeur beaucoup plus grande, avec un risque faible - si l'élagage est bien conçu - d'ignorer des branches valables.
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 la façon de jouer d'un moteur et sur sa force. 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.


Voir aussi "Elagage de futilité".




MultiPv

Vous avez peut-être remarqué sur la "sortie" d'un moteur avec Arena que lorsqu'il doit jouer, il étudie une séquence de coups, l'abandonne pour une autre, puis une troisième, une quatrième, etc. C'est parce que dans son exploration de l'arbre des coups, il trouve de meilleures lignes de coups à jouer. Ce travail est fait séquentiellement. Le MultiPv lui permet de le faire simultanément. C'est un outil précieux pour l'analyse.



Le Multi-Pv est un outil délicat, qui n'est pas toujours bien utilisé. En principe, si vous demandez à votre moteur de suivre plusieurs pistes simultanément,  le jeu gagnera en précision et qualité mais il ne pourra explorer aussi profondément que s'il se concentre sur une seule piste.
Il y a une corrélation assez forte entre la force du moteur et le nombre de pistes suivies. 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, en général, désactiver le Multi-Pv. Par contre si vous utilisez le moteur comme outils d'analyse ou de conseil et que vous pouvez lui laisser le temps qu'il faut pour explorer en profondeur, la qualité du jeu sera améliorée.

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 été également dotés d'une évaluation NNUE ; d'autres expériences suivent...

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'évaluation 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.
Par ailleurs, le moteur à réseau NNUE est davantage susceptible d'offrir un jeu de style humain, surtout si le réseau a été constitué par apprentissage à partir de jeux de grands maîtres.

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


Quelques exemples

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


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.

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.



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 jouera alors plus rapidement. Ne perdez pas de vue toutefois que cela le rend sensiblement plus fort. Si vous l'avez limité à 5 secondes de réflexion mais que vous le laissez réfléchir 5 minutes quand c'est votre tour, dans une partie non-chronométrée, il sera 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
     


Recherche et évaluation de positions

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.


La fonction d'évaluation


Elle effectue 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

Lorsque l'évaluation d'une position se révèle positive, l'algorithme de recherche poursuit l'exploration des mouvements qui en découlent. 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 il parait aussi 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 :
Moteur d'échecs

Minimax et élagage alpha-beta




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 les bonnes interfaces d'échecs nous laisse le choix de suivre la règle ou pas.


Réseau neuronal et algorithme classique

Alors que plusieurs moteurs de go utilisent avec succès des réseaux neuronaux à apprentissage pour obtenir des moteurs très puissants, les échecs ne s'y sont mis que récemment. 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.


Algorithmes classiques

Jusqu'à une date récente, presque tous les moteurs d'échecs utilisaient des algorithmes classiques, c'est-à-dire que, au moment de jouer un coup, ils explorent en profondeur l'arbre des possibilités, ce qui leur permet de trouver un bon coup, sinon le meilleur coup.
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 énorme. 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). 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é

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 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 son module d'apprentissage, de créer nous mêmes nos propres fichiers de poids.
La force de Chessterfield est 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.

Un nouveau moteur gratuit utilise un réseau neuronal. Il s'inspire de l'expérience du moteur Leela Go Zero, pour le go, lui-même ayant mis en pratique les techniques d'Alpha Zero, le  moteur expérimental de Google.  Il s'agit de Leela Chess Zero. Il est beaucoup plus puissant que Chessterfield et même que Rhetoric. Depuis peu, les fichiers de poids obtenus pour Leela Chess Zero, à la fois par apprentissage et par renforcement, permettent à ce moteur de battre les meilleurs moteurs classiques. La constitution des fichiers de poids est cependant toujours en cours, et les performances de ce moteur devraient donc croitrent encore à l'avenir.


Inconvénient de l'emploi de moteurs à réseaux neuronaux

A l'heure actuelle, les moteurs à réseaux neuronaux sont plus forts que les moteurs à algorithmes classiques, mais à condition d'avoir une machine puissante, avec une bonne carte graphique et beaucoup de mémoire vive. Suivant l'exemple d'Alpha Zero, LeelaChess Zero, LeelaGo Zero et les autres moteurs  de go à réseaux neuronaux utilisent une astuce qui multiplie leur puissance : ils emploient  les capacités de la carte graphique, pour explorer leur réseau neuronal. Pour manipuler les données des fichiers de poids, les processeurs graphiques sont 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 récente et performante). L'inconvénient est que beaucoup d'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.

Toutes les versions de Windows vous donnent encore le choix d'installer Windows 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 vieil ordinateur - où que vous avez fait une boulette à l'installation de Windows !

La notion est importante : les moteurs d'échecs sont fréquemment 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.


Shuffle Chess (variante Shuffle chess)

Voir Echecs 960



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.  Elles contribuent à l'homogénéité et à l'équilibre des moteurs de jeu, surtout ceux de force moyenne. Sans elles, ils ont tendance en effet à voir leur force baisser sensiblement en fin de partie.  
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ère les tables de finales comme outils d'études des phases finales du jeu. Lucas Chess et Crafty Chess Interface ont laissé ce domaine de côté.

Pour en savoir plus à ce sujet, lire l'article "Echecs : les tables de finales", sur Rob Jeux.



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). Accessibles rapidement, elles soulagent l'évaluation en permettant d'écarter à un faible coût machine certaines positions défavorables. 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.
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.

Les tables piece-square permettent de renforcer la connaissance que le moteur a de la position et limite le recours au calcul brut. Elles donnent aux jeux des moteurs un aspect plus lisibles et plus humain 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 carrées 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.

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'est 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.

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ée pour 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 le 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 classiques comme 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 ca capacité à pouvoir mettre en oeuvre la plupart des vieux moteurs xboard. L'interface est aujourd'hui en mesure d'accepter les moteurs UCI, mais avec un certain niveau d'échecs (sans jeu de mot).

Certains moteurs importants comme Prodeo continuent leur développement à partir du protocole xboard / winboard mais utilisent 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".



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