X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fevaluate.cpp;h=24ca7e40963e5e8fae00f6d32a94f8d105c859d3;hp=51d9b4290e6d48b3b324de5e6c459d5fd9d824a2;hb=45dbd9cd0303d0db469670af8ec3598731a4eace;hpb=c9dcda6ac488c0058ebd567e1f52e30b8cd0db20 diff --git a/src/evaluate.cpp b/src/evaluate.cpp index 51d9b429..24ca7e40 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -87,9 +87,6 @@ namespace { Bitboard pinnedPieces[COLOR_NB]; }; - // Evaluation grain size, must be a power of 2 - const int GrainSize = 4; - // Evaluation weights, initialized from UCI options enum { Mobility, PawnStructure, PassedPawns, Space, KingDangerUs, KingDangerThem }; Score Weights[6]; @@ -358,9 +355,9 @@ Value do_evaluate(const Position& pos) { // If we don't already have an unusual scale factor, check for opposite // colored bishop endgames, and use a lower scale for those. - if ( ei.mi->game_phase() < PHASE_MIDGAME - && pos.opposite_bishops() - && sf == SCALE_FACTOR_NORMAL) + if ( ei.mi->game_phase() < PHASE_MIDGAME + && pos.opposite_bishops() + && (sf == SCALE_FACTOR_NORMAL || sf == SCALE_FACTOR_ONEPAWN)) { // Ignoring any pawns, do both sides only have a single bishop and no // other pieces? @@ -375,7 +372,7 @@ Value do_evaluate(const Position& pos) { else // Endgame with opposite-colored bishops, but also other pieces. Still // a bit drawish, but not as drawish as with only the two bishops. - sf = ScaleFactor(50); + sf = ScaleFactor(50 * sf / SCALE_FACTOR_NORMAL); } Value v = interpolate(score, ei.mi->game_phase(), sf); @@ -926,8 +923,7 @@ Value do_evaluate(const Position& pos) { assert(ph >= PHASE_ENDGAME && ph <= PHASE_MIDGAME); int e = (eg_value(v) * int(sf)) / SCALE_FACTOR_NORMAL; - int r = (mg_value(v) * int(ph) + e * int(PHASE_MIDGAME - ph)) / PHASE_MIDGAME; - return Value((r / GrainSize) * GrainSize); // Sign independent + return Value((mg_value(v) * int(ph) + e * int(PHASE_MIDGAME - ph)) / PHASE_MIDGAME); } // apply_weight() weights score v by score w trying to prevent overflow