From: Stefan Geschwentner Date: Fri, 28 Mar 2014 07:41:50 +0000 (+0100) Subject: Pinned pieces affect king safety X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=af0c13ba6ad5d51432a8f4531d53c7309484df6b Pinned pieces affect king safety Here the new idea is to link pinned pieces with king safety. Passed both STC LLR: 2.96 (-2.94,2.94) [-1.50,4.50] Total: 10047 W: 1867 L: 1737 D: 6443 And LTC LLR: 2.97 (-2.94,2.94) [0.00,6.00] Total: 10419 W: 1692 L: 1543 D: 7184 bench: 8325087 --- diff --git a/src/evaluate.cpp b/src/evaluate.cpp index 99e9f047..8c84ac29 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -204,6 +204,8 @@ namespace { const int BishopCheck = 2; const int KnightCheck = 3; + const int UnsupportedPinnedPiece = 2; + // KingDanger[Color][attackUnits] contains the actual king danger weighted // scores, indexed by color and by a calculated integer number. Score KingDanger[COLOR_NB][128]; @@ -693,6 +695,10 @@ Value do_evaluate(const Position& pos) { if (b) attackUnits += KnightCheck * popcount(b); + // Penalty for pinned pieces not defended by a pawn + if (ei.pinnedPieces[Us] & ~ei.attackedBy[Us][PAWN]) + attackUnits += UnsupportedPinnedPiece; + // To index KingDanger[] attackUnits must be in [0, 99] range attackUnits = std::min(99, std::max(0, attackUnits));