X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=549f19e211caecc575a10eb6fda327a6986e1d06;hp=92d2c75ed2c6fd5a3ff3b89d376e60c704c048f4;hb=ca4e78db8db1288eb5c8deecb9bdf402f53fdc98;hpb=bfcfaf71018b3aed274ebd544a10c4508718e7de diff --git a/src/search.cpp b/src/search.cpp index 92d2c75e..549f19e2 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -149,16 +149,6 @@ namespace { // evaluation of the position is more than NullMoveMargin below beta. const Value NullMoveMargin = Value(0x300); - //Null move search refutes move when Nullvalue >= Beta - Delta. Index is depth - //in full plies. Last index is 9+. - const Value NullMoveDeltaMidgame[] = - { Value(-8), Value( 6), Value(-15), Value( 9), Value(21), - Value(34), Value(54), Value( 59), Value(61), Value(61) }; - - const Value NullMoveDeltaEndgame[] = - { Value( 6), Value( 0), Value(-13), Value(-9), Value(-35), - Value(12), Value(24), Value( 9), Value( 5), Value( 5) }; - // Pruning criterions. See the code and comments in ok_to_prune() to // understand their precise meaning. const bool PruneEscapeMoves = false; @@ -1207,19 +1197,13 @@ namespace { && ok_to_do_nullmove(pos) && approximateEval >= beta - NullMoveMargin) { - //Calculate correct delta. Idea and tuning from Joona Kiiski. - ScaleFactor factor[2] = { SCALE_FACTOR_NORMAL, SCALE_FACTOR_NORMAL }; - Phase phase = pos.game_phase(); - int i = Min(depth / OnePly, 9); - Value delta = scale_by_game_phase(NullMoveDeltaMidgame[i], NullMoveDeltaEndgame[i], phase, factor); - ss[ply].currentMove = MOVE_NULL; StateInfo st; pos.do_null_move(st); int R = (depth >= 4 * OnePly ? 4 : 3); // Null move dynamic reduction - Value nullValue = -search(pos, ss, -(beta-delta-1), depth-R*OnePly, ply+1, false, threadID); + Value nullValue = -search(pos, ss, -(beta-1), depth-R*OnePly, ply+1, false, threadID); pos.undo_null_move(); @@ -1227,7 +1211,7 @@ namespace { { /* Do not return unproven mates */ } - else if (nullValue >= beta - delta) + else if (nullValue >= beta) { if (depth < 6 * OnePly) return beta;