1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-07-11 19:49:14 +00:00

Simplification: do razoring only for depth 1

The razoring heuristic is quite a drastic pruning technique,
using a depth 0 search at internal nodes of the search tree
to estimate the true value of depth n nodes. This patch limits
this razoring to the case of internal nodes of depth 1.
Author: Jarrod Torriero (DU-jdto)

STC:
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 8043 W: 1865 L: 1716 D: 4462
http://tests.stockfishchess.org/tests/view/5a90a9290ebc590297cc86c1

LTC:
LLR: 2.95 (-2.94,2.94) [-3.00,1.00]
Total: 32890 W: 5577 L: 5476 D: 21837
http://tests.stockfishchess.org/tests/view/5a90c8510ebc590297cc86d5

Opportunities opened by this patch: it would be interesting to
know if it brings Elo to re-introduce razoring or soft razoring
at depth >= 2, maybe using a larger margin to compensate for the
increased pruning effect.

Bench: 5227124
This commit is contained in:
DU-jdto 2018-02-24 13:06:18 +01:00 committed by Stéphane Nicolet
parent 9246e4a6f9
commit 5d57bb467a

View file

@ -667,17 +667,9 @@ namespace {
// Step 7. Razoring (skipped when in check)
if ( !PvNode
&& depth < 3 * ONE_PLY
&& depth <= ONE_PLY
&& eval + RazorMargin <= alpha)
{
if (depth <= ONE_PLY)
return qsearch<NonPV, false>(pos, ss, alpha, alpha+1);
Value ralpha = alpha - RazorMargin;
Value v = qsearch<NonPV, false>(pos, ss, ralpha, ralpha+1);
if (v <= ralpha)
return v;
}
return qsearch<NonPV, false>(pos, ss, alpha, alpha+1);
// Step 8. Futility pruning: child node (skipped when in check)
if ( !rootNode