Improve ordering of good captures using rank term
authorStefano80 <stefano.cardanobile@gmail.com>
Sun, 3 May 2015 17:18:38 +0000 (10:18 -0700)
committerGary Linscott <glinscott@gmail.com>
Sun, 3 May 2015 17:19:34 +0000 (10:19 -0700)
Rank based term improved approximation of pos.see() for scoring good
captures.

STC
LLR: 2.95 (-2.94,2.94) [-1.50,4.50]
Total: 4632 W: 945 L: 827 D: 2860

LTC
LLR: 2.95 (-2.94,2.94) [0.00,6.00]
Total: 25770 W: 4184 L: 3964 D: 17622

Bench: 7593704

Resolves #342

src/movepick.cpp

index 9656e5e64ddfd912aa694fcffef4c4edc271916e..3fe09bb7391260bdf94f6eee465c86dee3f82374 100644 (file)
@@ -147,8 +147,9 @@ void MovePicker::score<CAPTURES>() {
   // badCaptures[] array, but instead of doing it now we delay until the move
   // has been picked up in pick_move_from_list(). This way we save some SEE
   // calls in case we get a cutoff.
-  for (auto& m : *this)
-      m.value =  Value(int(pos.piece_on(to_sq(m))));
+  for (auto& m : *this){
+      m.value = PieceValue[MG][pos.piece_on(to_sq(m))] - 200*relative_rank(pos.side_to_move(), to_sq(m));
+  }
 }
 
 template<>