X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmovepick.cpp;h=914cd80e422eddf58dfdd9bf81b70e11a001718a;hb=92dbee7875254eb54347edd00fae48467b1b0fd2;hp=190a30f8c8c613f22dcd8351ed3609ce1ac66986;hpb=6c040c821a50475840607ef5f11c270ee21d61da;p=stockfish diff --git a/src/movepick.cpp b/src/movepick.cpp index 190a30f8..914cd80e 100644 --- a/src/movepick.cpp +++ b/src/movepick.cpp @@ -134,10 +134,10 @@ MovePicker::MovePicker(const Position& p, Move ttm, const HistoryStats& h, const /// highest values will be picked first. template<> void MovePicker::score() { - // Winning and equal captures in the main search are ordered by MVV/LVA. + // Winning and equal captures in the main search are ordered by MVV. // Suprisingly, this appears to perform slightly better than SEE based // move ordering. The reason is probably that in a position with a winning - // capture, capturing a more valuable (but sufficiently defended) piece + // capture, capturing a valuable (but sufficiently defended) piece // first usually doesn't hurt. The opponent will have to recapture, and // the hanging piece will still be hanging (except in the unusual cases // where it is possible to recapture with the hanging piece). Exchanging @@ -148,15 +148,8 @@ void MovePicker::score() { // has been picked up in pick_move_from_list(). This way we save some SEE // calls in case we get a cutoff. for (auto& m : *this) - if (type_of(m) == ENPASSANT) - m.value = PieceValue[MG][PAWN] - Value(PAWN); - - else if (type_of(m) == PROMOTION) - m.value = PieceValue[MG][pos.piece_on(to_sq(m))] - Value(PAWN) - + PieceValue[MG][promotion_type(m)] - PieceValue[MG][PAWN]; - else - m.value = PieceValue[MG][pos.piece_on(to_sq(m))] - - Value(type_of(pos.moved_piece(m))); + m.value = PieceValue[MG][pos.piece_on(to_sq(m))] + - 200 * relative_rank(pos.side_to_move(), to_sq(m)); } template<>