A try to implement Alexander Shashin's theory on a Stockfish's derived chess engine
Improved Shashin theory Stockfish patch Remove maxNextDepth This patch allows full PV search to have double extensions as well when extension == 1 && doDeeperSearch && doEvenDeeperSearch && !doShallowerSearch is true, which is extremely rare to occur.
ShashChess 27.2 No GoldDigger Update default net to nn-1e7ca356472e.nnue
Improved GoldDigger Stockfish patch Fix stack initialization This fixes a bug where on line 278 the Stack::staticEvals are initialized to 0. However VALUE_NONE is defined to be 32002 so this is a bug in master. It is probably due to the calculation of improvement, where staticEval prior to rootPos can be accessed.
Deeply refined Shashin theory Reintroduced GD Stockfish patch: Update default net to nn-60fa44e376d9.nnue
ShashChess 26.2 Eliminated GoldDigger. Stockfish patch Fix bestThread selection If multiple threads have the same best move, pick the thread with the largest contribution to the confidence vote. This thread will later be used to display PV, so this patch is about user-friendliness and/or least surprises, it non-functional for playing strenght.
closes #4246
No functional change
ShashChess 26.1 Improved optimism based on Shashin and alignement score/gui. Fixed Opening Variety
Stockfish patch Correctly output lowerbound/upperbound in threaded searches fixes the lowerbound/upperbound output by taking the alpha,beta bracket into account also if a bestThread is selected that is different from the master thread.
Instead of keeping track which bounds where used in the specific search, in this version we simply store the quality (exact, upperbound, lowerbound) of the score along with the actual score as information on rootMove.
closes #4239
No functional change
ShashChess 26 Introduced contempt by Shashin
ShashChess 25.4 Reintroduced mctsThreads option Stockfish patch Author: Joost VandeVondele Date: Sat Nov 5 09:15:53 2022 +0100 Timestamp: 1667636153 Normalize evaluation
Normalizes the internal value as reported by evaluate or search to the UCI centipawn result used in output. This value is derived from the win_rate_model() such that Stockfish outputs an advantage of "100 centipawns" for a position if the engine has a 50% probability to win from this position in selfplay at fishtest LTC time control.
The reason to introduce this normalization is that our evaluation is, since NNUE, no longer related to the classical parameter PawnValueEg (=208). This leads to the current evaluation changing quite a bit from release to release, for example, the eval needed to have 50% win probability at fishtest LTC (in cp and internal Value):
June 2020 : 113cp (237) June 2021 : 115cp (240) April 2022 : 134cp (279) July 2022 : 167cp (348)
With this patch, a 100cp advantage will have a fixed interpretation, i.e. a 50% win chance. To keep this value steady, it will be needed to update the win_rate_model() from time to time, based on fishtest data. This analysis can be performed with a set of scripts currently available at https://github.com/vondele/WLD_model
fixes https://github.com/official-stockfish/Stockfish/issues/4155 closes https://github.com/official-stockfish/Stockfish/pull/4216
No functional change
Brainlearn 19.2 Improved montecarlo (thanks to Khalid Omar) Adjust reduction less at medium depths This patch dampens the reduction increase/decrease from statScore at mid-range depths. Inspired by patterns noticed in this tune: https://tests.stockfishchess.org/tests/view/635188930e5f47a8d0ffe8f5
Passed STC: https://tests.stockfishchess.org/tests/view/63599dfd6b27ef94d9ec04af LLR: 2.95 (-2.94,2.94) <0.00,2.00> Total: 87464 W: 23519 L: 23134 D: 40811 Ptnml(0-2): 319, 9599, 23524, 9958, 332
Passed LTC: https://tests.stockfishchess.org/tests/view/635a73046b27ef94d9ec2313 LLR: 2.94 (-2.94,2.94) <0.50,2.50> Total: 154792 W: 41746 L: 41214 D: 71832 Ptnml(0-2): 79, 15181, 46349, 15703, 84
closes #4213
Bench 4271738
ShashChess 25.2 Change log: -Modified Makefile for Android build when curl library gives problems. (USE_LIVEBOOK flag) - Fixed the GoldDigger speed problem by reading the GoldDigger option only once at the beginning of search - Fixed debug assertion in MonteCarlo::print_children() by using root instead of current_node() which is supposed to be equal to root - Fixed MCTS TT updating. - As code cleanup, removed the bool mcts parameter to search() and qsearch() and replaced it with a Thread flag, so that each threads knows if it is running MCTS or not Thanks to Khalid Omar