Commit
Instead of a fixed reduction of ONE_PLY, now Null move dynamic reduction based on value can grow larger in case we are above beta of a value much higher then PawnValueMg. Note that now an eval returning VALUE_KNOWN_WIN makes null search to drop in qsearch. Passed both short TC: LLR: 2.95 (-2.94,2.94) [-1.50,4.50] Total: 26141 W: 4871 L: 4699 D: 16571 And long TC: LLR: 2.97 (-2.94,2.94) [0.00,6.00] Total: 33695 W: 5309 L: 5056 D: 23330 bench: 7356053
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -628,12 +628,12 @@ namespace { | |
{ | ||
ss->currentMove = MOVE_NULL; | ||
|
||
// Null move dynamic reduction based on depth | ||
Depth R = 3 * ONE_PLY + depth / 4; | ||
assert(eval - beta >= 0); | ||
|
||
// Null move dynamic reduction based on value | ||
if (eval - PawnValueMg > beta) | ||
R += ONE_PLY; | ||
// Null move dynamic reduction based on depth and value | ||
Depth R = 3 * ONE_PLY | ||
+ depth / (2 * ONE_PLY) | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
mcostalba
via email
Owner
|
||
+ int(eval - beta) / PawnValueMg * ONE_PLY; | ||
|
||
pos.do_null_move(st); | ||
(ss+1)->skipNullMove = true; | ||
|
@@ -653,7 +653,8 @@ namespace { | |
|
||
// Do verification search at high depths | ||
ss->skipNullMove = true; | ||
Value v = search<NonPV>(pos, ss, alpha, beta, depth-R, false); | ||
Value v = depth-R < ONE_PLY ? qsearch<NonPV, false>(pos, ss, alpha, beta, DEPTH_ZERO) | ||
: search<NonPV>(pos, ss, alpha, beta, depth-R, false); | ||
ss->skipNullMove = false; | ||
|
||
if (v >= beta) | ||
|
Change of |depth / 4| to |depth / (2 * ONE_PLY)| doesn't make sense. The former doesn't depend on value of ONE_PLY, but the latter does.