Bonus for file distance of the outermost pawns
authorStefan Geschwentner <Stefan.Geschwentner@web.de>
Tue, 24 Dec 2013 22:37:34 +0000 (23:37 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Wed, 25 Dec 2013 20:31:41 +0000 (21:31 +0100)
In endgame it's better to have pawns on both wings.
So give a bonus according to file distance between left
and right outermost pawns.

Passed both short TC
LLR: 2.97 (-2.94,2.94) [-1.50,4.50]
Total: 39073 W: 7749 L: 7536 D: 23788

And long TC
LLR: 2.96 (-2.94,2.94) [0.00,6.00]
Total: 6149 W: 1040 L: 910 D: 4199

bench: 7665034

src/pawns.cpp

index 37db673..39bd689 100644 (file)
@@ -57,6 +57,9 @@ namespace {
     S( 0, 0), S( 6, 13), S(6,13), S(14,29),
     S(34,68), S(83,166), S(0, 0), S( 0, 0) };
 
     S( 0, 0), S( 6, 13), S(6,13), S(14,29),
     S(34,68), S(83,166), S(0, 0), S( 0, 0) };
 
+  // Bonus for file distance of the two outermost pawns
+  const Score PawnsFileSpan = S(0, 10);
+
   // Weakness of our pawn shelter in front of the king indexed by [rank]
   const Value ShelterWeakness[RANK_NB] =
   { V(100), V(0), V(27), V(73), V(92), V(101), V(101) };
   // Weakness of our pawn shelter in front of the king indexed by [rank]
   const Value ShelterWeakness[RANK_NB] =
   { V(100), V(0), V(27), V(73), V(92), V(101), V(101) };
@@ -181,6 +184,14 @@ namespace {
         }
     }
 
         }
     }
 
+    // In endgame it's better to have pawns on both wings. So give a bonus according
+    // to file distance between left and right outermost pawns.
+    if (pos.count<PAWN>(Us) > 1)
+    {
+        b = ~e->semiopenFiles[Us] & 0xFF;
+        value += PawnsFileSpan * int(msb(b) - lsb(b));
+    }
+
     return value;
   }
 
     return value;
   }