Doubled and supported pawns
authorSt├ęphane Nicolet <cassio@free.fr>
Tue, 11 Apr 2017 17:50:24 +0000 (19:50 +0200)
committerJoona Kiiski <joona@zoox.com>
Sun, 16 Apr 2017 13:22:48 +0000 (06:22 -0700)
Do not give the doubled pawn penalty when the frontmost pawn is
supported, for instance f2-g2-g3

STC:
LLR: 2.95 (-2.94,2.94) [0.00,5.00]
Total: 55927 W: 10418 L: 10052 D: 35457
http://tests.stockfishchess.org/tests/view/58eb9fc20ebc59035df33858

LTC:
LLR: 2.96 (-2.94,2.94) [0.00,5.00]
Total: 32078 W: 4257 L: 4035 D: 23786
http://tests.stockfishchess.org/tests/view/58ec48420ebc59035df3388b

Bench: 5995472

Closes #1062

src/pawns.cpp

index 10f67236f61500bcddd8e237005a9e323eeae1ed..cee744134f4f779031f73bd65aa20547367ce545 100644 (file)
@@ -131,7 +131,7 @@ namespace {
         stoppers   = theirPawns & passed_pawn_mask(Us, s);
         lever      = theirPawns & pawnAttacksBB[s];
         leverPush  = theirPawns & pawnAttacksBB[s + Up];
-        doubled    = ourPawns   & (s + Up);
+        doubled    = ourPawns   & (s - Up);
         neighbours = ourPawns   & adjacent_files_bb(f);
         phalanx    = neighbours & rank_bb(s);
         supported  = neighbours & rank_bb(s - Up);
@@ -177,8 +177,8 @@ namespace {
         if (connected)
             score += Connected[opposed][!!phalanx][more_than_one(supported)][relative_rank(Us, s)];
 
-        if (doubled)
-            score -= Doubled;
+        if (doubled && !supported)
+           score -= Doubled;
 
         if (lever)
             score += Lever[relative_rank(Us, s)];