Permalink
Browse files

LMR simplification

Unify the "quiet" and "non-quiet" reduction rules for use at any kind of moves.
The idea behind it was that both rules reduce at similiar cases in master:
one directly for late previous moves and the other indirectly by using a
bad stat score which is used for most move sorting and so approximates the
late move condition.

For captures/promotions the old rule was triggered in 25% but the new
rule only for 3% of all cases (so now more reductions are done, whereas
for quiet moves reductions keep the same level).

STC:
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 162327 W: 35976 L: 36134 D: 90217
http://tests.stockfishchess.org/tests/view/5b6a9a430ebc5902bdb9d5c1

LTC:
LLR: 2.96 (-2.94,2.94) [-3.00,1.00]
Total: 29570 W: 5083 L: 4976 D: 19511
http://tests.stockfishchess.org/tests/view/5b6bc5d00ebc5902bdb9e9d6

Bench: 4526980
  • Loading branch information...
locutus2 authored and Stéphane Nicolet committed Aug 8, 2018
1 parent bd4d2b0 commit 198418ee67895817f2fad63f4935540e17cd7117
Showing with 5 additions and 11 deletions.
  1. +5 −11 src/search.cpp
@@ -998,18 +998,12 @@ namespace {
{
Depth r = reduction<PvNode>(improving, depth, moveCount);
if (captureOrPromotion) // (~5 Elo)
{
// Decrease reduction by comparing opponent's stat score
if ((ss-1)->statScore < 0)
r -= ONE_PLY;
}
else
{
// Decrease reduction if opponent's move count is high (~5 Elo)
if ((ss-1)->moveCount > 15)
r -= ONE_PLY;
// Decrease reduction if opponent's move count is high (~10 Elo)
if ((ss-1)->moveCount > 15)
r -= ONE_PLY;
if (!captureOrPromotion)
{
// Decrease reduction for exact PV nodes (~0 Elo)
if (pvExact)
r -= ONE_PLY;

0 comments on commit 198418e

Please sign in to comment.