1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-30 16:53:09 +00:00

Send PV line to GUI only after resolving a fail high

This is how Shredder, Rybka and others do and
avoids user is confused by a fail high (sent to GUI)
followed by a fail low (not sent).

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba 2011-03-24 11:06:00 +01:00
parent f427acbd27
commit 4270aec558

View file

@ -633,7 +633,7 @@ namespace {
while (++depth <= PLY_MAX && (!MaxDepth || depth <= MaxDepth) && !StopRequest) while (++depth <= PLY_MAX && (!MaxDepth || depth <= MaxDepth) && !StopRequest)
{ {
Rml.bestMoveChanges = 0; Rml.bestMoveChanges = 0;
cout << "info depth " << depth << endl; cout << set960(pos.is_chess960()) << "info depth " << depth << endl;
// Calculate dynamic aspiration window based on previous iterations // Calculate dynamic aspiration window based on previous iterations
if (MultiPV == 1 && depth >= 5 && abs(bestValues[depth - 1]) < VALUE_KNOWN_WIN) if (MultiPV == 1 && depth >= 5 && abs(bestValues[depth - 1]) < VALUE_KNOWN_WIN)
@ -654,14 +654,10 @@ namespace {
// Search starting from ss+1 to allow calling update_gains() // Search starting from ss+1 to allow calling update_gains()
value = search<PV, false, true>(pos, ss+1, alpha, beta, depth * ONE_PLY, 0); value = search<PV, false, true>(pos, ss+1, alpha, beta, depth * ONE_PLY, 0);
// Send PV line to GUI and write to transposition table in case the // Write PV back to transposition table in case the relevant entries
// relevant entries have been overwritten during the search. // have been overwritten during the search.
for (int i = 0; i < Min(MultiPV, (int)Rml.size()); i++) for (int i = 0; i < Min(MultiPV, (int)Rml.size()); i++)
{
Rml[i].insert_pv_in_tt(pos); Rml[i].insert_pv_in_tt(pos);
cout << set960(pos.is_chess960())
<< Rml[i].pv_info_to_uci(pos, depth, alpha, beta, i) << endl;
}
// Value cannot be trusted. Break out immediately! // Value cannot be trusted. Break out immediately!
if (StopRequest) if (StopRequest)
@ -694,6 +690,10 @@ namespace {
bestValues[depth] = value; bestValues[depth] = value;
bestMoveChanges[depth] = Rml.bestMoveChanges; bestMoveChanges[depth] = Rml.bestMoveChanges;
// Send PV line to GUI and to log file
for (int i = 0; i < Min(MultiPV, (int)Rml.size()); i++)
cout << Rml[i].pv_info_to_uci(pos, depth, alpha, beta, i) << endl;
if (UseLogFile) if (UseLogFile)
LogFile << pretty_pv(pos, depth, value, current_search_time(), Rml[0].pv) << endl; LogFile << pretty_pv(pos, depth, value, current_search_time(), Rml[0].pv) << endl;