1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-04-29 16:23:09 +00:00

Revert movepick optimizations before to release

More testing is needed and better do not risk
just before release.

Reverted:

Disable LSN filtering as defualt for release
Use MVV/LVA in score_evasions()

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba 2008-11-02 15:58:10 +01:00
parent 8097e99c69
commit 1a158c0cf0

View file

@ -210,18 +210,23 @@ void MovePicker::score_captures() {
// the hanging piece will still be hanging (except in the unusual cases
// where it is possible to recapture with the hanging piece). Exchanging
// big pieces before capturing a hanging piece probably helps to reduce
// the subtree size. Instead of calculating SEE here to filter out
// loosing captures, we delay the filtering in pick_move_from_list()
// the subtree size.
Move m;
int seeValue;
for (int i = 0; i < numOfMoves; i++)
{
m = moves[i].move;
seeValue = pos.see(m);
if (seeValue >= 0)
{
if (move_promotion(m))
moves[i].score = QueenValueMidgame;
else
moves[i].score = int(pos.midgame_value_of_piece_on(move_to(m)))
-int(pos.type_of_piece_on(move_from(m)));
} else
moves[i].score = seeValue;
}
}
@ -253,24 +258,19 @@ void MovePicker::score_noncaptures() {
void MovePicker::score_evasions() {
Move m;
int hs;
// Use MVV/LVA ordering
for (int i = 0; i < numOfMoves; i++)
{
m = moves[i].move;
Move m = moves[i].move;
if (m == ttMove)
hs = 2*HistoryMax;
moves[i].score = 2*HistoryMax;
else if (!pos.square_is_empty(move_to(m)))
hs = int(pos.midgame_value_of_piece_on(move_to(m)))
-int(pos.type_of_piece_on(move_from(m))) + HistoryMax;
else
hs = H.move_ordering_score(pos.piece_on(move_from(m)), m);
moves[i].score = hs;
{
int seeScore = pos.see(m);
moves[i].score = (seeScore >= 0)? seeScore + HistoryMax : seeScore;
} else
moves[i].score = H.move_ordering_score(pos.piece_on(move_from(m)), m);
}
// FIXME try psqt also here
}
void MovePicker::score_qcaptures() {
@ -325,21 +325,26 @@ Move MovePicker::pick_move_from_list() {
while (movesPicked < numOfMoves)
{
bestIndex = find_best_index();
if (bestIndex != -1) // Found a possibly good capture
int bestScore = -10000000;
bestIndex = -1;
for (int i = movesPicked; i < numOfMoves; i++)
{
move = moves[bestIndex].move;
int seeValue = pos.see(move);
if (seeValue < 0)
if (moves[i].score < 0)
{
// Losing capture, move it to the badCaptures[] array
assert(numOfBadCaptures < 63);
moves[bestIndex].score = seeValue;
badCaptures[numOfBadCaptures++] = moves[bestIndex];
moves[bestIndex] = moves[--numOfMoves];
continue;
badCaptures[numOfBadCaptures++] = moves[i];
moves[i--] = moves[--numOfMoves];
}
else if (moves[i].score > bestScore)
{
bestIndex = i;
bestScore = moves[i].score;
}
}
if (bestIndex != -1) // Found a good capture
{
move = moves[bestIndex].move;
moves[bestIndex] = moves[movesPicked++];
if ( move != ttMove
&& move != mateKiller