From e0504ab876a997321102f040ab88203cb893db12 Mon Sep 17 00:00:00 2001 From: lucasart Date: Mon, 9 Jan 2017 18:57:34 +0800 Subject: [PATCH] Remove HistoryStats STC: LLR: 3.44 (-2.94,2.94) [-3.00,1.00] Total: 120831 W: 21572 L: 21594 D: 77665 LTC: LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 26565 W: 3519 L: 3406 D: 19640 bench 5920493 --- src/movepick.cpp | 11 ++++------- src/movepick.h | 8 +++----- src/search.cpp | 21 ++++++++------------- src/thread.h | 1 - 4 files changed, 15 insertions(+), 26 deletions(-) diff --git a/src/movepick.cpp b/src/movepick.cpp index 34d29562..08dabe0a 100644 --- a/src/movepick.cpp +++ b/src/movepick.cpp @@ -140,7 +140,6 @@ void MovePicker::score() { template<> void MovePicker::score() { - const HistoryStats& history = pos.this_thread()->history; const FromToStats& fromTo = pos.this_thread()->fromTo; const CounterMoveStats* cmh = (ss-1)->counterMoves; @@ -150,8 +149,7 @@ void MovePicker::score() { Color c = pos.side_to_move(); for (auto& m : *this) - m.value = history[pos.moved_piece(m)][to_sq(m)] - + (cmh ? (*cmh)[pos.moved_piece(m)][to_sq(m)] : VALUE_ZERO) + m.value = (cmh ? (*cmh)[pos.moved_piece(m)][to_sq(m)] : VALUE_ZERO) + (fmh ? (*fmh)[pos.moved_piece(m)][to_sq(m)] : VALUE_ZERO) + (fmh2 ? (*fmh2)[pos.moved_piece(m)][to_sq(m)] : VALUE_ZERO) + fromTo.get(c, m); @@ -159,17 +157,16 @@ void MovePicker::score() { template<> void MovePicker::score() { - // Try captures ordered by MVV/LVA, then non-captures ordered by history value - const HistoryStats& history = pos.this_thread()->history; + // Try captures ordered by MVV/LVA, then non-captures ordered by stats heuristics const FromToStats& fromTo = pos.this_thread()->fromTo; Color c = pos.side_to_move(); for (auto& m : *this) if (pos.capture(m)) m.value = PieceValue[MG][pos.piece_on(to_sq(m))] - - Value(type_of(pos.moved_piece(m))) + HistoryStats::Max; + - Value(type_of(pos.moved_piece(m))) + FromToStats::Max; else - m.value = history[pos.moved_piece(m)][to_sq(m)] + fromTo.get(c, m); + m.value = fromTo.get(c, m); } diff --git a/src/movepick.h b/src/movepick.h index 6fbd8be1..b59b0e93 100644 --- a/src/movepick.h +++ b/src/movepick.h @@ -38,9 +38,6 @@ /// different origin but same destination and piece will be considered identical. template struct Stats { - - static const Value Max = Value(1 << 28); - const T* operator[](Piece pc) const { return table[pc]; } T* operator[](Piece pc) { return table[pc]; } void clear() { std::memset(table, 0, sizeof(table)); } @@ -59,12 +56,13 @@ private: }; typedef Stats MoveStats; -typedef Stats HistoryStats; -typedef Stats CounterMoveStats; +typedef Stats CounterMoveStats; typedef Stats CounterMoveHistoryStats; struct FromToStats { + static const Value Max = Value(1 << 28); + Value get(Color c, Move m) const { return table[c][from_sq(m)][to_sq(m)]; } void clear() { std::memset(table, 0, sizeof(table)); } void update(Color c, Move m, Value v) { diff --git a/src/search.cpp b/src/search.cpp index a9fc1c6d..c54c1269 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -211,7 +211,6 @@ void Search::clear() { for (Thread* th : Threads) { - th->history.clear(); th->counterMoves.clear(); th->fromTo.clear(); th->counterMoveHistory.clear(); @@ -642,7 +641,7 @@ namespace { && (ttValue >= beta ? (tte->bound() & BOUND_LOWER) : (tte->bound() & BOUND_UPPER))) { - // If ttMove is quiet, update killers, history, counter move on TT hit + // If ttMove is quiet, update move sorting heuristics on TT hit if (ttValue >= beta && ttMove) { if (!pos.capture_or_promotion(ttMove)) @@ -983,12 +982,11 @@ moves_loop: // When in check search starts from here && !pos.see_ge(make_move(to_sq(move), from_sq(move)), VALUE_ZERO)) r -= 2 * ONE_PLY; - ss->history = thisThread->history[moved_piece][to_sq(move)] - + (cmh ? (*cmh )[moved_piece][to_sq(move)] : VALUE_ZERO) - + (fmh ? (*fmh )[moved_piece][to_sq(move)] : VALUE_ZERO) - + (fmh2 ? (*fmh2)[moved_piece][to_sq(move)] : VALUE_ZERO) - + thisThread->fromTo.get(~pos.side_to_move(), move) - - 8000; // Correction factor + ss->history = (cmh ? (*cmh )[moved_piece][to_sq(move)] : VALUE_ZERO) + + (fmh ? (*fmh )[moved_piece][to_sq(move)] : VALUE_ZERO) + + (fmh2 ? (*fmh2)[moved_piece][to_sq(move)] : VALUE_ZERO) + + thisThread->fromTo.get(~pos.side_to_move(), move) + - 8000; // Correction factor // Decrease/increase reduction by comparing opponent's stat score if (ss->history > VALUE_ZERO && (ss-1)->history < VALUE_ZERO) @@ -1118,7 +1116,7 @@ moves_loop: // When in check search starts from here else if (bestMove) { - // Quiet best move: update killers, history and countermoves + // Quiet best move: update move sorting heuristics if (!pos.capture_or_promotion(bestMove)) update_stats(pos, ss, bestMove, quietsSearched, quietCount, bonus(depth)); @@ -1404,8 +1402,7 @@ moves_loop: // When in check search starts from here } - // update_stats() updates killers, history, countermove and countermove plus - // follow-up move history when a new quiet best move is found. + // update_stats() updates move sorting heuristics when a new quiet best move is found void update_stats(const Position& pos, Stack* ss, Move move, Move* quiets, int quietsCnt, Value bonus) { @@ -1419,7 +1416,6 @@ moves_loop: // When in check search starts from here Color c = pos.side_to_move(); Thread* thisThread = pos.this_thread(); thisThread->fromTo.update(c, move, bonus); - thisThread->history.update(pos.moved_piece(move), to_sq(move), bonus); update_cm_stats(ss, pos.moved_piece(move), to_sq(move), bonus); if ((ss-1)->counterMoves) @@ -1432,7 +1428,6 @@ moves_loop: // When in check search starts from here for (int i = 0; i < quietsCnt; ++i) { thisThread->fromTo.update(c, quiets[i], -bonus); - thisThread->history.update(pos.moved_piece(quiets[i]), to_sq(quiets[i]), -bonus); update_cm_stats(ss, pos.moved_piece(quiets[i]), to_sq(quiets[i]), -bonus); } } diff --git a/src/thread.h b/src/thread.h index 1ffacb30..a4d78571 100644 --- a/src/thread.h +++ b/src/thread.h @@ -69,7 +69,6 @@ public: Depth rootDepth; Depth completedDepth; std::atomic_bool resetCalls; - HistoryStats history; MoveStats counterMoves; FromToStats fromTo; CounterMoveHistoryStats counterMoveHistory; -- 2.39.2