From: Marco Costalba Date: Sat, 13 Oct 2012 08:40:38 +0000 (+0200) Subject: Scale contempt factor to zero at endgame X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=6c8663341eab5c45e57c85a0b1d7f79f52fa1709;ds=inline Scale contempt factor to zero at endgame Contempt Factor is more effective at opening/middle game and seems harmful at endgame phase. See: http://chessprogramming.wikispaces.com/Contempt+Factor http://web.archive.org/web/20070707023203/www.brucemo.com/compchess/programming/contempt.htm Therefore we scale down the contempt factor while going on with the game so to reach zero at endgame phase. No functional change. --- diff --git a/src/search.cpp b/src/search.cpp index cf98ca35..ca23aa37 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -175,8 +175,9 @@ void Search::think() { Position& pos = RootPosition; Chess960 = pos.is_chess960(); Eval::RootColor = pos.side_to_move(); - Eval::ValueDraw[ Eval::RootColor] = VALUE_DRAW - Eval::ContemptFactor; - Eval::ValueDraw[~Eval::RootColor] = VALUE_DRAW + Eval::ContemptFactor; + int scaledCF = Eval::ContemptFactor * MaterialTable::game_phase(pos) / PHASE_MIDGAME; + Eval::ValueDraw[ Eval::RootColor] = VALUE_DRAW - Value(scaledCF); + Eval::ValueDraw[~Eval::RootColor] = VALUE_DRAW + Value(scaledCF); TimeMgr.init(Limits, pos.startpos_ply_counter(), pos.side_to_move()); TT.new_search(); H.clear();