MultiPV = Options["MultiPV"].value<int>();
UseLogFile = Options["Use Search Log"].value<bool>();
- if (UseLogFile)
- LogFile.open(Options["Search Log Filename"].value<std::string>().c_str(), std::ios::out | std::ios::app);
-
- read_weights(pos.side_to_move());
+ read_evaluation_uci_options(pos.side_to_move());
// Set the number of active threads
ThreadsMgr.read_uci_options();
// Write search information to log file
if (UseLogFile)
- LogFile << "Searching: " << pos.to_fen() << endl
- << "infinite: " << infinite
- << " ponder: " << ponder
- << " time: " << myTime
+ {
+ std::string name = Options["Search Log Filename"].value<std::string>();
+ LogFile.open(name.c_str(), std::ios::out | std::ios::app);
+
+ LogFile << "Searching: " << pos.to_fen()
+ << "\ninfinite: " << infinite
+ << " ponder: " << ponder
+ << " time: " << myTime
<< " increment: " << myIncrement
<< " moves to go: " << movesToGo << endl;
+ }
// We're ready to start thinking. Call the iterative deepening loop function
Move ponderMove = MOVE_NONE;
<< " nps " << nps(pos)
<< " time " << current_search_time() << endl;
- // If we are pondering or in infinite search, we shouldn't print the
- // best move before we are told to do so.
- if (!AbortSearch && (PonderSearch || InfiniteSearch))
- wait_for_stop_or_ponderhit();
-
- // Could be both MOVE_NONE when searching on a stalemate position
- cout << "bestmove " << bestMove << " ponder " << ponderMove << endl;
-
if (UseLogFile)
{
- if (dbg_show_mean)
- dbg_print_mean(LogFile);
-
- if (dbg_show_hit_rate)
- dbg_print_hit_rate(LogFile);
-
LogFile << "\nNodes: " << pos.nodes_searched()
<< "\nNodes/second: " << nps(pos)
<< "\nBest move: " << move_to_san(pos, bestMove);
LogFile << "\nPonder move: "
<< move_to_san(pos, ponderMove) // Works also with MOVE_NONE
<< endl;
- }
- if (UseLogFile)
LogFile.close();
+ }
// This makes all the threads to go to sleep
ThreadsMgr.set_active_threads(1);
+ // If we are pondering or in infinite search, we shouldn't print the
+ // best move before we are told to do so.
+ if (!AbortSearch && (PonderSearch || InfiniteSearch))
+ wait_for_stop_or_ponderhit();
+
+ // Could be both MOVE_NONE when searching on a stalemate position
+ cout << "bestmove " << bestMove << " ponder " << ponderMove << endl;
+
return !Quit;
}
std::string RootMove::pv_info_to_uci(const Position& pos, Value alpha, Value beta, int pvLine) {
- std::stringstream s;
+ std::stringstream s, l;
+ Move* m = pv;
+
+ while (*m != MOVE_NONE)
+ l << *m++ << " ";
s << "info depth " << Iteration // FIXME
+ << " seldepth " << int(m - pv)
<< " multipv " << pvLine + 1
<< " score " << value_to_uci(pv_score)
<< (pv_score >= beta ? " lowerbound" : pv_score <= alpha ? " upperbound" : "")
<< " time " << current_search_time()
<< " nodes " << pos.nodes_searched()
<< " nps " << nps(pos)
- << " pv ";
-
- for (Move* m = pv; *m != MOVE_NONE; m++)
- s << *m << " ";
+ << " pv " << l.str();
if (UseLogFile && pvLine == 0)
{