X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=57a5517614e67c5f9f37febb857b9d2a0b3840d5;hp=727990dc9d354b753004ae37b61afd7f2c1d28ad;hb=68d61b80c60a81055a2ffb2e251a237b979e9b31;hpb=7e9f776fcafe0121c7449f4339b26d77c14adf50 diff --git a/src/search.cpp b/src/search.cpp index 727990dc..57a55176 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; @@ -674,8 +674,7 @@ namespace { if ( !PvNode && depth < 4 * ONE_PLY && eval + razor_margin(depth) <= alpha - && ttMove == MOVE_NONE - && !pos.pawn_on_7th(pos.side_to_move())) + && ttMove == MOVE_NONE) { if ( depth <= ONE_PLY && eval + razor_margin(3 * ONE_PLY) <= alpha) @@ -750,7 +749,7 @@ namespace { assert((ss-1)->currentMove != MOVE_NONE); assert((ss-1)->currentMove != MOVE_NULL); - MovePicker mp(pos, ttMove, History, CounterMovesHistory, pos.captured_piece_type()); + MovePicker mp(pos, ttMove, History, CounterMovesHistory, PieceValue[MG][pos.captured_piece_type()]); CheckInfo ci(pos); while ((move = mp.next_move()) != MOVE_NONE) @@ -770,9 +769,9 @@ namespace { && !ttMove && (PvNode || ss->staticEval + 256 >= beta)) { - Depth d = 2 * (depth - 2 * ONE_PLY) - (PvNode ? DEPTH_ZERO : depth / 2); + Depth d = depth - 2 * ONE_PLY - (PvNode ? DEPTH_ZERO : depth / 4); ss->skipEarlyPruning = true; - search(pos, ss, alpha, beta, d / 2, true); + search(pos, ss, alpha, beta, d, true); ss->skipEarlyPruning = false; tte = TT.probe(posKey, ttHit); @@ -822,11 +821,11 @@ moves_loop: // When in check and at SpNode search starts from here if (!pos.legal(move, ci.pinned)) continue; - moveCount = ++splitPoint->moveCount; + ss->moveCount = moveCount = ++splitPoint->moveCount; splitPoint->spinlock.release(); } else - ++moveCount; + ss->moveCount = ++moveCount; if (RootNode) { @@ -934,7 +933,7 @@ moves_loop: // When in check and at SpNode search starts from here // Check for legality just before making the move if (!RootNode && !SpNode && !pos.legal(move, ci.pinned)) { - moveCount--; + ss->moveCount = --moveCount; continue; } @@ -959,10 +958,9 @@ moves_loop: // When in check and at SpNode search starts from here [pos.piece_on(to_sq(move))][to_sq(move)] <= VALUE_ZERO)) ss->reduction += ONE_PLY; - if ( move == countermove - || ( History[pos.piece_on(to_sq(move))][to_sq(move)] > VALUE_ZERO - && CounterMovesHistory[pos.piece_on(prevMoveSq)][prevMoveSq] - [pos.piece_on(to_sq(move))][to_sq(move)] > VALUE_ZERO)) + if ( History[pos.piece_on(to_sq(move))][to_sq(move)] > VALUE_ZERO + && CounterMovesHistory[pos.piece_on(prevMoveSq)][prevMoveSq] + [pos.piece_on(to_sq(move))][to_sq(move)] > VALUE_ZERO) ss->reduction = std::max(DEPTH_ZERO, ss->reduction - ONE_PLY); // Decrease reduction for moves that escape a capture @@ -1427,8 +1425,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) + // 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];