summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
215cd19)
Current master employs a scheme to adjust reductions on singular
nodes that is somewhat controversial, see
https://github.com/official-stockfish/Stockfish/pull/2167
This patch removes this use of a search result outside of [a,b],
by observing that the main effect of this code is to adjust the
reduction by an average of ~2 (1.7) rather than 1.
Claims the first blue at STC and LTC:
STC:
LLR: 2.96 (-2.94,2.94) [-3.00,1.00]
Total: 30142 W: 6547 L: 6442 D: 17153
http://tests.stockfishchess.org/tests/view/
5daf16c40ebc5902c06da566
LTC:
LLR: 2.96 (-2.94,2.94) [-3.00,1.00]
Total: 45715 W: 7380 L: 7298 D: 31037
http://tests.stockfishchess.org/tests/view/
5daf2f3c0ebc5902c06da6c7
Closes https://github.com/official-stockfish/Stockfish/pull/2367
Bench:
5115841
Depth extension, newDepth;
Value bestValue, value, ttValue, eval, maxValue;
bool ttHit, ttPv, inCheck, givesCheck, improving, doLMR, priorCapture;
Depth extension, newDepth;
Value bestValue, value, ttValue, eval, maxValue;
bool ttHit, ttPv, inCheck, givesCheck, improving, doLMR, priorCapture;
- bool captureOrPromotion, doFullDepthSearch, moveCountPruning, ttCapture;
+ bool captureOrPromotion, doFullDepthSearch, moveCountPruning, ttCapture, singularLMR;
- int moveCount, captureCount, quietCount, singularLMR;
+ int moveCount, captureCount, quietCount;
// Step 1. Initialize node
Thread* thisThread = pos.this_thread();
inCheck = pos.checkers();
priorCapture = pos.captured_piece();
Color us = pos.side_to_move();
// Step 1. Initialize node
Thread* thisThread = pos.this_thread();
inCheck = pos.checkers();
priorCapture = pos.captured_piece();
Color us = pos.side_to_move();
- moveCount = captureCount = quietCount = singularLMR = ss->moveCount = 0;
+ moveCount = captureCount = quietCount = ss->moveCount = 0;
bestValue = -VALUE_INFINITE;
maxValue = VALUE_INFINITE;
bestValue = -VALUE_INFINITE;
maxValue = VALUE_INFINITE;
ss->killers);
value = bestValue;
ss->killers);
value = bestValue;
- moveCountPruning = false;
+ singularLMR = moveCountPruning = false;
ttCapture = ttMove && pos.capture_or_promotion(ttMove);
// Mark this node as being searched
ttCapture = ttMove && pos.capture_or_promotion(ttMove);
// Mark this node as being searched
if (value < singularBeta)
{
extension = 1;
if (value < singularBeta)
{
extension = 1;
- singularLMR++;
-
- if (value < singularBeta - std::min(4 * depth, 36))
- singularLMR++;
r--;
// Decrease reduction if ttMove has been singularly extended
r--;
// Decrease reduction if ttMove has been singularly extended
+ if (singularLMR)
+ r -= 2;
if (!captureOrPromotion)
{
if (!captureOrPromotion)
{