From 3c6a4bfbed219b220535bcbaaa76636d3f4879e8 Mon Sep 17 00:00:00 2001 From: Gary Linscott Date: Wed, 21 Mar 2012 07:26:46 +0100 Subject: [PATCH 1/1] 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 --- src/evaluate.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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 -- 2.39.2