From eba8925d810fe9c30db18038830d427c655cdd50 Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Tue, 25 Nov 2008 11:10:02 +0100 Subject: [PATCH] MovePicker: take advantage of threat move for ordering If the null move was refuted by a capture then give a bonus if we move away the captured piece. Signed-off-by: Marco Costalba --- src/movepick.cpp | 9 ++++++++- src/movepick.h | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/movepick.cpp b/src/movepick.cpp index ee747c94..ca0d8681 100644 --- a/src/movepick.cpp +++ b/src/movepick.cpp @@ -72,6 +72,7 @@ MovePicker::MovePicker(const Position& p, bool pv, Move ttm, mateKiller = (ss.mateKiller == ttm)? MOVE_NONE : ss.mateKiller; killer1 = ss.killers[0]; killer2 = ss.killers[1]; + threatMove = ss.threatMove; depth = d; movesPicked = 0; numOfMoves = 0; @@ -270,10 +271,16 @@ void MovePicker::score_noncaptures() { else hs = H.move_ordering_score(pos.piece_on(move_from(m)), m); - // Ensure moves in history are always sorted as first + // If the null move was refuted by a capture then give a + // bonus if we move away the captured piece. + if (threatMove != MOVE_NONE && move_from(m) == move_to(threatMove)) + hs *= 3; + + // Ensure history is always preferred to pst if (hs > 0) hs += 1000; + // pst based scoring moves[i].score = hs + pos.mg_pst_delta(m); } } diff --git a/src/movepick.h b/src/movepick.h index fd1ee890..5fff4092 100644 --- a/src/movepick.h +++ b/src/movepick.h @@ -83,7 +83,7 @@ private: int find_best_index(Bitboard* squares, int values[]); const Position& pos; - Move ttMove, mateKiller, killer1, killer2; + Move ttMove, mateKiller, killer1, killer2, threatMove; Bitboard pinned, dc; MoveStack moves[256], badCaptures[64]; bool pvNode; -- 2.39.2