X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fmovepick.cpp;h=6bb5c315554abab89fe17896af79e7427af2e980;hp=638f81757d2af94d72c9b0c6739ab1d191d2c6f5;hb=8b99e9456241706b3d61fd6b165e57d14618e568;hpb=252844e899515d48c0db1153ef5e91bdd8c6679f diff --git a/src/movepick.cpp b/src/movepick.cpp index 638f8175..6bb5c315 100644 --- a/src/movepick.cpp +++ b/src/movepick.cpp @@ -136,7 +136,7 @@ void MovePicker::go_next_phase() { case PH_NONCAPTURES: lastMove = generate_noncaptures(pos, moves); score_noncaptures(); - sort_moves(moves, lastMove); + sort_moves(moves, lastMove, &lastGoodNonCapture); return; case PH_BAD_CAPTURES: @@ -223,12 +223,12 @@ void MovePicker::score_noncaptures() { piece = pos.piece_on(from); hs = H.move_ordering_score(piece, to); - // Ensure history is always preferred to pst + // Ensure history has always highest priority if (hs > 0) - hs += 1000; + hs += 10000; - // pst based scoring - cur->score = hs + mg_value(pos.pst_delta(piece, from, to)); + // Gain table based scoring + cur->score = hs + 16 * H.gain(piece, to); } } @@ -248,7 +248,7 @@ void MovePicker::score_evasions_or_checks() { { m = cur->move; if ((seeScore = pos.see_sign(m)) < 0) - cur->score = seeScore; + cur->score = seeScore - HistoryMax; // Be sure are at the bottom else if (pos.move_is_capture(m)) cur->score = pos.midgame_value_of_piece_on(move_to(m)) - pos.type_of_piece_on(move_from(m)) + HistoryMax; @@ -313,6 +313,11 @@ Move MovePicker::get_next_move() { break; case PH_NONCAPTURES: + + // Sort negative scored moves only when we get there + if (curMove == lastGoodNonCapture) + insertion_sort(lastGoodNonCapture, lastMove); + move = (curMove++)->move; if ( move != ttMoves[0].move && move != ttMoves[1].move