mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-22 01:56:58 +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;
|
const TTEntry* tte;
|
||||||
int ply = 0;
|
int ply = 0;
|
||||||
Move m = pv[0];
|
Move m = pv[0];
|
||||||
|
Value expectedScore = score;
|
||||||
|
|
||||||
pv.clear();
|
pv.clear();
|
||||||
|
|
||||||
@@ -1411,8 +1412,10 @@ void RootMove::extract_pv_from_tt(Position& pos) {
|
|||||||
|
|
||||||
pos.do_move(pv[ply++], *st++);
|
pos.do_move(pv[ply++], *st++);
|
||||||
tte = TT.probe(pos.key());
|
tte = TT.probe(pos.key());
|
||||||
|
expectedScore = -expectedScore;
|
||||||
|
|
||||||
} while ( tte
|
} while ( tte
|
||||||
|
&& expectedScore == value_from_tt(tte->value(), ply)
|
||||||
&& pos.pseudo_legal(m = tte->move()) // Local copy, TT could change
|
&& pos.pseudo_legal(m = tte->move()) // Local copy, TT could change
|
||||||
&& pos.legal(m, pos.pinned_pieces(pos.side_to_move()))
|
&& pos.legal(m, pos.pinned_pieces(pos.side_to_move()))
|
||||||
&& ply < MAX_PLY
|
&& ply < MAX_PLY
|
||||||
|
|||||||
Reference in New Issue
Block a user