X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fevaluate.cpp;h=4ce500af8ea634171a406284b40a9832192acbf2;hb=7a3844e6eff9535427485f138886082282beb2c7;hp=434ebd6241249f21869fe6b6b58211a61febe325;hpb=344616e917ccec2b53a2f06ad788122440efed35;p=stockfish diff --git a/src/evaluate.cpp b/src/evaluate.cpp index 434ebd62..4ce500af 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -200,6 +200,7 @@ namespace { const Score Unstoppable = S( 0, 20); const Score PawnlessFlank = S(20, 80); const Score HinderPassedPawn = S( 7, 0); + const Score ThreatByRank = S(16, 3); // Penalty for a bishop on a1/h1 (a8/h8 for black) which is trapped by // a friendly pawn on b2/g2 (b7/g7 for black). This can obviously only @@ -561,11 +562,21 @@ namespace { { b = (defended | weak) & (ei.attackedBy[Us][KNIGHT] | ei.attackedBy[Us][BISHOP]); while (b) - score += Threat[Minor][type_of(pos.piece_on(pop_lsb(&b)))]; + { + Square s = pop_lsb(&b); + score += Threat[Minor][type_of(pos.piece_on(s))]; + if (type_of(pos.piece_on(s)) != PAWN) + score += ThreatByRank * (int)relative_rank(Them, s); + } b = (pos.pieces(Them, QUEEN) | weak) & ei.attackedBy[Us][ROOK]; while (b) - score += Threat[Rook ][type_of(pos.piece_on(pop_lsb(&b)))]; + { + Square s = pop_lsb(&b); + score += Threat[Rook][type_of(pos.piece_on(s))]; + if (type_of(pos.piece_on(s)) != PAWN) + score += ThreatByRank * (int)relative_rank(Them, s); + } score += Hanging * popcount(weak & ~ei.attackedBy[Them][ALL_PIECES]); @@ -877,8 +888,9 @@ Value Eval::evaluate(const Position& pos) { Trace::add(IMBALANCE, ei.me->imbalance()); Trace::add(PAWN, ei.pi->pawns_score()); Trace::add(MOBILITY, mobility[WHITE], mobility[BLACK]); - Trace::add(SPACE, evaluate_space(pos, ei) - , evaluate_space(pos, ei)); + if (pos.non_pawn_material(WHITE) + pos.non_pawn_material(BLACK) >= 12222) + Trace::add(SPACE, evaluate_space(pos, ei) + , evaluate_space(pos, ei)); Trace::add(TOTAL, score); }