Skip to content

Commit

Permalink
Extend quiet tt moves at PvNodes
Browse files Browse the repository at this point in the history
Idea is to extend some quiet ttMoves if a lot of things indicate that
the transposition table move is going to be a good move:

1) move being a killer - so being the best move in nearby node;
2) reply continuation history is really good.

This is basically saying that move is good "in general" in this position,
that it is a good reply to the opponent move and that it was the best in
this position somewhere in search - so extending it makes a lot of sense.
In general in past year we had a lot of extensions of different types,
maybe there is something more in it :)

passed STC
LLR: 2.96 (-2.94,2.94) <-0.50,2.50>
Total: 42944 W: 10932 L: 10695 D: 21317
Ptnml(0-2): 141, 4869, 11210, 5116, 136
https://tests.stockfishchess.org/tests/view/614cca8e7bdc23e77ceb89f0

passed LTC
LLR: 2.93 (-2.94,2.94) <0.50,3.50>
Total: 156848 W: 39473 L: 38893 D: 78482
Ptnml(0-2): 125, 16327, 44913, 16961, 98
https://tests.stockfishchess.org/tests/view/614cf93d7bdc23e77ceb8a13

closes #3719

Bench: 5714575
  • Loading branch information
Vizvezdenec authored and snicolet committed Sep 26, 2021
1 parent 919da65 commit 21ad356
Showing 1 changed file with 12 additions and 6 deletions.
18 changes: 12 additions & 6 deletions src/search.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1147,7 +1147,14 @@ namespace {
// Check extensions
else if ( givesCheck
&& depth > 6
&& abs(ss->staticEval) > Value(100))
&& abs(ss->staticEval) > 100)
extension = 1;

// Quiet ttMove extensions
else if ( PvNode
&& move == ttMove
&& move == ss->killers[0]
&& (*contHist[0])[movedPiece][to_sq(move)] >= 10000)
extension = 1;

// Add extension to new depth
Expand Down Expand Up @@ -1223,11 +1230,10 @@ namespace {
// Decrease/increase reduction for moves with a good/bad history (~30 Elo)
r -= ss->statScore / 14721;

// In general we want to cap the LMR depth search at newDepth. But if
// reductions are really negative and movecount is low, we allow this move
// to be searched deeper than the first move in specific cases (note that
// this may lead to hidden double extensions if newDepth got it own extension
// before).
// In general we want to cap the LMR depth search at newDepth. But if reductions
// are really negative and movecount is low, we allow this move to be searched
// deeper than the first move (this may lead to hidden double extensions if
// newDepth got its own extension before).
int deeper = r >= -1 ? 0
: noLMRExtension ? 0
: moveCount <= 5 ? 1
Expand Down

0 comments on commit 21ad356

Please sign in to comment.