increasing futility prunning depth
Posted: Fri Apr 28, 2017 4:31 pm
Hi!
So right now I'm doing LMR for depths >=4 and FP for depths <= 3. I do futility outside the move testing loop.
I wanted to increase the maximum futility depth to 4. Simply increasing the depth failed, but what seems to work is testing that at the last depth (4) there was no hash hit. IOW: for depths 1, 2, 3 no change; for depth 4 enable futility when there is no hash hit.
Why does this work? I expected the reverse to be true. A hash hit means we already have a good move so weak moves can be prunned.
So right now I'm doing LMR for depths >=4 and FP for depths <= 3. I do futility outside the move testing loop.
I wanted to increase the maximum futility depth to 4. Simply increasing the depth failed, but what seems to work is testing that at the last depth (4) there was no hash hit. IOW: for depths 1, 2, 3 no change; for depth 4 enable futility when there is no hash hit.
Why does this work? I expected the reverse to be true. A hash hit means we already have a good move so weak moves can be prunned.
Code: Select all
const futilityDepthLimit = 4
if depth <= futilityDepthLimit && // enable when close to the frontier
(depth < futilityDepthLimit || hash == NullMove) &&
!sideIsChecked && // disable in check
!pvNode && // disable in pv nodes
KnownLossScore < α && β < KnownWinScore { // disable when searching for a mate