From: Marco Costalba Date: Thu, 24 Mar 2011 10:06:00 +0000 (+0100) Subject: Send PV line to GUI only after resolving a fail high X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=4270aec55886f56d1d588ea329bb5a1c50998c19 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 --- diff --git a/src/search.cpp b/src/search.cpp index 9a3ecbbe..982f2a2c 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -633,7 +633,7 @@ namespace { while (++depth <= PLY_MAX && (!MaxDepth || depth <= MaxDepth) && !StopRequest) { 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 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() value = search(pos, ss+1, alpha, beta, depth * ONE_PLY, 0); - // Send PV line to GUI and write to transposition table in case the - // relevant entries have been overwritten during the search. + // Write PV back to transposition table in case the relevant entries + // have been overwritten during the search. for (int i = 0; i < Min(MultiPV, (int)Rml.size()); i++) - { 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! if (StopRequest) @@ -694,6 +690,10 @@ namespace { bestValues[depth] = value; 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) LogFile << pretty_pv(pos, depth, value, current_search_time(), Rml[0].pv) << endl;