Cheese est un moteur de jeu d'échecs gratuit écrit en C++.
Ce programme nécessite l'utilisation d'une interface graphique compatible avec les protocoles UCI ou CECP.
Les exécutables de la dernière version sont disponibles ici :
Le code source est disponible ici :
Exemples d'interfaces gratuites compatibles :
Les paramètres sont dans le fichier cheese.ini qui doit se trouver dans le même répertoire que l'exécutable.
Pour les paramètres qui sont aussi modifiable avec le protocole UCI, les valeurs dans cheese.ini sont les valeur par défaut de ces paramètres.
Ce fichier est chargé une seule fois au lancement du programme.
Hash
(par défaut = 256, minimum = 1, maximum = 65536)
Mémoire (en Mo) utilisée pour la table de hashage principale. La valeur doit être une puissance de 2, sinon le programme arrondis à la puissance de 2 la plus proche. En 32 bits la valeur maximum n'est que de 4096.
Book
(par défaut = 0, valeur 0 ou 1)
Indique si on utilise un livre d'ouvertures (0 = non, 1 = oui)
BookFile
Chemin et nom du livre d'ouvertures au format Polyglot. Si le chemin n'est pas précisé le fichier doit se trouver au même endroit que l'exécutable.
UseStrength
(par défaut = 0, valeur = 0 ou 1)
Active ou désactive la réduction du niveau du moteur, définie dans le paramètre StrengthELO.
StrengthELO
(par défaut = 3200, valeur entre 1000 et 3200)
Définit le niveau du moteur en ELO, si UseStrength = 1 Cela ne correspond pas exactement au niveau en ELO d'un joueur humain ou des autres moteurs, mais essai de s'en approcher le plus possible.
UCILimitMode
(par défaut = 0, valeur 0 ou 1)
Définit la méthode utilisé pour réduire le niveau du moteur. 0 permet de réduire la vitesse du moteur 1 permet de limiter le nombre de noeuds cherchés.
UseNullMovePruning
(par défaut = 1, valeur 0 ou 1)
Active ou désactive l'algorithme Null move pruning, le désactiver réduit généralement le niveau du moteur d'environ 100 ELO.
Activé, le moteur risque d'ignorer certains coups important dans les positions de type Zugzwang.
UseLMR
(par défaut = 1, valeur 0 ou 1)
Active ou désactive l'algorithme Late Move Reduction, le désactiver réduit généralement le niveau du moteur d'environ 100 ELO.
Activé, le moteur risque d'ignorer certains coups important.
DrawScore
(par défaut = 0, valeurs généralement maximum entre -50 et 50)
Contempt factor : correspond au score qui représente une position nulle pour le moteur. La valeur doit rester proche de zéro.
MaxThreads
(par défaut = 1, valeur entre 1 et le nombre de coeurs CPU disponibles)
Définit le nombre de threads utilisées pour la recherche.
La valeur maximum recommandée est le nombre de vrai coeurs CPU disponibles sur la machine.
SMPMode
(par défaut ybwc, valeur ybwc ou lazy)
Définit l'algorithme utilisé pour la gestion de plusieurs threads
Dans la version actuelle, ybwc ne gère que 64 threads contre 256 pour lazy SMP (sous Windows le nombre de threads maximum reste limité à 64 pour l'instant)
MinSplitDepth
(par défaut 4, valeur entre 4 et 8, voir plus)
Pour l'algorithme ybwc, correspond à la profondeur minimum à atteindre avant d'utiliser l'algorithme ybwc.
UsePersonality
(par défaut 0, valeur 0 ou 1)
Active ou désactive le système de personnalités pour l'évaluation.
PersonalityFile
(par défaut = personality/default.txt)
Nom du fichier de personnalité, si UsePersonality = 1
LogLevel
(par défaut 31, valeur entre 0 et 31)
Définit le niveau d'affichage des logs, c'est une somme de plusieurs options :
0 désactive tout, 31 active toutes les options.
logfile.txt sera créé dans le même répertoire que l'executable.
SyzygyPath
(par défaut <empty>)
Définit le chemin où sont situé les tables de fin de parties Syzygy <empty> si non utilisé
SyzygyProbeDepth
(par défaut 1)
Définit la profondeur utilisé pour les tables de fin de partie.
Syzygy50MoveRule
(par défaut 0, valeur 0 ou 1)
Utilisation de la règle des 50 coups dans l'utilisation des tables de fin de partie.
SyzygyProbeLimit
(par défaut 7)
Définit le nombre de pièces maximum sur le plateau pour commencer à utiliser les tables de fin de partie.
cheese -help
Affiche la liste des commandes disponibles.
cheese -testsuite HASH_SIZE NB_THREADS {depth|time} VALUE FILENAME.epd
Fait une recherche sur toutes les positions du fichier FILENAME, au format epd compare le meilleur coup avec l'option bm ou am du format epd
cheese -perft DEPTH [-fen "FEN_STRING"]
Compte le total de tous les coups possibles jusqu'à une certaine profondeur
cheese -perftd DEPTH [-fen "FEN_STRING"]
Compte le total de tous les coups possibles, échecs, mats, captures, en passant, promotions, et roques, jusqu'à une certaine profondeur
cheese -divide DEPTH [-fen "FEN_STRING"]
Compte le total de tous les coups possibles jusqu'à une certaine profondeur, pour chaques coups possible de la position
cheese -benchmark HASH_SIZE NB_THREADS {depth|time} VALUE [FILENAME.epd]
Lance une analyse de 20 positions par défaut ou les positions données en paramètre, et affiche le temps, nombre de noeuds, et vitesse
cheese -probetb "FEN_STRING"
Intéroge les tables de fin de parties (si présentes) pour une position
cheese -probebook "FEN_STRING"
Intéroge le livre d'ouvertures (si présent), pour une position
Hash
(par défaut = 256, minimum = 1, maximum = 65536)
Mémoire (en Mo) utilisée pour la table de hashage principale. La valeur doit être une puissance de 2, sinon le programme arrondis à la puissance de 2 la plus proche. En 32 bits la valeur maximum n'est que de 4096.
Ponder
(par défaut = false, true ou false
Active le pondering, le moteur réfléchis pendant que l'adversaire joue.
OwnBook
(par défaut = false, valeur false ou true)
Indique si on utilise un livre d'ouvertures.
Book
Chemin et nom du livre d'ouvertures au format Polyglot. Si le chemin n'est pas précisé le fichier doit se trouver au même endroit que l'exécutable.
Clear
Permet d'éffacer le contenu de la table de hashage.
UsePersonality
(par défaut false, valeur false ou true)
Active ou désactive le système de personnalité pour l'évaluation.
PersonalityFile
(par défaut = personality/default.txt)
Nom du fichier de personnalité, si UsePersonality = 1
UCI_Chess960
(par défaut = false, valeur false ou true)
Active ou désactive le mode Chess960 ou FRC.
MultiPV
(par défaut = 0, valeur entre 0 et 32)
Active l'analyse de plusieurs coups possibles pour la positions actuelle, les différents coups sont triés selon le score.
NullMovePruning
(par défaut = true, valeur false ou true)
Active ou désactive l'algorithme Null move pruning, le désactiver réduit généralement le niveau du moteur d'environ 100 ELO.
Activé, le moteur risque de rater certains coups important dans les positions de type Zugzwang.
LateMoveReduction
(par défaut = true, valeur false ou true)
Active ou désactive l'algorithme Late Move Reduction, le désactiver réduit généralement le niveau du moteur d'environ 100 ELO.
Activé, le moteur risque de rater certains coups important.
Threads
(par défaut = 1, valeur entre 1 et le nombre de coeurs disponibles)
Définit le nombre de threads utilisées pour la recherche.
La valeur maximum recommandée est le nombre de vrai coeurs disponibles sur la machine.
SMPMode
(par défaut ybwc, valeur ybwc ou lazy)
Définit l'algorithme utilisé pour la gestion de plusieurs threads
Dans la version actuelle, ybwc ne gère que 64 threads contre 256 pour lazy SMP (sous Windows le nombre de threads maximum reste limité à 64 pour l'instant)
UCI_LimitStrength
(par défaut = false, valeur false ou true)
Définit la méthode utilisé pour réduire le niveau du moteur. 0 permet de réduire la vitesse du moteur 1 permet de limiter le nombre de noeuds cherchés
UCI_Elo
(par défaut = 3200, valeur entre 1000 et 3200)
Définit le niveau du moteur en ELO, si UCI_LimitStrength = true Cela ne correspond pas exactement au niveau en ELO d'un joueur humain ou des autres moteurs, mais ça s'en rapproche.
LimitStrengthMode
(par défaut = speed, valeur speed ou nodes)
Définit la méthode utilisé pour réduire le niveau du moteur. speed permet de réduire la vitesse du moteur, nodes permet de limiter le nombre de noeuds cherchés
DrawScore
(par défaut = 0, valeurs généralement maximum entre -50 et 50)
Contempt factor : correspond au score qui représente une position nulle pour le moteur. La valeur doit rester proche de zéro.
SyzygyPath
(par défaut <empty>)
définit le chemin où sont situé les tables de fin de parties Syzygy <empty> si non utilisé
SyzygyProbeDepth
(par défaut 1)
définit la profondeur utilisé pour les tables de fin de partie.
Syzygy50MoveRule
(par défaut 0, valeur 0 ou 1)
Utilisation de la règle des 50 coups dans l'utilisation des tables de fin de partie.
SyzygyProbeLimit
(par défaut 7)
Définit le nombre de pièces sur le plateau maximum pour commencer à utiliser les tables de fin de partie.
Par défaut le système de de personnalités est désactivé, les paramètres de l'évaluation ont été calculés automatiquement à partir de plusieurs millions de positions dans des parties entre différentes versions du moteur.
Pour choisir une personnalité il faut editer cheese.ini et modifier UsePersonality=1 pour l'utiliser , puis choisir le fichier correspondant à la personnalité avec par exemple pour la personnalité par défaut : PersonalityFile=personality/default.txt
Les paramètres du fichier personality/default.txt correspondent aux valeurs par défaut sans personnalité.
Si un paramètre n'est pas définit dans le fichier de personnalité, il aura la valeur par défaut.
Les valeur des paramètres suivants sont basé sur la valeur matériel d'un pion, on donne généralement la valeur 100 à un pion, et donc si un paramètre vaut 25, ça correspond à un avantage de 1/4 de la valeur d'un pion.
Une valeur positive correspond à un avantage, une valeur négative à une pénalité.
Les paramètres se terminant par Mid correspondent à la valeur en début et milieu de partie, et ceux se terminant par End à la valeur en fin de partie.
PawnValueMid, PawnValueEnd
Valeur matériel d'un pion.
KnightValueMid, KnightValueEnd
Valeur matériel d'un cavalier.
BishopValueMid, BishopValueEnd
Valeur matériel d'un fou.
RookValueMid, RookValueEnd
Valeur matériel d'une tour.
QueentValueMid, QueenValueEnd
Valeur matériel d'une reine.
BishopPairMid, BishopPairEnd
Bonus quand on a ses 2 fous.
PawnDoubledMid, PawnDoubledEnd
Pénalité pour chaques pions doublés.
PawnIsolatedMid, PawnIsolatedEnd
Pénalité pour chaques pions isolés.
PawnBackwardMid, PawnBackwardEnd
Pénalité pour chaques pions arriérés.
RookOpenFileMid, RookOpenFileEnd
Bonus pour une tour sur une colonne ouverte.
RookSemiOpenFileMid, RookSemiOpenFileEnd
Bonus pour une tour sur une colonne semi-ouverte.
Rook7thRankMid, Rook7thRankEnd
Bonus pour une tour sur la 7ème rangée.
Les paramètres suivants sont des pourcentage (0..100) mais peuvent éventuellement êtres supérieurs à 100.
OutpostKnight
Importance d'un cavalier en avant poste.
OutpostBishop
Importance d'un fou en avant poste.
PawnShield
Importance du bouclier de pions devant le roi.
PassedPawns
Importance des pions passés.
Les paramètres suivants terminé par Own correspondent au point de vue du moteur,et Opp au point de vue de son adversaire.
Cela permet d'avoir des valeurs asymétriques pour l'évaluation, pour la protection du roi cela va permettre d'avoir une personnalité plus ou moins agressive, tandis que pour la mobilité cela permettra de donner plus d'importance au développement des pièces...
KingSafetyOwn
Importance de la protection du roi du point de vue du moteur.
KingSafetyOpp
Importance de la protection du roi du point de l'adversaire.
MobilityOwn
Importance de la mobilité des pièces du point de vue du moteur.
MobilityOpp
Importance de la mobilité des pièces du point de vue de l'adversaire.
Randomness
Une valeur aléatoire est ajoutée à l'évaluation des positions, plus ou moins importante selon la valeur du pourcentage. Ce paramètre va réduire la force du moteur.
Remarque sur les versions précédentes :
Depuis la version 3.1 on peut définir les paramètres du matériel en milieu et en fin de partie
Depuis la version 3.2, les paramètres des pions isolés, doublés, arriérés, sont négatifs, alors qu'avant ils étaient positifs.
Les paramètres OutpostKnight, OutpostBishop, PawnShield, PassedPawns n'existaient pas avant la version 3.2