mirror of
https://github.com/sockspls/badfish
synced 2025-07-11 03:29:14 +00:00
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 <mcostalba@gmail.com>
This commit is contained in:
parent
830ff985db
commit
24b25b4827
2 changed files with 8 additions and 12 deletions
|
@ -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;
|
||||
|
|
|
@ -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];
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue