From d583176baf70e374b95d09eaacf7e9d3f8978d5a Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Thu, 18 Sep 2008 10:31:01 +0100 Subject: [PATCH 1/1] Pass also opponent time to think() This patch modifies think() signature to accept also opponent time. This is needed for future changes to time managment. Still no functional change. Signed-off-by: Marco Costalba --- src/benchmark.cpp | 2 +- src/search.cpp | 27 ++++++++++++++++----------- src/search.h | 6 +++--- src/uci.cpp | 6 +++--- 4 files changed, 23 insertions(+), 18 deletions(-) diff --git a/src/benchmark.cpp b/src/benchmark.cpp index fe701a9c..4c6c0da6 100644 --- a/src/benchmark.cpp +++ b/src/benchmark.cpp @@ -124,6 +124,6 @@ void benchmark(const std::string& commandLine) { { Move moves[1] = {MOVE_NONE}; Position pos(*it); - think(pos, true, false, 0, 0, 0, 0, 0, secsPerPos * 1000, moves); + think(pos, true, false, 0, 0, 0, 0, 0, 0, secsPerPos * 1000, moves); } } diff --git a/src/search.cpp b/src/search.cpp index e4675df5..5599faab 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -300,9 +300,9 @@ History H; // Should be made local? /// the program receives the UCI 'go' command. It initializes various /// search-related global variables, and calls root_search() -void think(const Position &pos, bool infinite, bool ponder, int time, - int increment, int movesToGo, int maxDepth, int maxNodes, - int maxTime, Move searchMoves[]) { +void think(const Position &pos, bool infinite, bool ponder, int side_to_move, + int time[], int increment[], int movesToGo, int maxDepth, + int maxNodes, int maxTime, Move searchMoves[]) { // Look for a book move: if(!infinite && !ponder && get_option_value_bool("OwnBook")) { @@ -422,24 +422,29 @@ void think(const Position &pos, bool infinite, bool ponder, int time, assert(thread_is_available(i, 0)); // Set thinking time: + int myTime = time[side_to_move]; + int myIncrement = increment[side_to_move]; + int oppTime = time[1 - side_to_move]; + int oppIncrement = increment[1 - side_to_move]; + if(!movesToGo) { // Sudden death time control if(increment) { - MaxSearchTime = time / 30 + increment; - AbsoluteMaxSearchTime = Max(time / 4, increment - 100); + MaxSearchTime = myTime / 30 + myIncrement; + AbsoluteMaxSearchTime = Max(myTime / 4, myIncrement - 100); } else { // Blitz game without increment - MaxSearchTime = time / 40; - AbsoluteMaxSearchTime = time / 8; + MaxSearchTime = myTime / 40; + AbsoluteMaxSearchTime = myTime / 8; } } else { // (x moves) / (y minutes) if(movesToGo == 1) { - MaxSearchTime = time / 2; - AbsoluteMaxSearchTime = Min(time / 2, time - 500); + MaxSearchTime = myTime / 2; + AbsoluteMaxSearchTime = Min(myTime / 2, myTime - 500); } else { - MaxSearchTime = time / Min(movesToGo, 20); - AbsoluteMaxSearchTime = Min((4 * time) / movesToGo, time / 3); + MaxSearchTime = myTime / Min(movesToGo, 20); + AbsoluteMaxSearchTime = Min((4 * myTime) / movesToGo, myTime / 3); } } if(PonderingEnabled) { diff --git a/src/search.h b/src/search.h index 831248ba..106daba9 100644 --- a/src/search.h +++ b/src/search.h @@ -81,9 +81,9 @@ extern History H; extern void init_threads(); extern void stop_threads(); -extern void think(const Position &pos, bool infinite, bool ponder, int time, - int increment, int movesToGo, int maxDepth, int maxNodes, - int maxTime, Move searchMoves[]); +extern void think(const Position &pos, bool infinite, bool ponder, int side_to_move, + int time[], int increment[], int movesToGo, int maxDepth, + int maxNodes, int maxTime, Move searchMoves[]); extern int64_t nodes_searched(); diff --git a/src/uci.cpp b/src/uci.cpp index bd1432f7..1a2c05a4 100644 --- a/src/uci.cpp +++ b/src/uci.cpp @@ -134,6 +134,7 @@ namespace { TT.clear(); Position::init_piece_square_tables(); RootPosition.from_fen(StartPosition); + } else if (token == "isready") std::cout << "readyok" << std::endl; @@ -319,8 +320,7 @@ namespace { if (moveTime) infinite = true; // HACK - think(RootPosition, infinite, ponder, time[RootPosition.side_to_move()], - inc[RootPosition.side_to_move()], movesToGo, depth, nodes, moveTime, - searchMoves); + think(RootPosition, infinite, ponder, RootPosition.side_to_move(), time, + inc, movesToGo, depth, nodes, moveTime, searchMoves); } } -- 2.39.2