mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 16:53:09 +00:00
Minor simplifications and cleanup in search
STC: https://tests.stockfishchess.org/tests/view/629d6775593a4a9b6482c1ec LLR: 2.93 (-2.94,2.94) <-2.25,0.25> Total: 77416 W: 20683 L: 20589 D: 36144 Ptnml(0-2): 317, 8690, 20620, 8744, 337 LTC: https://tests.stockfishchess.org/tests/view/629db4be593a4a9b6482ceef LLR: 2.95 (-2.94,2.94) <-2.25,0.25> Total: 106544 W: 28752 L: 28705 D: 49087 Ptnml(0-2): 97, 10692, 31641, 10751, 91 closes https://github.com/official-stockfish/Stockfish/pull/4059 Bench: 5913510
This commit is contained in:
parent
d54b85b4bd
commit
2d5dcf3d18
1 changed files with 18 additions and 22 deletions
|
@ -85,8 +85,8 @@ namespace {
|
|||
}
|
||||
|
||||
// Add a small random component to draw evaluations to avoid 3-fold blindness
|
||||
Value value_draw(Thread* thisThread) {
|
||||
return VALUE_DRAW + Value(2 * (thisThread->nodes & 1) - 1);
|
||||
Value value_draw(const Thread* thisThread) {
|
||||
return VALUE_DRAW - 1 + Value(thisThread->nodes & 0x2);
|
||||
}
|
||||
|
||||
// Skill structure is used to implement strength limit. If we have an uci_elo then
|
||||
|
@ -116,7 +116,7 @@ namespace {
|
|||
|
||||
Value value_to_tt(Value v, int ply);
|
||||
Value value_from_tt(Value v, int ply, int r50c);
|
||||
void update_pv(Move* pv, Move move, Move* childPv);
|
||||
void update_pv(Move* pv, Move move, const Move* childPv);
|
||||
void update_continuation_histories(Stack* ss, Piece pc, Square to, int bonus);
|
||||
void update_quiet_stats(const Position& pos, Stack* ss, Move move, int bonus);
|
||||
void update_all_stats(const Position& pos, Stack* ss, Move bestMove, Value bestValue, Value beta, Square prevSq,
|
||||
|
@ -635,10 +635,9 @@ namespace {
|
|||
// At non-PV nodes we check for an early TT cutoff
|
||||
if ( !PvNode
|
||||
&& ss->ttHit
|
||||
&& tte->depth() > depth - (thisThread->id() % 2 == 1)
|
||||
&& tte->depth() > depth - ((int)thisThread->id() & 0x1)
|
||||
&& ttValue != VALUE_NONE // Possible in case of TT access race
|
||||
&& (ttValue >= beta ? (tte->bound() & BOUND_LOWER)
|
||||
: (tte->bound() & BOUND_UPPER)))
|
||||
&& (tte->bound() & (ttValue >= beta ? BOUND_LOWER : BOUND_UPPER)))
|
||||
{
|
||||
// If ttMove is quiet, update move sorting heuristics on TT hit (~1 Elo)
|
||||
if (ttMove)
|
||||
|
@ -900,8 +899,7 @@ namespace {
|
|||
&& tte->depth() >= depth - 3
|
||||
&& ttValue != VALUE_NONE))
|
||||
tte->save(posKey, value_to_tt(value, ss->ply), ttPv,
|
||||
BOUND_LOWER,
|
||||
depth - 3, move, ss->staticEval);
|
||||
BOUND_LOWER, depth - 3, move, ss->staticEval);
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
@ -1450,8 +1448,7 @@ moves_loop: // When in check, search starts here
|
|||
&& ss->ttHit
|
||||
&& tte->depth() >= ttDepth
|
||||
&& ttValue != VALUE_NONE // Only in case of TT access race
|
||||
&& (ttValue >= beta ? (tte->bound() & BOUND_LOWER)
|
||||
: (tte->bound() & BOUND_UPPER)))
|
||||
&& (tte->bound() & (ttValue >= beta ? BOUND_LOWER : BOUND_UPPER)))
|
||||
return ttValue;
|
||||
|
||||
// Evaluate the position statically
|
||||
|
@ -1675,7 +1672,7 @@ moves_loop: // When in check, search starts here
|
|||
|
||||
// update_pv() adds current move and appends child pv[]
|
||||
|
||||
void update_pv(Move* pv, Move move, Move* childPv) {
|
||||
void update_pv(Move* pv, Move move, const Move* childPv) {
|
||||
|
||||
for (*pv++ = move; childPv && *childPv != MOVE_NONE; )
|
||||
*pv++ = *childPv++;
|
||||
|
@ -1688,19 +1685,18 @@ moves_loop: // When in check, search starts here
|
|||
void update_all_stats(const Position& pos, Stack* ss, Move bestMove, Value bestValue, Value beta, Square prevSq,
|
||||
Move* quietsSearched, int quietCount, Move* capturesSearched, int captureCount, Depth depth) {
|
||||
|
||||
int bonus1, bonus2;
|
||||
Color us = pos.side_to_move();
|
||||
Thread* thisThread = pos.this_thread();
|
||||
CapturePieceToHistory& captureHistory = thisThread->captureHistory;
|
||||
Piece moved_piece = pos.moved_piece(bestMove);
|
||||
PieceType captured = type_of(pos.piece_on(to_sq(bestMove)));
|
||||
|
||||
bonus1 = stat_bonus(depth + 1);
|
||||
bonus2 = bestValue > beta + PawnValueMg ? bonus1 // larger bonus
|
||||
: stat_bonus(depth); // smaller bonus
|
||||
int bonus1 = stat_bonus(depth + 1);
|
||||
|
||||
if (!pos.capture(bestMove))
|
||||
{
|
||||
int bonus2 = bestValue > beta + PawnValueMg ? bonus1 // larger bonus
|
||||
: stat_bonus(depth); // smaller bonus
|
||||
|
||||
// Increase stats for the best move in case it was a quiet move
|
||||
update_quiet_stats(pos, ss, bestMove, bonus2);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue