mirror of
https://github.com/opelly27/Stockfish.git
synced 2026-05-20 16:47:37 +00:00
Syzygy tablebases
Adds support for Syzygy tablebases to Stockfish. See the Readme for information on using the tablebases. Tablebase support can be enabled/disabled at the Makefile level as well, by setting syzygy=yes or syzygy=no. Big/little endian are both supported. No functional change (if Tablebases are not used). Resolves #6
This commit is contained in:
committed by
Gary Linscott
parent
4509eb1342
commit
7caa6cd338
@@ -12,6 +12,8 @@ to one search thread, so it is therefore recommended to inspect the value of
|
||||
the *Threads* UCI parameter, and to make sure it equals the number of CPU
|
||||
cores on your computer.
|
||||
|
||||
This version of Stockfish has support for Syzygybases.
|
||||
|
||||
|
||||
### Files
|
||||
|
||||
@@ -25,6 +27,58 @@ This distribution of Stockfish consists of the following files:
|
||||
that can be used to compile Stockfish on Unix-like systems.
|
||||
|
||||
|
||||
### Syzygybases
|
||||
|
||||
**Configuration**
|
||||
|
||||
Syzygybases are configured using the UCI options "SyzygyPath",
|
||||
"SyzygyProbeDepth", "Syzygy50MoveRule" and "SyzygyProbeLimit".
|
||||
|
||||
The option "SyzygyPath" should be set to the directory or directories that
|
||||
contain the .rtbw and .rtbz files. Multiple directories should be
|
||||
separated by ";" on Windows and by ":" on Unix-based operating systems.
|
||||
**Do not use spaces around the ";" or ":".**
|
||||
|
||||
Example: `C:\tablebases\wdl345;C:\tablebases\wdl6;D:\tablebases\dtz345;D:\tablebases\dtz6`
|
||||
|
||||
It is recommended to store .rtbw files on an SSD. There is no loss in
|
||||
storing the .rtbz files on a regular HD.
|
||||
|
||||
Increasing the "SyzygyProbeDepth" option lets the engine probe less
|
||||
aggressively. Set this option to a higher value if you experience too much
|
||||
slowdown (in terms of nps) due to TB probing.
|
||||
|
||||
Set the "Syzygy50MoveRule" option to false if you want tablebase positions
|
||||
that are drawn by the 50-move rule to count as win or loss. This may be useful
|
||||
for correspondence games (because of tablebase adjudication).
|
||||
|
||||
The "SyzygyProbeLimit" option should normally be left at its default value.
|
||||
|
||||
**What to expect**
|
||||
If the engine is searching a position that is not in the tablebases (e.g.
|
||||
a position with 7 pieces), it will access the tablebases during the search.
|
||||
If the engine reports a very large score (typically 123.xx), this means
|
||||
that it has found a winning line into a tablebase position.
|
||||
|
||||
If the engine is given a position to search that is in the tablebases, it
|
||||
will use the tablebases at the beginning of the search to preselect all
|
||||
good moves, i.e. all moves that preserve the win or preserve the draw while
|
||||
taking into account the 50-move rule.
|
||||
It will then perform a search only on those moves. **The engine will not move
|
||||
immediately**, unless there is only a single good move. **The engine likely
|
||||
will not report a mate score even if the position is known to be won.**
|
||||
|
||||
It is therefore clear that behaviour is not identical to what one might
|
||||
be used to with Nalimov tablebases. There are technical reasons for this
|
||||
difference, the main technical reason being that Nalimov tablebases use the
|
||||
DTM metric (distance-to-mate), while Syzygybases use a variation of the
|
||||
DTZ metric (distance-to-zero, zero meaning any move that resets the 50-move
|
||||
counter). This special metric is one of the reasons that Syzygybases are
|
||||
more compact than Nalimov tablebases, while still storing all information
|
||||
needed for optimal play and in addition being able to take into account
|
||||
the 50-move rule.
|
||||
|
||||
|
||||
### Compiling it yourself
|
||||
|
||||
On Unix-like systems, it should be possible to compile Stockfish
|
||||
|
||||
Reference in New Issue
Block a user