From 24b25b4827df4b3629d46ef019f4fea645d6dc91 Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Sat, 21 Jan 2012 20:53:42 +0100 Subject: [PATCH] Order bad captures by MVV/LVA Instead of by SEE. Almost no ELO change but it is a bit easier and is a more natural choice given that good captures are ordered in the same way. After 10424 games Mod vs Orig 1639 - 1604 - 7181 ELO +1 (+-3.8) Signed-off-by: Marco Costalba --- src/movepick.cpp | 18 +++++++----------- src/movepick.h | 2 +- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/movepick.cpp b/src/movepick.cpp index 486fec0f..37775faa 100644 --- a/src/movepick.cpp +++ b/src/movepick.cpp @@ -64,7 +64,7 @@ MovePicker::MovePicker(const Position& p, Move ttm, Depth d, const History& h, captureThreshold = 0; curMove = lastMove = moves; - badCaptures = moves + MAX_MOVES; + lastBadCapture = moves + MAX_MOVES - 1; if (p.in_check()) phase = EVASION; @@ -242,10 +242,9 @@ void MovePicker::generate_next() { return; case BAD_CAPTURES_S1: - // Bad captures SEE value is already calculated so just pick them in order - // to get SEE move ordering. - curMove = badCaptures; - lastMove = moves + MAX_MOVES; + // Just pick them in reverse order to get MVV/LVA ordering + curMove = moves + MAX_MOVES - 1; + lastMove = lastBadCapture; return; case EVASIONS_S2: @@ -297,13 +296,11 @@ Move MovePicker::next_move() { { assert(captureThreshold <= 0); // Otherwise we cannot use see_sign() - int seeScore = pos.see_sign(move); - if (seeScore >= captureThreshold) + if (pos.see_sign(move) >= captureThreshold) return move; // Losing capture, move it to the tail of the array - (--badCaptures)->move = move; - badCaptures->score = seeScore; + (lastBadCapture--)->move = move; } break; @@ -325,8 +322,7 @@ Move MovePicker::next_move() { break; case BAD_CAPTURES_S1: - move = pick_best(curMove++, lastMove)->move; - return move; + return (curMove--)->move; case EVASIONS_S2: case CAPTURES_S3: case CAPTURES_S4: move = pick_best(curMove++, lastMove)->move; diff --git a/src/movepick.h b/src/movepick.h index 5084f1e0..03305ebd 100644 --- a/src/movepick.h +++ b/src/movepick.h @@ -56,7 +56,7 @@ private: MoveStack killers[2]; Square recaptureSquare; int captureThreshold, phase; - MoveStack *curMove, *lastMove, *lastQuiet, *badCaptures; + MoveStack *curMove, *lastMove, *lastQuiet, *lastBadCapture; MoveStack moves[MAX_MOVES]; }; -- 2.39.2