Hash result futility pruning

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

connor_mcmonigle
Posts: 530
Joined: Sun Sep 06, 2020 4:40 am
Full name: Connor McMonigle

Re: Hash result futility pruning

Post by connor_mcmonigle »

As of somewhat recently, I rely on a pruning heuristic in Seer which strikes me as fairly similar. Testing on OpenBench revealed the initial implementation to be worth 5-8 elo, though SPRT elo estimates are unreliable. Further modification/simplifications to the base implementation yielded possibly another 3 elo. I plan to run a RT somewhat soon to get a more reliable estimate for how much elo this heuristic is worth.

The idea is to catch cases where a capture clearly refutes the previous move at high depth. Note that at low depth, static null move pruning will catch such cases provided there's a TT hit and one adjusts their static eval based on the TT entry's score and bounds. At higher depth, while null move pruning isn't disabled, the side to move's tempo is likely very important if the TT best move is a capture. My implementation seeks to patch this pruning "hole".

Currently, I have the following:

https://github.com/connormcmonigle/seer ... ker.h#L351

Code: Select all


    const bool prob_prune = !is_pv && !excluded_move && entry && depth >= 4 &&
                            entry->best_move().is_capture() && entry->bound() == bound_type::lower &&
                            entry->score() > beta + 768 &&
                            entry->depth() + 2 >= depth;

    if (prob_prune) { return beta; }

I've not tried the rather Stockfish specific probcut implementation in Seer, though I imagine this heuristic likely covers similar cases. As the above netted me more elo than probcut is worth in many engines, I don't intend to experiment with Stockfish probcut in the short term.

http://chess.grantnet.us/test/13119/
http://chess.grantnet.us/test/13120/
http://chess.grantnet.us/test/13130/
http://chess.grantnet.us/test/13131/
http://chess.grantnet.us/test/13175/
http://chess.grantnet.us/test/13176/