correct way to score promotions using MVV-LVA
Posted: Thu Jun 06, 2019 6:28 pm
Stockfish used to do this for captures:
resulting in the following order for captures & promotions:
but searching this forum I found multiple posts with different ordering schemes, some of which place all promotions after all non losing captures to reduce the search tree size,...etc.
which one is better in general & do you use different schemes in the main search than in Qsearch ?
Code: Select all
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)));
Code: Select all
From/Pr To
Queen Queen Promotion
Rook Queen Promotion
Queen Rook Promotion
Bishop Queen Promotion
Queen Bishop Promotion
Knight Queen Promotion
Queen Knight Promotion
Pawn Queen
Queen Pawn Promotion
Knight Queen
Bishop Queen
Rook Queen
Queen Queen
King Queen
Rook Rook Promotion
Queen Null Promotion
Bishop Rook Promotion
Rook Bishop Promotion
Knight Rook Promotion
Rook Knight Promotion
Bishop Bishop Promotion
Knight Bishop Promotion
Bishop Knight Promotion
Knight Knight Promotion
Pawn Rook
Rook Pawn Promotion
Knight Rook
Bishop Rook
Rook Rook
Queen Rook
King Rook
Rook Null Promotion
Pawn Bishop
Bishop Pawn Promotion
Knight Bishop
Bishop Bishop
Rook Bishop
Queen Bishop
King Bishop
Pawn Knight
Knight Pawn Promotion
Knight Knight
Bishop Knight
Rook Knight
Queen Knight
King Knight
Bishop Null Promotion
Knight Null Promotion
Pawn Pawn
Knight Pawn
Bishop Pawn
Rook Pawn
Queen Pawn
King Pawn
which one is better in general & do you use different schemes in the main search than in Qsearch ?