Tuned values for mid and end game passed pawns.
authorDiscanX <discan123@gmail.com>
Sun, 9 Aug 2015 17:25:41 +0000 (01:25 +0800)
committerGary Linscott <glinscott@gmail.com>
Sun, 9 Aug 2015 17:26:59 +0000 (01:26 +0800)
STC :
LLR: 2.96 (-2.94,2.94) [0.00,4.00]
Total: 22691 W: 4468 L: 4228 D: 13995

LTC :
LLR: 2.95 (-2.94,2.94) [0.00,4.00]
Total: 13620 W: 2216 L: 2023 D: 9381

Bench: 8384669

Resolves #391

src/evaluate.cpp

index a1a120435a8d38194bc306a1f7b2917a77f779b9..c8211bb0573d07e82dc2f83e0ca92eca984b4efb 100644 (file)
@@ -146,6 +146,17 @@ namespace {
     S(0, 0), S(0, 0), S(107, 138), S(84, 122), S(114, 203), S(121, 217)
   };
 
+  // PassedPawnsBonusMg[Rank] and PassedPawnsBonusEg[Rank]
+  //contains bonuses for midgame and endgame for passed pawns according to
+  //the rank of the pawn.
+  const Value PassedPawnsBonusMg[6] = {
+    V(0), V(1), V(34), V(90), V(214), V(328)
+  };
+
+  const Value PassedPawnsBonusEg[6] = {
+    V(7), V(14), V(37), V(63), V(134), V(189)
+  };
+
   const Score ThreatenedByHangingPawn = S(40, 60);
 
   // Assorted bonuses and penalties used by evaluation
@@ -567,8 +578,8 @@ namespace {
         int r = relative_rank(Us, s) - RANK_2;
         int rr = r * (r - 1);
 
-        // Base bonus based on rank
-        Value mbonus = Value(17 * rr), ebonus = Value(7 * (rr + r + 1));
+        Value mbonus = PassedPawnsBonusMg[r],
+              ebonus = PassedPawnsBonusEg[r];
 
         if (rr)
         {