From: Gary Linscott Date: Thu, 22 Mar 2012 11:33:47 +0000 (-0400) Subject: Penalty for undefended rook as well X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=f41a21fefd3ceadc6d17205573e6fd4fd805a4c5;hp=d4c9abb9675586c680433f498f12551fec4e4ecd Penalty for undefended rook as well --- diff --git a/src/evaluate.cpp b/src/evaluate.cpp index 2903c4b3..c03aa99f 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -167,8 +167,8 @@ namespace { // happen in Chess960 games. const Score TrappedBishopA1H1Penalty = make_score(100, 100); - // Penalty for a minor piece that is not defended by anything - const Score UndefendedMinorPenalty = make_score(25, 10); + // Penalty for BNR that is not defended by anything + const Score UndefendedPiecePenalty = make_score(25, 10); // The SpaceMask[Color] contains the area of the board which is considered // by the space evaluation. In the middle game, each side is given a bonus @@ -682,13 +682,15 @@ Value do_evaluate(const Position& pos, Value& margin) { Bitboard b; Score score = SCORE_ZERO; - // Undefended minors get penalized even if not under attack - Bitboard undefended = pos.pieces(Them) - & (pos.pieces(BISHOP) | pos.pieces(KNIGHT)) - & ~ei.attackedBy[Them][0]; - if (undefended) - score += single_bit(undefended) ? UndefendedMinorPenalty - : UndefendedMinorPenalty * 2; + // Undefended pieces get penalized even if not under attack + Bitboard undefended = pos.pieces(Them) & ~ei.attackedBy[Them][0]; + const Bitboard undefendedMinors = undefended & (pos.pieces(BISHOP) | pos.pieces(KNIGHT)); + + if (undefendedMinors) + score += single_bit(undefendedMinors) ? UndefendedPiecePenalty + : UndefendedPiecePenalty * 2; + if (undefended & pos.pieces(ROOK)) + score += UndefendedPiecePenalty; // Enemy pieces not defended by a pawn and under our attack Bitboard weakEnemies = pos.pieces(Them)