ShashChess Presentation.
Posted: Mon Aug 29, 2022 1:30 am
ShashChess is a free UCI chess engine derived from Stockfish family chess engines. The goal is to apply Alexander Shashin theory to improve
In ShashChess a Handicap mode is inserted:
UCI_LimitStrength
Activate the handicap mode and the related following options: in this case, the evaluation function is always the classical one.
UCI_Elo (CB only for chessbase products users)
Default 2850, min 1350, max 2850 UCI-protocol compliant version of Strength parameter. A very refined handicap mode based on the four famous sovietic chess school levels: Internally the UCI_Elo value will be converted to a Strength value according to the following table:
beginner: elo < 2000
intermediate: 2000 <= elo < 2200
advanced: 2200 <= elo < 2400
expert: elo > 2400
Every school corresponds to a different evaluation function, more and more refined. The UCI_Elo feature is controlled by the chess GUI, and usually doesn't appear in the configuration window.
Handicapped Depth
The engine stop calculating when it joins the handicapped depth, based on the following table:
Elo range Handicapped Depth
[0,1999] [1,6]
[2000,2199] [7,9]
[2200,2399] [10,12]
[2400,2850] [13,20]
In ShashChess other interesting features are implemented:
Advanced Chess Analyzer
Advanced analysis options, highly recommended for CC play
Full depth threads
Integer, Default: 0, Min: 0, Max: 512 The number of settled threads to use for a full depth brute force search. If the number is greater than threads number, all threads are for full depth brute force search.
MonteCarlo Tree Search section (experimental: thanks to original Stephan Nicolet work)
MCTS
Boolean, Default: False If activated, the engine uses the MonteCarlo Tree Search in the manner specified by the following parameters.
MCTSThreads
Integer, Default: 0, Min: 0, Max: 512 The number of settled threads to use for MCTS search except the first (main) one always for alpha-beta search. In particular, if the number is greater than threads number, they will all do a montecarlo tree search, always except the first (main) for alpha-beta search.
Multi Strategy
Integer, Default: 20, Min: 0, Max: 100 Only in multi mcts mode, for tree policy.
Multi MinVisits
Integer, Default: 5, Min: 0, Max: 1000 Only in multi mcts mode, for Upper Confidence Bound.
Live Book section (thanks to Eman's author Khalid Omar for windows builds)
Live Book (checkbox)
Boolean, Default: False If activated, the engine uses the livebook as primary choice.
Live Book URL
The default is the online chessdb https://www.chessdb.cn/queryc_en/, a wonderful project by noobpwnftw (thanks to him!)
https://github.com/noobpwnftw/chessdb http://talkchess.com/forum3/viewtopic.p ... it=chessdb
The private application can also learn from this live db.
Live Book Timeout
Default 5000, min 0, max 10000 Only for bullet games, use a lower value, for example, 1500.
Live Book Retry
Default 3, min 1, max 100 Max times the engine tries to contribute (if the corresponding option is activated: see below) to the live book. If 0, the engine doesn't use the livebook.
Live Book Diversity
Boolean, Default: False If activated, the engine varies its play, reducing conversely its strength because already the live chessdb is very large.
Live Book Contribute
Boolean, Default: False If activated, the engine sends a move, not in live chessdb, in its queue to be analysed. In this manner, we have a kind of learning cloud.
Live Book Depth
Default 100, min 1, max 100 Depth of live book moves.
Full depth threads
Default 0, min 0, max 512 The number of threads doing a full depth analysis (brute force). Useful in analysis of particular hard positions to limit the strong pruning's drawbacks.
Opening variety
Integer, Default: 0, Min: 0, Max: 40 To play different opening lines from default (0), if not from book (see below). Higher variety -> more probable loss of ELO
Concurrent Experience
Boolean, Default: False Set this option to true when running under CuteChess and you experiences problems with concurrency > 1 When this option is true, the saved experience file name will be modified to something like experience-64a4c665c57504a4.bin (64a4c665c57504a4 is random). Each concurrent instance of BrainLearn will have its own experience file name, however, all the concurrent instances will read "experience.bin" at start up.
Use NNUE
Toggle between the NNUE and classical evaluation functions. If set to "true", the network parameters must be available to load from file (see also EvalFile), if they are not embedded in the binary.
GoldDigger
Boolean, Default: False If activated, the engine favors depth over the pruning of various selectivity techniques. In this way, it can uncover normally hidden possibilities. In this mode, it solves many more hard positions, although it loses slightly in absolute game strength.
Persisted learning
Default is Off: no learning algorithm. The other values are "Standard" and "Self", this last to activate the Q-learning, optimized for self play. Some GUIs don't write the experience file in some game's modes because the uci protocol is differently implemented
The persisted learning is based on a collection of one or more positions stored with the following format (similar to in memory Stockfish Transposition Table):
best move
board signature (hash key)
best move depth
best move score
best move performance , a new parameter you can calculate with any learning application supporting this specification. An example is the private one, kernel of SaaS part of Alpha-Chess AI portal. The idea is to calculate it based on pattern recognition concept. In the portal, you can also exploit the reports of another NLG (virtual trainer) application and buy the products in the digishop based on all this. This open-source part has the performance default. So, it doesn't use it. Clearly, even if already strong, this private learning algorithm is a lot stronger as demostrate here: Graphical result
This file is loaded in an hashtable at the engine load and updated each time the engine receive quit or stop uci command. When BrainLearn starts a new game or when we have max 8 pieces on the chessboard, the learning is activated and the hash table updated each time the engine has a best score at a depth >= 4 PLIES, according to Stockfish aspiration window.
At the engine loading, there is an automatic merge to experience.bin files, if we put the other ones, based on the following convention:
<fileType><qualityIndex>.bin
where
fileType="experience"/"bin"
qualityIndex , an integer, incrementally from 0 on based on the file's quality assigned by the user (0 best quality and so on)
N.B.
Because of disk access, to be effective, the learning must be made at no bullet time controls (less than 5 minutes/game).
Read only learning
Boolean, Default: False If activated, the learning file is only read.
Shashin section
Default: no option settled The engine will determine dynamically the position's type starting from a "Capablanca/default positions". If one or more (mixed algorithms/positions types at the boundaries) of the seven following options are settled, it will force the initial position/algorithm understanding
Centipawns range Shashin position’s type
< -140 High Petrosian
[-140, -70) Medium Petrosian
[-70, -35) Low Petrosian
[-35, -15] Caos: Capablanca-Low Petrosian
(-15,15) Capablanca
[15, 35] Caos: Capablanca-Low Tal
(35,70] Low Tal
(70,140] Middle Tal
> 140 High Tal
Tal
Attack position/algorithm
Capablanca
Strategical algorithm (for quiescent positions)
Petrosian
Defense position/algorithm (the "reversed colors" Tal)
(to be edited)
- base engine strength
- engine's behaviour on the different positions types (requiring the corresponding algorithm) :
__Tal
__Capablanca
__Petrosian
__the mixed ones
____Tal-Capablanca
____Capablanca-Petrosian
____Tal-Capablanca-Petrosian
In ShashChess a Handicap mode is inserted:
UCI_LimitStrength
Activate the handicap mode and the related following options: in this case, the evaluation function is always the classical one.
UCI_Elo (CB only for chessbase products users)
Default 2850, min 1350, max 2850 UCI-protocol compliant version of Strength parameter. A very refined handicap mode based on the four famous sovietic chess school levels: Internally the UCI_Elo value will be converted to a Strength value according to the following table:
beginner: elo < 2000
intermediate: 2000 <= elo < 2200
advanced: 2200 <= elo < 2400
expert: elo > 2400
Every school corresponds to a different evaluation function, more and more refined. The UCI_Elo feature is controlled by the chess GUI, and usually doesn't appear in the configuration window.
Handicapped Depth
The engine stop calculating when it joins the handicapped depth, based on the following table:
Elo range Handicapped Depth
[0,1999] [1,6]
[2000,2199] [7,9]
[2200,2399] [10,12]
[2400,2850] [13,20]
In ShashChess other interesting features are implemented:
Advanced Chess Analyzer
Advanced analysis options, highly recommended for CC play
Full depth threads
Integer, Default: 0, Min: 0, Max: 512 The number of settled threads to use for a full depth brute force search. If the number is greater than threads number, all threads are for full depth brute force search.
MonteCarlo Tree Search section (experimental: thanks to original Stephan Nicolet work)
MCTS
Boolean, Default: False If activated, the engine uses the MonteCarlo Tree Search in the manner specified by the following parameters.
MCTSThreads
Integer, Default: 0, Min: 0, Max: 512 The number of settled threads to use for MCTS search except the first (main) one always for alpha-beta search. In particular, if the number is greater than threads number, they will all do a montecarlo tree search, always except the first (main) for alpha-beta search.
Multi Strategy
Integer, Default: 20, Min: 0, Max: 100 Only in multi mcts mode, for tree policy.
Multi MinVisits
Integer, Default: 5, Min: 0, Max: 1000 Only in multi mcts mode, for Upper Confidence Bound.
Live Book section (thanks to Eman's author Khalid Omar for windows builds)
Live Book (checkbox)
Boolean, Default: False If activated, the engine uses the livebook as primary choice.
Live Book URL
The default is the online chessdb https://www.chessdb.cn/queryc_en/, a wonderful project by noobpwnftw (thanks to him!)
https://github.com/noobpwnftw/chessdb http://talkchess.com/forum3/viewtopic.p ... it=chessdb
The private application can also learn from this live db.
Live Book Timeout
Default 5000, min 0, max 10000 Only for bullet games, use a lower value, for example, 1500.
Live Book Retry
Default 3, min 1, max 100 Max times the engine tries to contribute (if the corresponding option is activated: see below) to the live book. If 0, the engine doesn't use the livebook.
Live Book Diversity
Boolean, Default: False If activated, the engine varies its play, reducing conversely its strength because already the live chessdb is very large.
Live Book Contribute
Boolean, Default: False If activated, the engine sends a move, not in live chessdb, in its queue to be analysed. In this manner, we have a kind of learning cloud.
Live Book Depth
Default 100, min 1, max 100 Depth of live book moves.
Full depth threads
Default 0, min 0, max 512 The number of threads doing a full depth analysis (brute force). Useful in analysis of particular hard positions to limit the strong pruning's drawbacks.
Opening variety
Integer, Default: 0, Min: 0, Max: 40 To play different opening lines from default (0), if not from book (see below). Higher variety -> more probable loss of ELO
Concurrent Experience
Boolean, Default: False Set this option to true when running under CuteChess and you experiences problems with concurrency > 1 When this option is true, the saved experience file name will be modified to something like experience-64a4c665c57504a4.bin (64a4c665c57504a4 is random). Each concurrent instance of BrainLearn will have its own experience file name, however, all the concurrent instances will read "experience.bin" at start up.
Use NNUE
Toggle between the NNUE and classical evaluation functions. If set to "true", the network parameters must be available to load from file (see also EvalFile), if they are not embedded in the binary.
GoldDigger
Boolean, Default: False If activated, the engine favors depth over the pruning of various selectivity techniques. In this way, it can uncover normally hidden possibilities. In this mode, it solves many more hard positions, although it loses slightly in absolute game strength.
Persisted learning
Default is Off: no learning algorithm. The other values are "Standard" and "Self", this last to activate the Q-learning, optimized for self play. Some GUIs don't write the experience file in some game's modes because the uci protocol is differently implemented
The persisted learning is based on a collection of one or more positions stored with the following format (similar to in memory Stockfish Transposition Table):
best move
board signature (hash key)
best move depth
best move score
best move performance , a new parameter you can calculate with any learning application supporting this specification. An example is the private one, kernel of SaaS part of Alpha-Chess AI portal. The idea is to calculate it based on pattern recognition concept. In the portal, you can also exploit the reports of another NLG (virtual trainer) application and buy the products in the digishop based on all this. This open-source part has the performance default. So, it doesn't use it. Clearly, even if already strong, this private learning algorithm is a lot stronger as demostrate here: Graphical result
This file is loaded in an hashtable at the engine load and updated each time the engine receive quit or stop uci command. When BrainLearn starts a new game or when we have max 8 pieces on the chessboard, the learning is activated and the hash table updated each time the engine has a best score at a depth >= 4 PLIES, according to Stockfish aspiration window.
At the engine loading, there is an automatic merge to experience.bin files, if we put the other ones, based on the following convention:
<fileType><qualityIndex>.bin
where
fileType="experience"/"bin"
qualityIndex , an integer, incrementally from 0 on based on the file's quality assigned by the user (0 best quality and so on)
N.B.
Because of disk access, to be effective, the learning must be made at no bullet time controls (less than 5 minutes/game).
Read only learning
Boolean, Default: False If activated, the learning file is only read.
Shashin section
Default: no option settled The engine will determine dynamically the position's type starting from a "Capablanca/default positions". If one or more (mixed algorithms/positions types at the boundaries) of the seven following options are settled, it will force the initial position/algorithm understanding
Centipawns range Shashin position’s type
< -140 High Petrosian
[-140, -70) Medium Petrosian
[-70, -35) Low Petrosian
[-35, -15] Caos: Capablanca-Low Petrosian
(-15,15) Capablanca
[15, 35] Caos: Capablanca-Low Tal
(35,70] Low Tal
(70,140] Middle Tal
> 140 High Tal
Tal
Attack position/algorithm
Capablanca
Strategical algorithm (for quiescent positions)
Petrosian
Defense position/algorithm (the "reversed colors" Tal)
(to be edited)