Retire asymmThreshold
authorMarco Costalba <mcostalba@gmail.com>
Sat, 28 Dec 2013 09:30:35 +0000 (10:30 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Mon, 30 Dec 2013 00:27:57 +0000 (01:27 +0100)
Verified with 40K games at long TC does not regress:
ELO: 1.74 +-1.9 (95%) LOS: 96.2%
Total: 39624 W: 6402 L: 6203 D: 27019

bench: 7762310

src/position.cpp
src/position.h
src/search.cpp

index 982befa..910966a 100644 (file)
@@ -1029,7 +1029,7 @@ int Position::see_sign(Move m) const {
   return see(m);
 }
 
-int Position::see(Move m, int asymmThreshold) const {
+int Position::see(Move m) const {
 
   Square from, to;
   Bitboard occupied, attackers, stmAttackers;
@@ -1096,15 +1096,6 @@ int Position::see(Move m, int asymmThreshold) const {
 
   } while (stmAttackers);
 
-  // If we are doing asymmetric SEE evaluation and the same side does the first
-  // and the last capture, it loses a tempo and gain must be at least worth
-  // 'asymmThreshold', otherwise we replace the score with a very low value,
-  // before negamaxing.
-  if (asymmThreshold)
-      for (int i = 0; i < slIndex; i += 2)
-          if (swapList[i] < asymmThreshold)
-              swapList[i] = - QueenValueMg * 16;
-
   // Having built the swap list, we negamax through it to find the best
   // achievable score from the point of view of the side to move.
   while (--slIndex)
index 9a88e1b..6b77a73 100644 (file)
@@ -141,7 +141,7 @@ public:
   void undo_null_move();
 
   // Static exchange evaluation
-  int see(Move m, int asymmThreshold = 0) const;
+  int see(Move m) const;
   int see_sign(Move m) const;
 
   // Accessing hash keys
index 713bd10..19cb3b5 100644 (file)
@@ -1220,10 +1220,7 @@ moves_loop: // When in check and at SpNode search starts from here
               continue;
           }
 
-          // Prune moves with negative or equal SEE and also moves with positive
-          // SEE where capturing piece loses a tempo and SEE < beta - futilityBase.
-          if (   futilityBase < beta
-              && pos.see(move, beta - futilityBase) <= 0)
+          if (futilityBase < beta && pos.see(move) <= 0)
           {
               bestValue = std::max(bestValue, futilityBase);
               continue;