Dans le monde de l'analyse des échecs, la quête d'amélioration ne connaît pas de limites. Que vous soyez un joueur occasionnel cherchant à améliorer ses compétences ou un grand maître chevronné cherchant à obtenir un avantage compétitif, l'attrait de la compréhension de la danse complexe des pièces sur l'échiquier est universel. Entrez dans Stockfish, un nom synonyme d'excellence aux échecs. Stockfish est l'un des moteurs d'échecs open-source les plus puissants du marché, Stockfish est devenu l'outil de référence pour démêler les complexités des positions d'échecs et affiner la réflexion stratégique. Bien que de nombreuses personnes soient familières avec les interfaces utilisateurs graphiques (GUI) pour interagir avec Stockfish, la véritable profondeur de ses capacités réside dans l'interface en ligne de commande. Dans cet article de blog, nous allons nous plonger dans l'art d'utiliser Stockfish à travers la ligne de commande, débloquant un royaume d'analyse et de maîtrise qui est à la fois puissant et flexible. Que vous soyez un connaisseur de la ligne de commande ou que vous commenciez à peine à explorer ses possibilités, préparez-vous à vous embarquer dans un voyage qui vous permettra d'exploiter le potentiel de Stockfish comme jamais auparavant.
Stockfish est basé sur le protocole UCI. La page suivante est basée sur la documentation des commandes Stockfish
La première et la plus utile des commandes pour les débutants est la commande d
qui affiche la position actuelle en ASCII et FEN :
d
+---+---+---+---+---+---+---+---+
| r | n | b | q | k | b | n | r | 8
+---+---+---+---+---+---+---+---+
| p | p | p | p | p | p | p | p | 7
+---+---+---+---+---+---+---+---+
| | | | | | | | | 6
+---+---+---+---+---+---+---+---+
| | | | | | | | | 5
+---+---+---+---+---+---+---+---+
| | | | | | | | | 4
+---+---+---+---+---+---+---+---+
| | | | | | | | | 3
+---+---+---+---+---+---+---+---+
| P | P | P | P | P | P | P | P | 2
+---+---+---+---+---+---+---+---+
| R | N | B | Q | K | B | N | R | 1
+---+---+---+---+---+---+---+---+
a b c d e f g h
Fen: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
Key: 8F8F01D4562F59FB
Checkers:
La commande position startpos
réinitialise le jeu à la position de départ :
position startpos
d
+---+---+---+---+---+---+---+---+
| r | n | b | q | k | b | n | r | 8
+---+---+---+---+---+---+---+---+
| p | p | p | p | p | p | p | p | 7
+---+---+---+---+---+---+---+---+
| | | | | | | | | 6
+---+---+---+---+---+---+---+---+
| | | | | | | | | 5
+---+---+---+---+---+---+---+---+
| | | | | | | | | 4
+---+---+---+---+---+---+---+---+
| | | | | | | | | 3
+---+---+---+---+---+---+---+---+
| P | P | P | P | P | P | P | P | 2
+---+---+---+---+---+---+---+---+
| R | N | B | Q | K | B | N | R | 1
+---+---+---+---+---+---+---+---+
a b c d e f g h
Fen: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
Key: 8F8F01D4562F59FB
Checkers:
La position actuelle du jeu peut être définie par une chaîne de caractères (fenstring) ou par une séquence de coups.
position startpos moves e2e4 d7d5
position fen rnbqkbnr/ppp1pppp/8/3p4/4P3/8/PPPP1PPP/RNBQKBNR w KQkq - 0 1
Par exemple, les deux lignes précédentes placent le jeu dans la même position :
d
+---+---+---+---+---+---+---+---+
| r | n | b | q | k | b | n | r | 8
+---+---+---+---+---+---+---+---+
| p | p | p | | p | p | p | p | 7
+---+---+---+---+---+---+---+---+
| | | | | | | | | 6
+---+---+---+---+---+---+---+---+
| | | | p | | | | | 5
+---+---+---+---+---+---+---+---+
| | | | | P | | | | 4
+---+---+---+---+---+---+---+---+
| | | | | | | | | 3
+---+---+---+---+---+---+---+---+
| P | P | P | P | | P | P | P | 2
+---+---+---+---+---+---+---+---+
| R | N | B | Q | K | B | N | R | 1
+---+---+---+---+---+---+---+---+
a b c d e f g h
Fen: rnbqkbnr/ppp1pppp/8/3p4/4P3/8/PPPP1PPP/RNBQKBNR w KQkq - 0 1
Key: 96270AD18105C788
Checkers:
La commande go
commence à calculer à partir de la position actuelle définie avec la commande position
.
go depth 30
calcule avec une profondeur de 30go movetime 5000
calcule pendant exactement 5 secondesPar exemple, la commande suivante lance le calcul du meilleur coup à partir de la position de départ.
go depth 10
info string NNUE evaluation using nn-5af11540bbfe.nnue enabled
info depth 1 seldepth 1 multipv 1 score cp 2 nodes 27 nps 27000 hashfull 0 tbhits 0 time 1 pv g1f3
info depth 2 seldepth 2 multipv 1 score cp 2 nodes 53 nps 26500 hashfull 0 tbhits 0 time 2 pv g1f3
info depth 3 seldepth 3 multipv 1 score cp 23 nodes 150 nps 75000 hashfull 0 tbhits 0 time 2 pv d2d4 d7d5 g1f3
info depth 4 seldepth 5 multipv 1 score cp 20 nodes 250 nps 125000 hashfull 0 tbhits 0 time 2 pv e2e4 e7e5 g1f3
info depth 5 seldepth 5 multipv 1 score cp 25 nodes 300 nps 150000 hashfull 0 tbhits 0 time 2 pv e2e4 e7e5 g1f3 b8c6
info depth 6 seldepth 6 multipv 1 score cp 25 nodes 404 nps 202000 hashfull 0 tbhits 0 time 2 pv e2e4 e7e5 g1f3 b8c6 d2d4 e5d4 f3d4
info depth 7 seldepth 9 multipv 1 score cp 25 nodes 486 nps 243000 hashfull 0 tbhits 0 time 2 pv e2e4 e7e5 g1f3 b8c6 d2d4 e5d4 f3d4 g8f6 d4c6
info depth 8 seldepth 9 multipv 1 score cp 25 nodes 584 nps 292000 hashfull 0 tbhits 0 time 2 pv e2e4 e7e5 g1f3 b8c6 d2d4 e5d4 f3d4 g8f6 d4c6
info depth 9 seldepth 11 multipv 1 score cp 25 nodes 813 nps 406500 hashfull 0 tbhits 0 time 2 pv e2e4 e7e5 g1f3 b8c6 d2d4 e5d4 f3d4 g8f6 d4c6
info depth 10 seldepth 11 multipv 1 score cp 28 nodes 977 nps 488500 hashfull 0 tbhits 0 time 2 pv e2e4 e7e5 g1f3 b8c6 d2d4 e5d4 f3d4 g8f6 d4c6 b7c6 f1d3
bestmove e2e4 ponder e7e5
La dernière ligne indique le meilleur coup des blancs : e2e4
Pour augmenter la vitesse, vous pouvez utiliser plusieurs CPU / Threads avec la commande suivante :
setoption name Threads value 4
Voici le résultat :
Stockfish peut fournir les principales variations lors de la recherche. Par exemple, le paramètre suivant définit les 5 meilleures variations :
setoption name MultiPV value 5
Lorsque nous utilisons Stockfish, nous obtenons les 5 variations durant l'analyse :
go depth 5
info string NNUE evaluation using nn-5af11540bbfe.nnue enabled
info depth 1 seldepth 1 multipv 1 score cp 21 nodes 490 nps 245000 hashfull 0 tbhits 0 time 2 pv d2d4
info depth 1 seldepth 1 multipv 2 score cp 21 nodes 490 nps 245000 hashfull 0 tbhits 0 time 2 pv e2e4
info depth 1 seldepth 1 multipv 3 score cp 17 nodes 490 nps 245000 hashfull 0 tbhits 0 time 2 pv g1f3
info depth 1 seldepth 1 multipv 4 score cp -16 nodes 490 nps 245000 hashfull 0 tbhits 0 time 2 pv e2e3
info depth 1 seldepth 1 multipv 5 score cp -25 nodes 490 nps 245000 hashfull 0 tbhits 0 time 2 pv a2a3
info depth 2 seldepth 2 multipv 1 score cp 30 nodes 1504 nps 752000 hashfull 0 tbhits 0 time 2 pv e2e4
info depth 2 seldepth 2 multipv 2 score cp 17 nodes 1504 nps 752000 hashfull 0 tbhits 0 time 2 pv d2d4 g8f6
info depth 2 seldepth 2 multipv 3 score cp 17 nodes 1504 nps 752000 hashfull 0 tbhits 0 time 2 pv g1f3 d7d5
info depth 2 seldepth 2 multipv 4 score cp 6 nodes 1504 nps 752000 hashfull 0 tbhits 0 time 2 pv e2e3 e7e6
info depth 2 seldepth 2 multipv 5 score cp 3 nodes 1504 nps 752000 hashfull 0 tbhits 0 time 2 pv a2a3 e7e5
info depth 3 seldepth 4 multipv 1 score cp 29 nodes 2697 nps 1348500 hashfull 0 tbhits 0 time 2 pv e2e4 e7e6 d2d4
info depth 3 seldepth 3 multipv 2 score cp 17 nodes 2697 nps 1348500 hashfull 0 tbhits 0 time 2 pv d2d4 g8f6 g1f3
info depth 3 seldepth 3 multipv 3 score cp 17 nodes 2697 nps 1348500 hashfull 0 tbhits 0 time 2 pv g1f3 d7d5 d2d4
info depth 3 seldepth 3 multipv 4 score cp 6 nodes 2697 nps 1348500 hashfull 0 tbhits 0 time 2 pv e2e3 e7e6 g1f3
info depth 3 seldepth 5 multipv 5 score cp 3 nodes 2697 nps 1348500 hashfull 0 tbhits 0 time 2 pv c2c3 g8f6
info depth 4 seldepth 4 multipv 1 score cp 29 nodes 3663 nps 1831500 hashfull 0 tbhits 0 time 2 pv e2e4 e7e6 d2d4
info depth 4 seldepth 4 multipv 2 score cp 17 nodes 3663 nps 1831500 hashfull 0 tbhits 0 time 2 pv d2d4 g8f6 g1f3 d7d5
info depth 4 seldepth 4 multipv 3 score cp 17 nodes 3663 nps 1831500 hashfull 0 tbhits 0 time 2 pv g1f3 d7d5 d2d4 g8f6
info depth 4 seldepth 4 multipv 4 score cp 6 nodes 3663 nps 1831500 hashfull 0 tbhits 0 time 2 pv e2e3 e7e6 g1f3 g8f6
info depth 4 seldepth 4 multipv 5 score cp 3 nodes 3663 nps 1831500 hashfull 0 tbhits 0 time 2 pv c2c3 g8f6 d2d4 c7c5
info depth 5 seldepth 6 multipv 1 score cp 29 nodes 5821 nps 1940333 hashfull 1 tbhits 0 time 3 pv e2e4 e7e6 d2d4
info depth 5 seldepth 5 multipv 2 score cp 17 nodes 5821 nps 1940333 hashfull 1 tbhits 0 time 3 pv d2d4 g8f6 g1f3 d7d5 e2e3
info depth 5 seldepth 5 multipv 3 score cp 17 nodes 5821 nps 1940333 hashfull 1 tbhits 0 time 3 pv g1f3 d7d5 d2d4 g8f6 e2e3
info depth 5 seldepth 5 multipv 4 score cp 6 nodes 5821 nps 1940333 hashfull 1 tbhits 0 time 3 pv e2e3 e7e6 g1f3 g8f6 d2d4
info depth 5 seldepth 5 multipv 5 score cp 3 nodes 5821 nps 1940333 hashfull 1 tbhits 0 time 3 pv c2c3 g8f6 d2d4 c7c5 g1f3
bestmove e2e4 ponder e7e6
Notez que dans les résultats cp
signifie centipawn (centipion, un centième de pion). Cela représente le score du point de vue du moteur en centipawns.
Ci-dessus, la variante 1 est favorable aux blancs de 29 centipawns, la deuxième variante a un score de 17 centipawns, et ainsi de suite.