From ab0f4c03539b151f07d99a5336e47e8dbdc63c6e Mon Sep 17 00:00:00 2001 From: =?utf8?q?St=C3=A9phane=20Nicolet?= Date: Tue, 24 May 2016 08:09:13 +0200 Subject: [PATCH 1/1] Simplify doubled pawn Only use doubled pawn malus when the doubled pawns are on consecutive squares. Passed STC: LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 7678 W: 1469 L: 1325 D: 4884 And LTC: LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 26739 W: 3562 L: 3449 D: 19728 Bench: 8211685 --- src/pawns.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pawns.cpp b/src/pawns.cpp index 74b3fd5e..1ccc0958 100644 --- a/src/pawns.cpp +++ b/src/pawns.cpp @@ -124,7 +124,7 @@ namespace { opposed = theirPawns & forward_bb(Us, s); stoppers = theirPawns & passed_pawn_mask(Us, s); lever = theirPawns & pawnAttacksBB[s]; - doubled = ourPawns & forward_bb(Us, s); + doubled = ourPawns & (s + Up); neighbours = ourPawns & adjacent_files_bb(f); phalanx = neighbours & rank_bb(s); supported = neighbours & rank_bb(s - Up); @@ -150,7 +150,7 @@ namespace { // Passed pawns will be properly scored in evaluation because we need // full attack info to evaluate them. Only the frontmost passed // pawn on each file is considered a true passed pawn. - if (!(stoppers | doubled)) + if (!(stoppers | doubled)) // FIXME this is just doubled by adjacent pawn e->passedPawns[Us] |= s; // Score this pawn @@ -167,7 +167,7 @@ namespace { score += Connected[opposed][!!phalanx][more_than_one(supported)][relative_rank(Us, s)]; if (doubled) - score -= Doubled / distance(s, frontmost_sq(Us, doubled)); + score -= Doubled; if (lever) score += Lever[relative_rank(Us, s)]; -- 2.39.2