X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=55df6172c64c779d890431bc6f0f42abab2cc9fb;hp=2d5fb6305b8d84dde21795edd409d2af2d88285c;hb=328bdd0947ea7903ee1061c8eb60bc3121a4eb19;hpb=770c8d92f3886d11ae88afef13f6552f9132a714 diff --git a/src/search.cpp b/src/search.cpp index 2d5fb630..55df6172 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -86,9 +86,8 @@ namespace { } // Add a small random component to draw evaluations to avoid 3fold-blindness - Value value_draw(Depth depth, Thread* thisThread) { - return depth < 4 * ONE_PLY ? VALUE_DRAW - : VALUE_DRAW + Value(2 * (thisThread->nodes & 1) - 1); + Value value_draw(Thread* thisThread) { + return VALUE_DRAW + Value(2 * (thisThread->nodes & 1) - 1); } // Skill structure is used to implement strength limit @@ -192,7 +191,7 @@ namespace { void Search::init() { for (int i = 1; i < MAX_MOVES; ++i) - Reductions[i] = int(23.4 * std::log(i)); + Reductions[i] = int((23.4 + std::log(Threads.size()) / 2) * std::log(i)); } @@ -574,7 +573,7 @@ namespace { && !rootNode && pos.has_game_cycle(ss->ply)) { - alpha = value_draw(depth, pos.this_thread()); + alpha = value_draw(pos.this_thread()); if (alpha >= beta) return alpha; } @@ -624,7 +623,7 @@ namespace { || pos.is_draw(ss->ply) || ss->ply >= MAX_PLY) return (ss->ply >= MAX_PLY && !inCheck) ? evaluate(pos) - : value_draw(depth, pos.this_thread()); + : value_draw(pos.this_thread()); // Step 3. Mate distance pruning. Even if we mate at the next move our score // would be at best mate_in(ss->ply+1), but if alpha is already bigger because @@ -763,7 +762,7 @@ namespace { ss->staticEval = eval = evaluate(pos); if (eval == VALUE_DRAW) - eval = value_draw(depth, thisThread); + eval = value_draw(thisThread); // Can ttValue be used as a better position evaluation? if ( ttValue != VALUE_NONE @@ -997,10 +996,6 @@ moves_loop: // When in check, search starts from here && (pos.is_discovery_check_on_king(~us, move) || pos.see_ge(move))) extension = ONE_PLY; - // Castling extension - else if (type_of(move) == CASTLING) - extension = ONE_PLY; - // Shuffle extension else if ( PvNode && pos.rule50_count() > 18 @@ -1014,6 +1009,10 @@ moves_loop: // When in check, search starts from here && pos.pawn_passed(us, to_sq(move))) extension = ONE_PLY; + // Castling extension + if (type_of(move) == CASTLING) + extension = ONE_PLY; + // Calculate new depth for this move newDepth = depth - ONE_PLY + extension;