From: Gary Linscott Date: Wed, 21 Mar 2012 06:26:46 +0000 (+0100) Subject: Penalize undefended minors X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=3c6a4bfbed219b220535bcbaaa76636d3f4879e8;hp=3b7dbc4f6d68928ad97a5d77561509232dd23f78 Penalize undefended minors Even if not under attack. This seems to be good especially on openings. After 12112 games at 10"+0.05 Mod vs Orig 2175 - 1997 - 7940 ELO +5 (+- 3.7) [Patch series from Gary, little edited by me] Signed-off-by: Marco Costalba --- diff --git a/src/evaluate.cpp b/src/evaluate.cpp index ef52f747..2193eb6b 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -679,12 +679,19 @@ 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 += make_score(25, 10) * popcount(undefended); + // Enemy pieces not defended by a pawn and under our attack Bitboard weakEnemies = pos.pieces(Them) & ~ei.attackedBy[Them][PAWN] & ei.attackedBy[Us][0]; if (!weakEnemies) - return SCORE_ZERO; + return score; // Add bonus according to type of attacked enemy piece and to the // type of attacking piece, from knights to queens. Kings are not