mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-23 10:36:26 +08:00
Cleanup comments and some code reorg.
passed STC: https://tests.stockfishchess.org/tests/view/6536dc7dcc309ae83955b04d LLR: 2.93 (-2.94,2.94) <-1.75,0.25> Total: 58048 W: 14693 L: 14501 D: 28854 Ptnml(0-2): 200, 6399, 15595, 6669, 161 closes https://github.com/official-stockfish/Stockfish/pull/4846 No functional change
This commit is contained in:
@@ -379,8 +379,8 @@ void Thread::search() {
|
||||
int failedHighCnt = 0;
|
||||
while (true)
|
||||
{
|
||||
// Adjust the effective depth searched, but ensure at least one effective increment for every
|
||||
// four searchAgain steps (see issue #2717).
|
||||
// Adjust the effective depth searched, but ensure at least one effective increment
|
||||
// for every four searchAgain steps (see issue #2717).
|
||||
Depth adjustedDepth =
|
||||
std::max(1, rootDepth - failedHighCnt - 3 * (searchAgainCounter + 1) / 4);
|
||||
bestValue = Stockfish::search<Root>(rootPos, ss, alpha, beta, adjustedDepth, false);
|
||||
@@ -633,7 +633,8 @@ Value search(Position& pos, Stack* ss, Value alpha, Value beta, Depth depth, boo
|
||||
if (!ttCapture)
|
||||
update_quiet_stats(pos, ss, ttMove, stat_bonus(depth));
|
||||
|
||||
// Extra penalty for early quiet moves of the previous ply (~0 Elo on STC, ~2 Elo on LTC)
|
||||
// Extra penalty for early quiet moves of
|
||||
// the previous ply (~0 Elo on STC, ~2 Elo on LTC).
|
||||
if (prevSq != SQ_NONE && (ss - 1)->moveCount <= 2 && !priorCapture)
|
||||
update_continuation_histories(ss - 1, pos.piece_on(prevSq), prevSq,
|
||||
-stat_bonus(depth + 1));
|
||||
@@ -715,7 +716,8 @@ Value search(Position& pos, Stack* ss, Value alpha, Value beta, Depth depth, boo
|
||||
}
|
||||
else if (excludedMove)
|
||||
{
|
||||
// Providing the hint that this node's accumulator will be used often brings significant Elo gain (~13 Elo)
|
||||
// Providing the hint that this node's accumulator will be used often
|
||||
// brings significant Elo gain (~13 Elo).
|
||||
Eval::NNUE::hint_common_parent_position(pos);
|
||||
eval = ss->staticEval;
|
||||
}
|
||||
@@ -817,8 +819,9 @@ Value search(Position& pos, Stack* ss, Value alpha, Value beta, Depth depth, boo
|
||||
}
|
||||
}
|
||||
|
||||
// Step 10. If the position doesn't have a ttMove, decrease depth by 2
|
||||
// (or by 4 if the TT entry for the current position was hit and the stored depth is greater than or equal to the current depth).
|
||||
// Step 10. If the position doesn't have a ttMove, decrease depth by 2,
|
||||
// or by 4 if the TT entry for the current position was hit and
|
||||
// the stored depth is greater than or equal to the current depth.
|
||||
// Use qsearch if depth is equal or below zero (~9 Elo)
|
||||
if (PvNode && !ttMove)
|
||||
depth -= 2 + 2 * (ss->ttHit && tte->depth() >= depth);
|
||||
@@ -967,13 +970,15 @@ moves_loop: // When in check, search starts here
|
||||
if (capture || givesCheck)
|
||||
{
|
||||
// Futility pruning for captures (~2 Elo)
|
||||
if (!givesCheck && lmrDepth < 7 && !ss->inCheck
|
||||
&& ss->staticEval + 188 + 206 * lmrDepth + PieceValue[pos.piece_on(to_sq(move))]
|
||||
+ captureHistory[movedPiece][to_sq(move)]
|
||||
[type_of(pos.piece_on(to_sq(move)))]
|
||||
/ 7
|
||||
< alpha)
|
||||
continue;
|
||||
if (!givesCheck && lmrDepth < 7 && !ss->inCheck)
|
||||
{
|
||||
Piece capturedPiece = pos.piece_on(to_sq(move));
|
||||
int futilityEval =
|
||||
ss->staticEval + 188 + 206 * lmrDepth + PieceValue[capturedPiece]
|
||||
+ captureHistory[movedPiece][to_sq(move)][type_of(capturedPiece)] / 7;
|
||||
if (futilityEval < alpha)
|
||||
continue;
|
||||
}
|
||||
|
||||
// SEE based pruning for captures and checks (~11 Elo)
|
||||
if (!pos.see_ge(move, Value(-185) * depth))
|
||||
@@ -1018,9 +1023,9 @@ moves_loop: // When in check, search starts here
|
||||
// that depth margin and singularBeta margin are known for having non-linear
|
||||
// scaling. Their values are optimized to time controls of 180+1.8 and longer
|
||||
// so changing them requires tests at this type of time controls.
|
||||
if (!rootNode
|
||||
// Recursive singular search is avoided.
|
||||
if (!rootNode && move == ttMove && !excludedMove
|
||||
&& depth >= 4 - (thisThread->completedDepth > 24) + 2 * (PvNode && tte->is_pv())
|
||||
&& move == ttMove && !excludedMove // Avoid recursive singular search
|
||||
&& abs(ttValue) < VALUE_TB_WIN_IN_MAX_PLY && (tte->bound() & BOUND_LOWER)
|
||||
&& tte->depth() >= depth - 3)
|
||||
{
|
||||
@@ -1053,7 +1058,7 @@ moves_loop: // When in check, search starts here
|
||||
else if (singularBeta >= beta)
|
||||
return singularBeta;
|
||||
|
||||
// If the eval of ttMove is greater than beta, we reduce it (negative extension) (~7 Elo)
|
||||
// If the eval of ttMove is greater than beta, reduce it (negative extension) (~7 Elo)
|
||||
else if (ttValue >= beta)
|
||||
extension = -2 - !PvNode;
|
||||
|
||||
@@ -1061,7 +1066,7 @@ moves_loop: // When in check, search starts here
|
||||
else if (cutNode)
|
||||
extension = depth < 19 ? -2 : -1;
|
||||
|
||||
// If the eval of ttMove is less than value, we reduce it (negative extension) (~1 Elo)
|
||||
// If the eval of ttMove is less than value, reduce it (negative extension) (~1 Elo)
|
||||
else if (ttValue <= value)
|
||||
extension = -1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user