Skip to content

Commit

Permalink
Pinned pieces affect king safety
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Stefan Geschwentner authored and mcostalba committed Mar 29, 2014
1 parent c7cf452 commit af0c13b
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/evaluate.cpp
Expand Up @@ -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];
Expand Down Expand Up @@ -693,6 +695,10 @@ Value do_evaluate(const Position& pos) {
if (b)
attackUnits += KnightCheck * popcount<Max15>(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));

Expand Down

0 comments on commit af0c13b

Please sign in to comment.