mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-21 17:46:26 +08:00
Extract a reliable PV line
Truncate the extracted PV from the point where the score stored in hash starts to deviate from the root score. Idea from Ronald de Man. bench: 8732553
This commit is contained in:
@@ -1401,6 +1401,7 @@ void RootMove::extract_pv_from_tt(Position& pos) {
|
||||
const TTEntry* tte;
|
||||
int ply = 0;
|
||||
Move m = pv[0];
|
||||
Value expectedScore = score;
|
||||
|
||||
pv.clear();
|
||||
|
||||
@@ -1411,8 +1412,10 @@ void RootMove::extract_pv_from_tt(Position& pos) {
|
||||
|
||||
pos.do_move(pv[ply++], *st++);
|
||||
tte = TT.probe(pos.key());
|
||||
expectedScore = -expectedScore;
|
||||
|
||||
} while ( tte
|
||||
&& expectedScore == value_from_tt(tte->value(), ply)
|
||||
&& pos.pseudo_legal(m = tte->move()) // Local copy, TT could change
|
||||
&& pos.legal(m, pos.pinned_pieces(pos.side_to_move()))
|
||||
&& ply < MAX_PLY
|
||||
|
||||
Reference in New Issue
Block a user