King safety parameters improved
authorIIvec <ivan.ivec@gmail.com>
Sun, 23 Apr 2017 15:02:52 +0000 (08:02 -0700)
committerJoona Kiiski <joona@zoox.com>
Sun, 23 Apr 2017 15:04:03 +0000 (08:04 -0700)
STC:
LLR: 2.97 (-2.94,2.94) [0.00,4.00]
Total: 58648 W: 10883 L: 10524 D: 37241

LTC:
LLR: 2.95 (-2.94,2.94) [0.00,4.00]
Total: 52546 W: 7131 L: 6844 D: 38571

Bench 6121479

Closes #1078

src/evaluate.cpp

index 23ab62ec5ab178123612d14fea547c3e36daad06..f13ddf25315d9419520011ad60d339a5eee103e4 100644 (file)
@@ -211,10 +211,10 @@ namespace {
   const int KingAttackWeights[PIECE_TYPE_NB] = { 0, 0, 78, 56, 45, 11 };
 
   // Penalties for enemy's safe checks
-  const int QueenCheck        = 745;
-  const int RookCheck         = 688;
-  const int BishopCheck       = 588;
-  const int KnightCheck       = 924;
+  const int QueenCheck        = 810;
+  const int RookCheck         = 888;
+  const int BishopCheck       = 400;
+  const int KnightCheck       = 790;
 
   // Threshold for lazy evaluation
   const Value LazyThreshold = Value(1500);
@@ -423,12 +423,12 @@ namespace {
         // number and types of the enemy's attacking pieces, the number of
         // attacked and undefended squares around our king and the quality of
         // the pawn shelter (current 'score' value).
-        kingDanger =  std::min(807, ei.kingAttackersCount[Them] * ei.kingAttackersWeight[Them])
-                    + 101 * ei.kingAdjacentZoneAttacksCount[Them]
-                    + 235 * popcount(undefended)
-                    + 134 * (popcount(b) + !!pos.pinned_pieces(Us))
-                    - 717 * !pos.count<QUEEN>(Them)
-                    -   7 * mg_value(score) / 5 - 5;
+        kingDanger =  std::min(820, ei.kingAttackersCount[Them] * ei.kingAttackersWeight[Them])
+                    + 103 * ei.kingAdjacentZoneAttacksCount[Them]
+                    + 190 * popcount(undefended)
+                    + 142 * (popcount(b) + !!pos.pinned_pieces(Us))
+                    - 810 * !pos.count<QUEEN>(Them)
+                    -   6 * mg_value(score) / 5 - 5;
 
         // Analyse the safe enemy's checks which are possible on next move
         safe  = ~pos.pieces(Them);