mirror of
https://github.com/sockspls/badfish
synced 2025-07-11 19:49:14 +00:00
Update SEE to return a Value
It seems more natural because the actual returned value is from PieceValue[] array. No functional change.
This commit is contained in:
parent
17ffc22279
commit
7b0a2f2a90
5 changed files with 17 additions and 15 deletions
|
@ -193,12 +193,12 @@ void MovePicker::score<EVASIONS>() {
|
||||||
// is not under attack, ordered by history value, then bad-captures and quiet
|
// is not under attack, ordered by history value, then bad-captures and quiet
|
||||||
// moves with a negative SEE. This last group is ordered by the SEE score.
|
// moves with a negative SEE. This last group is ordered by the SEE score.
|
||||||
Move m;
|
Move m;
|
||||||
int seeScore;
|
Value seeScore;
|
||||||
|
|
||||||
for (ExtMove* it = moves; it != end; ++it)
|
for (ExtMove* it = moves; it != end; ++it)
|
||||||
{
|
{
|
||||||
m = it->move;
|
m = it->move;
|
||||||
if ((seeScore = pos.see_sign(m)) < 0)
|
if ((seeScore = pos.see_sign(m)) < VALUE_ZERO)
|
||||||
it->score = seeScore - HistoryStats::Max; // At the bottom
|
it->score = seeScore - HistoryStats::Max; // At the bottom
|
||||||
|
|
||||||
else if (pos.capture(m))
|
else if (pos.capture(m))
|
||||||
|
@ -317,7 +317,7 @@ Move MovePicker::next_move<false>() {
|
||||||
move = pick_best(cur++, end)->move;
|
move = pick_best(cur++, end)->move;
|
||||||
if (move != ttMove)
|
if (move != ttMove)
|
||||||
{
|
{
|
||||||
if (pos.see_sign(move) >= 0)
|
if (pos.see_sign(move) >= VALUE_ZERO)
|
||||||
return move;
|
return move;
|
||||||
|
|
||||||
// Losing capture, move it to the tail of the array
|
// Losing capture, move it to the tail of the array
|
||||||
|
|
|
@ -103,7 +103,8 @@ private:
|
||||||
Move ttMove;
|
Move ttMove;
|
||||||
ExtMove killers[6];
|
ExtMove killers[6];
|
||||||
Square recaptureSquare;
|
Square recaptureSquare;
|
||||||
int captureThreshold, stage;
|
Value captureThreshold;
|
||||||
|
int stage;
|
||||||
ExtMove *cur, *end, *endQuiets, *endBadCaptures;
|
ExtMove *cur, *end, *endQuiets, *endBadCaptures;
|
||||||
ExtMove moves[MAX_MOVES];
|
ExtMove moves[MAX_MOVES];
|
||||||
};
|
};
|
||||||
|
|
|
@ -1013,7 +1013,7 @@ void Position::undo_null_move() {
|
||||||
/// Position::see() is a static exchange evaluator: It tries to estimate the
|
/// Position::see() is a static exchange evaluator: It tries to estimate the
|
||||||
/// material gain or loss resulting from a move.
|
/// material gain or loss resulting from a move.
|
||||||
|
|
||||||
int Position::see_sign(Move m) const {
|
Value Position::see_sign(Move m) const {
|
||||||
|
|
||||||
assert(is_ok(m));
|
assert(is_ok(m));
|
||||||
|
|
||||||
|
@ -1021,16 +1021,17 @@ int Position::see_sign(Move m) const {
|
||||||
// is not less then capturing one. Note that king moves always return
|
// is not less then capturing one. Note that king moves always return
|
||||||
// here because king midgame value is set to 0.
|
// here because king midgame value is set to 0.
|
||||||
if (PieceValue[MG][moved_piece(m)] <= PieceValue[MG][piece_on(to_sq(m))])
|
if (PieceValue[MG][moved_piece(m)] <= PieceValue[MG][piece_on(to_sq(m))])
|
||||||
return 1;
|
return VALUE_KNOWN_WIN;
|
||||||
|
|
||||||
return see(m);
|
return see(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Position::see(Move m) const {
|
Value Position::see(Move m) const {
|
||||||
|
|
||||||
Square from, to;
|
Square from, to;
|
||||||
Bitboard occupied, attackers, stmAttackers;
|
Bitboard occupied, attackers, stmAttackers;
|
||||||
int swapList[32], slIndex = 1;
|
Value swapList[32];
|
||||||
|
int slIndex = 1;
|
||||||
PieceType captured;
|
PieceType captured;
|
||||||
Color stm;
|
Color stm;
|
||||||
|
|
||||||
|
@ -1046,7 +1047,7 @@ int Position::see(Move m) const {
|
||||||
// handled correctly. Simply return 0 that is always the correct value
|
// handled correctly. Simply return 0 that is always the correct value
|
||||||
// unless in the rare case the rook ends up under attack.
|
// unless in the rare case the rook ends up under attack.
|
||||||
if (type_of(m) == CASTLING)
|
if (type_of(m) == CASTLING)
|
||||||
return 0;
|
return VALUE_ZERO;
|
||||||
|
|
||||||
if (type_of(m) == ENPASSANT)
|
if (type_of(m) == ENPASSANT)
|
||||||
{
|
{
|
||||||
|
|
|
@ -141,8 +141,8 @@ public:
|
||||||
void undo_null_move();
|
void undo_null_move();
|
||||||
|
|
||||||
// Static exchange evaluation
|
// Static exchange evaluation
|
||||||
int see(Move m) const;
|
Value see(Move m) const;
|
||||||
int see_sign(Move m) const;
|
Value see_sign(Move m) const;
|
||||||
|
|
||||||
// Accessing hash keys
|
// Accessing hash keys
|
||||||
Key key() const;
|
Key key() const;
|
||||||
|
|
|
@ -779,7 +779,7 @@ moves_loop: // When in check and at SpNode search starts from here
|
||||||
|| pos.advanced_pawn_push(move);
|
|| pos.advanced_pawn_push(move);
|
||||||
|
|
||||||
// Step 12. Extend checks
|
// Step 12. Extend checks
|
||||||
if (givesCheck && pos.see_sign(move) >= 0)
|
if (givesCheck && pos.see_sign(move) >= VALUE_ZERO)
|
||||||
ext = ONE_PLY;
|
ext = ONE_PLY;
|
||||||
|
|
||||||
// Singular extension search. If all moves but one fail low on a search of
|
// Singular extension search. If all moves but one fail low on a search of
|
||||||
|
@ -850,7 +850,7 @@ moves_loop: // When in check and at SpNode search starts from here
|
||||||
}
|
}
|
||||||
|
|
||||||
// Prune moves with negative SEE at low depths
|
// Prune moves with negative SEE at low depths
|
||||||
if (predictedDepth < 4 * ONE_PLY && pos.see_sign(move) < 0)
|
if (predictedDepth < 4 * ONE_PLY && pos.see_sign(move) < VALUE_ZERO)
|
||||||
{
|
{
|
||||||
if (SpNode)
|
if (SpNode)
|
||||||
splitPoint->mutex.lock();
|
splitPoint->mutex.lock();
|
||||||
|
@ -1175,7 +1175,7 @@ moves_loop: // When in check and at SpNode search starts from here
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (futilityBase < beta && pos.see(move) <= 0)
|
if (futilityBase < beta && pos.see(move) <= VALUE_ZERO)
|
||||||
{
|
{
|
||||||
bestValue = std::max(bestValue, futilityBase);
|
bestValue = std::max(bestValue, futilityBase);
|
||||||
continue;
|
continue;
|
||||||
|
@ -1193,7 +1193,7 @@ moves_loop: // When in check and at SpNode search starts from here
|
||||||
&& (!InCheck || evasionPrunable)
|
&& (!InCheck || evasionPrunable)
|
||||||
&& move != ttMove
|
&& move != ttMove
|
||||||
&& type_of(move) != PROMOTION
|
&& type_of(move) != PROMOTION
|
||||||
&& pos.see_sign(move) < 0)
|
&& pos.see_sign(move) < VALUE_ZERO)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// Check for legality just before making the move
|
// Check for legality just before making the move
|
||||||
|
|
Loading…
Add table
Reference in a new issue