IID in pv also when TT move depth is too small
authorMarco Costalba <mcostalba@gmail.com>
Fri, 6 Nov 2009 15:08:39 +0000 (16:08 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Fri, 6 Nov 2009 16:52:04 +0000 (17:52 +0100)
Try an internal iterative deepening not only when we don't
have a TT move but also if search depth is more then 4*OnePly
higher then TT move depth.

On some tests it seems that in around 20% of cases ttMove changes !

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

index c1a91a97ea0f637ca1658bb946c1886060f3ce65..23066d8f5d7186aa5391dca08822787624c53e0d 100644 (file)
@@ -1103,8 +1103,11 @@ namespace {
     tte = TT.retrieve(pos.get_key());
     ttMove = (tte ? tte->move() : MOVE_NONE);
 
-    // Go with internal iterative deepening if we don't have a TT move
-    if (UseIIDAtPVNodes && ttMove == MOVE_NONE && depth >= 5*OnePly)
+    // Go with internal iterative deepening if we don't have a TT move or
+    // if search depth is more then 4*OnePly higher then TT move depth.
+    if (   UseIIDAtPVNodes
+        && depth >= 5*OnePly
+        &&(!ttMove || depth > tte->depth() + 4*OnePly))
     {
         search_pv(pos, ss, alpha, beta, depth-2*OnePly, ply, threadID);
         ttMove = ss[ply].pv[ply];