King safety: retire rook contact check
authorMarco Costalba <mcostalba@gmail.com>
Mon, 22 Dec 2008 11:07:00 +0000 (12:07 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Mon, 22 Dec 2008 11:07:00 +0000 (12:07 +0100)
Merged from Glaurung 2.2

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/evaluate.cpp
src/ucioption.cpp

index 263a99091811d2ce7ebdde7f29b117bb8512a1aa..cf164cda786d94260b1a5c5b7d0ac651cf9bc9c2 100644 (file)
@@ -64,8 +64,8 @@ namespace {
   const int WeightPawnStructureEndgameInternal = 0x100;
   const int WeightPassedPawnsMidgameInternal   = 0x100;
   const int WeightPassedPawnsEndgameInternal   = 0x100;
-  const int WeightKingSafetyInternal           = 0x100;
-  const int WeightKingOppSafetyInternal        = 0x100;
+  const int WeightKingSafetyInternal           = 0x110;
+  const int WeightKingOppSafetyInternal        = 0x110;
   const int WeightSpaceInternal                = 0x30;
 
   // Visually better to define tables constants
@@ -230,8 +230,7 @@ namespace {
   const int KnightAttackWeight = 2;
 
   // Bonuses for safe checks for each piece type.
-  int QueenContactCheckBonus = 4;
-  int RookContactCheckBonus  = 2;
+  int QueenContactCheckBonus = 3;
   int QueenCheckBonus        = 2;
   int RookCheckBonus         = 1;
   int BishopCheckBonus       = 1;
@@ -820,25 +819,8 @@ namespace {
           }
         }
       }
-      // Analyse safe rook contact checks:
-      if (RookContactCheckBonus)
-      {
-          b = undefended & ei.attacked_by(them, ROOK) & ~p.pieces_of_color(them);
-          if (b)
-          {
-              Bitboard attackedByOthers =
-                    ei.attacked_by(them, PAWN)   | ei.attacked_by(them, KNIGHT)
-                  | ei.attacked_by(them, BISHOP) | ei.attacked_by(them, QUEEN);
-
-              b &= attackedByOthers;
-              if (b)
-              {
-                  int count = count_1s_max_15(b);
-                  attackUnits += (RookContactCheckBonus * count * (sente? 2 : 1));
-              }
-          }
-      }
-      // Analyse safe distance checks:
+
+      // Analyse safe distance checks
       if (QueenCheckBonus > 0 || RookCheckBonus > 0)
       {
           b = p.piece_attacks<ROOK>(s) & ~p.pieces_of_color(them) & ~ei.attacked_by(us);
@@ -1219,7 +1201,6 @@ namespace {
   void init_safety() {
 
     QueenContactCheckBonus = get_option_value_int("Queen Contact Check Bonus");
-    RookContactCheckBonus  = get_option_value_int("Rook Contact Check Bonus");
     QueenCheckBonus        = get_option_value_int("Queen Check Bonus");
     RookCheckBonus         = get_option_value_int("Rook Check Bonus");
     BishopCheckBonus       = get_option_value_int("Bishop Check Bonus");
index c777383e47a05fd16ceec4462f7eabf7de9bcea4..a58ac1ae4a8378e12b6ade96a732739246076b4c 100644 (file)
@@ -97,8 +97,7 @@ namespace {
     o.push_back(Option("King Safety X Intercept", 0, 0, 20));
     o.push_back(Option("King Safety Max Slope", 30, 10, 100));
     o.push_back(Option("King Safety Max Value", 500, 100, 1000));
-    o.push_back(Option("Queen Contact Check Bonus", 4, 0, 8));
-    o.push_back(Option("Rook Contact Check Bonus", 2, 0, 4));
+    o.push_back(Option("Queen Contact Check Bonus", 3, 0, 8));
     o.push_back(Option("Queen Check Bonus", 2, 0, 4));
     o.push_back(Option("Rook Check Bonus", 1, 0, 4));
     o.push_back(Option("Bishop Check Bonus", 1, 0, 4));