LMR for captures not cracking alpha
authorStefan Geschwentner <Stefan-Geschwentner@web.de>
Sun, 5 May 2019 13:58:52 +0000 (15:58 +0200)
committerStéphane Nicolet <cassio@free.fr>
Sun, 5 May 2019 21:18:17 +0000 (23:18 +0200)
Enable LMR for a capture/promotion move which does not seem
to have a good chance to fail high according to static eval
and value of captured piece.

STC:
LLR: 2.96 (-2.94,2.94) [0.50,4.50]
Total: 40477 W: 9158 L: 8792 D: 22527
http://tests.stockfishchess.org/tests/view/5cceedc60ebc5925cf04174f

LTC:
LLR: 2.94 (-2.94,2.94) [0.00,3.50]
Total: 21926 W: 3873 L: 3634 D: 14419
http://tests.stockfishchess.org/tests/view/5ccf04310ebc5925cf041ab0

Bench: 3644175

src/search.cpp

index 36e73a09cd8f1a2970edc9afdd405506da4b0baf..bafc374ba29993ab05b62c8ec95729990a7fbbb8 100644 (file)
@@ -1008,7 +1008,9 @@ moves_loop: // When in check, search starts from here
       // re-searched at full depth.
       if (    depth >= 3 * ONE_PLY
           &&  moveCount > 1
       // re-searched at full depth.
       if (    depth >= 3 * ONE_PLY
           &&  moveCount > 1
-          && (!captureOrPromotion || moveCountPruning))
+          && (  !captureOrPromotion
+              || moveCountPruning
+              || ss->staticEval + PieceValue[EG][pos.captured_piece()] <= alpha))
       {
           Depth r = reduction<PvNode>(improving, depth, moveCount);
 
       {
           Depth r = reduction<PvNode>(improving, depth, moveCount);