From 6c8663341eab5c45e57c85a0b1d7f79f52fa1709 Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Sat, 13 Oct 2012 10:40:38 +0200 Subject: [PATCH] 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. --- src/search.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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(); -- 2.39.2