]> git.sesse.net Git - stockfish/commitdiff
Revert "Penalty for undefended rook"
authorMarco Costalba <mcostalba@gmail.com>
Sat, 7 Apr 2012 10:34:22 +0000 (11:34 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sat, 7 Apr 2012 10:34:22 +0000 (11:34 +0100)
After extensive test Gary says:

"So, after 16k games at 10"+1" on an i7, the undefended rook test
looks to be not good (albeit by a very small margin).
3063 - 3093 - 9844 (-1).

I doubt that is causing the regression, but even so, it looks like
it's not worth keeping, and we can go back to the simpler undefended
minors check."

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/evaluate.cpp

index 9806b34bf09dc8e2c72d8e47c6a15830ed6214fd..849185b67e497246048fdf508e040b1cf58b48b4 100644 (file)
@@ -167,8 +167,8 @@ namespace {
   // happen in Chess960 games.
   const Score TrappedBishopA1H1Penalty = make_score(100, 100);
 
-  // Penalty for BNR that is not defended by anything
-  const Score UndefendedPiecePenalty = make_score(25, 10);
+  // Penalty for an undefended bishop or knight
+  const Score UndefendedMinorPenalty = 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
@@ -676,18 +676,17 @@ Value do_evaluate(const Position& pos, Value& margin) {
 
     const Color Them = (Us == WHITE ? BLACK : WHITE);
 
-    Bitboard b, undefended, undefendedMinors, weakEnemies;
+    Bitboard b, undefendedMinors, weakEnemies;
     Score score = SCORE_ZERO;
 
-    // Undefended pieces get penalized even if not under attack
-    undefended = pos.pieces(Them) & ~ei.attackedBy[Them][0];
-    undefendedMinors = undefended & (pos.pieces(BISHOP) | pos.pieces(KNIGHT));
+    // Undefended minors get penalized even if not under attack
+    undefendedMinors =  pos.pieces(Them)
+                      & (pos.pieces(BISHOP) | pos.pieces(KNIGHT))
+                      & ~ei.attackedBy[Them][0];
 
     if (undefendedMinors)
-        score += single_bit(undefendedMinors) ? UndefendedPiecePenalty
-                                              : UndefendedPiecePenalty * 2;
-    if (undefended & pos.pieces(ROOK))
-        score += UndefendedPiecePenalty;
+        score += single_bit(undefendedMinors) ? UndefendedMinorPenalty
+                                              : UndefendedMinorPenalty * 2;
 
     // Enemy pieces not defended by a pawn and under our attack
     weakEnemies =  pos.pieces(Them)