From: Marco Costalba Date: Sun, 17 Jan 2010 13:55:53 +0000 (+0100) Subject: Order check moves used in qsearch X-Git-Url: http://winboard.nl/cgi-bin?a=commitdiff_plain;h=66d5c13a88f041247adf2ba62acdf936a6d6224e;p=fairystockfish.git Order check moves used in qsearch Use the same scoring system used for evasions. Small if any increase, but should be in at least for completeness. After 999 games at 1+0 Mod vs Orig +208 =601 -190 +6 ELO Signed-off-by: Marco Costalba --- diff --git a/src/movepick.cpp b/src/movepick.cpp index f4f475f..8d8060b 100644 --- a/src/movepick.cpp +++ b/src/movepick.cpp @@ -141,7 +141,7 @@ void MovePicker::go_next_phase() { case PH_EVASIONS: assert(pos.is_check()); lastMove = generate_evasions(pos, moves); - score_evasions(); + score_evasions_or_checks(); return; case PH_QCAPTURES: @@ -150,8 +150,8 @@ void MovePicker::go_next_phase() { return; case PH_QCHECKS: - // Perhaps we should order moves move here? FIXME lastMove = generate_non_capture_checks(pos, moves); + score_evasions_or_checks(); return; case PH_STOP: @@ -224,7 +224,7 @@ void MovePicker::score_noncaptures() { } } -void MovePicker::score_evasions() { +void MovePicker::score_evasions_or_checks() { // Try good captures ordered by MVV/LVA, then non-captures if // destination square is not under attack, ordered by history // value, and at the end bad-captures and non-captures with a @@ -232,6 +232,10 @@ void MovePicker::score_evasions() { Move m; int seeScore; + // Skip if we don't have at least two moves to order + if (lastMove < moves + 2) + return; + for (MoveStack* cur = moves; cur != lastMove; cur++) { m = cur->move; diff --git a/src/movepick.h b/src/movepick.h index b42f839..a9a3561 100644 --- a/src/movepick.h +++ b/src/movepick.h @@ -58,7 +58,7 @@ public: private: void score_captures(); void score_noncaptures(); - void score_evasions(); + void score_evasions_or_checks(); void go_next_phase(); const Position& pos;