From: VoyagerOne Date: Wed, 29 Jul 2015 16:50:45 +0000 (+0800) Subject: PV refutation penalty X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=a2410227cc8df5373d6970bfe63bbd3df5287c8c PV refutation penalty Extra penalty for PV move in previous ply when it gets refuted. STC: LLR: 4.49 (-2.94,2.94) [-1.50,4.50] Total: 41094 W: 7889 L: 7620 D: 25585 LTC: LLR: 2.95 (-2.94,2.94) [0.00,6.00] Total: 12304 W: 1967 L: 1811 D: 8526 Bench: 8373608 Resolves #386 --- diff --git a/src/search.cpp b/src/search.cpp index 96896689..3ac52f8c 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -553,7 +553,7 @@ namespace { goto moves_loop; } - moveCount = quietCount = 0; + moveCount = quietCount = ss->moveCount = 0; bestValue = -VALUE_INFINITE; ss->ply = (ss-1)->ply + 1; @@ -826,6 +826,8 @@ moves_loop: // When in check and at SpNode search starts from here } else ++moveCount; + + ss->moveCount = moveCount; if (RootNode) { @@ -934,6 +936,7 @@ moves_loop: // When in check and at SpNode search starts from here if (!RootNode && !SpNode && !pos.legal(move, ci.pinned)) { moveCount--; + ss->moveCount = moveCount; continue; } @@ -1425,8 +1428,8 @@ moves_loop: // When in check and at SpNode search starts from here cmh.update(pos.moved_piece(quiets[i]), to_sq(quiets[i]), -bonus); } - // Extra penalty for TT move in previous ply when it gets refuted - if (is_ok((ss-2)->currentMove) && (ss-1)->currentMove == (ss-1)->ttMove && !pos.captured_piece_type()) + // Extra penalty for PV move in previous ply when it gets refuted + if (is_ok((ss-2)->currentMove) && (ss-1)->moveCount==1 && !pos.captured_piece_type()) { Square prevPrevSq = to_sq((ss-2)->currentMove); HistoryStats& ttMoveCmh = CounterMovesHistory[pos.piece_on(prevPrevSq)][prevPrevSq]; diff --git a/src/search.h b/src/search.h index 4e1d3c35..5ba95fe0 100644 --- a/src/search.h +++ b/src/search.h @@ -47,6 +47,7 @@ struct Stack { Depth reduction; Value staticEval; bool skipEarlyPruning; + int moveCount; }; /// RootMove struct is used for moves at the root of the tree. For each root move