From: Marco Costalba Date: Sat, 10 Apr 2010 15:40:03 +0000 (+0100) Subject: Introduce "Zugzwang detection" temporary hack for 1.7.1 X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=f9d3b48ad0ed62732bb07d4811f4fd17cf088cfe;ds=sidebyside Introduce "Zugzwang detection" temporary hack for 1.7.1 Add an UCI option "Zugzwang detection" OFF by default that enables correct detection of zugzwang. This is just to let 1.7.1 be 100% compatible with 1.7 and should be removed after release. Verified 100% functional equivalent to 1.7 Signed-off-by: Marco Costalba --- diff --git a/src/search.cpp b/src/search.cpp index 3f843641..0fa78248 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -257,7 +257,7 @@ namespace { int SearchStartTime, MaxNodes, MaxDepth, MaxSearchTime; int AbsoluteMaxSearchTime, ExtraSearchTime, ExactMaxTime; bool UseTimeManagement, InfiniteSearch, PonderSearch, StopOnPonderhit; - bool FirstRootMove, AbortSearch, Quit, AspirationFailLow; + bool FirstRootMove, AbortSearch, Quit, AspirationFailLow, ZugDetection; // Log file bool UseLogFile; @@ -425,6 +425,7 @@ bool think(const Position& pos, bool infinite, bool ponder, int side_to_move, MultiPV = get_option_value_int("MultiPV"); Chess960 = get_option_value_bool("UCI_Chess960"); UseLogFile = get_option_value_bool("Use Search Log"); + ZugDetection = get_option_value_bool("Zugzwang detection"); // To be removed after 1.7.1 if (UseLogFile) LogFile.open(get_option_value_string("Search Log Filename").c_str(), std::ios::out | std::ios::app); @@ -2315,7 +2316,7 @@ namespace { Value v = value_from_tt(tte->value(), ply); - return (allowNullmove || !(tte->type() & VALUE_TYPE_NULL)) + return (allowNullmove || !(tte->type() & VALUE_TYPE_NULL) || !ZugDetection) && ( tte->depth() >= depth || v >= Max(value_mate_in(PLY_MAX), beta) diff --git a/src/ucioption.cpp b/src/ucioption.cpp index af568a37..154e1410 100644 --- a/src/ucioption.cpp +++ b/src/ucioption.cpp @@ -113,6 +113,9 @@ namespace { o["UCI_Chess960"] = Option(false); o["UCI_AnalyseMode"] = Option(false); + // Temporary hack for 1.7.1 to be removed in next release + o["Zugzwang detection"] = Option(false); + // Any option should know its name so to be easily printed for (Options::iterator it = o.begin(); it != o.end(); ++it) it->second.name = it->first;