1
0
Fork 0
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:
Marco Costalba 2012-01-21 20:53:42 +01:00
parent 830ff985db
commit 24b25b4827
2 changed files with 8 additions and 12 deletions

View file

@ -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;

View file

@ -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];
};