Convert gains to use a piece-to mapping
authorMarco Costalba <mcostalba@gmail.com>
Tue, 2 Feb 2010 08:10:15 +0000 (09:10 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Wed, 3 Feb 2010 18:33:59 +0000 (19:33 +0100)
Instead of piece-from-to, in this way it is similar
to what we already do for history.

Almost no change, but seems a bit simpler in this way.

After 995 games at 1+0
Mod vs Orig +207 =596 -192 +5 ELO

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/history.cpp
src/history.h
src/search.cpp

index 8c20f7e0578feb521aa54b10bf25da7e2089f7ff..2bb3451048d3f6ed5be283e7824232698a29c9ba 100644 (file)
@@ -42,7 +42,7 @@ History::History() { clear(); }
 
 void History::clear() {
   memset(history, 0, 2 * 8 * 64 * sizeof(int));
-  memset(maxStaticValueDelta, 0, 16 * 64 * 64 * sizeof(int));
+  memset(maxStaticValueDelta, 0, 2 * 8 * 64 * sizeof(int));
 }
 
 
@@ -101,15 +101,15 @@ int History::move_ordering_score(Piece p, Square to) const {
 /// gain of a move given the delta of the static position evaluations
 /// before and after the move.
 
-void History::set_gain(Piece p, Square from, Square to, Value delta)
+void History::set_gain(Piece p, Square to, Value delta)
 {
-  if (delta >= maxStaticValueDelta[p][from][to])
-      maxStaticValueDelta[p][from][to] = delta;
+  if (delta >= maxStaticValueDelta[p][to])
+      maxStaticValueDelta[p][to] = delta;
   else
-      maxStaticValueDelta[p][from][to]--;
+      maxStaticValueDelta[p][to]--;
 }
 
-Value History::gain(Piece p, Square from, Square to) const
+Value History::gain(Piece p, Square to) const
 {
-  return Value(maxStaticValueDelta[p][from][to]);
+  return Value(maxStaticValueDelta[p][to]);
 }
index b12169471842a50a6b85be1314082646462f1062..b1121d85d54ea40f470762e6d2af7ca46990191d 100644 (file)
@@ -50,12 +50,12 @@ public:
   void success(Piece p, Square to, Depth d);
   void failure(Piece p, Square to, Depth d);
   int move_ordering_score(Piece p, Square to) const;
-  void set_gain(Piece p, Square from, Square to, Value delta);
-  Value gain(Piece p, Square from, Square to) const;
+  void set_gain(Piece p, Square to, Value delta);
+  Value gain(Piece p, Square to) const;
 
 private:
   int history[16][64];  // [piece][square]
-  int maxStaticValueDelta[16][64][64];  // [piece][from_square][to_square]
+  int maxStaticValueDelta[16][64];  // [piece][from_square][to_square]
 };
 
 
index 987b954a6cd5554fe252f051e12de6447dfd14d0..9d4c6d248c1bac2e39b763d6fce611563f974d92 100644 (file)
@@ -1607,7 +1607,7 @@ namespace {
               if (predictedDepth >= OnePly)
                   preFutilityValueMargin = FutilityMargins[int(predictedDepth)];
 
-              preFutilityValueMargin += H.gain(pos.piece_on(move_from(move)), move_from(move), move_to(move)) + 45;
+              preFutilityValueMargin += H.gain(pos.piece_on(move_from(move)), move_to(move)) + 45;
 
               futilityValueScaled = ss[ply].eval + preFutilityValueMargin - moveCount * IncrementalFutilityMargin;
 
@@ -2704,7 +2704,7 @@ namespace {
         && pos.captured_piece() == NO_PIECE_TYPE
         && !move_is_castle(m)
         && !move_is_promotion(m))
-        H.set_gain(pos.piece_on(move_to(m)), move_from(m), move_to(m), -(before + after));
+        H.set_gain(pos.piece_on(move_to(m)), move_to(m), -(before + after));
   }