mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 08:43:09 +00:00
Remove SEE optimizations
Don't seem to help, perhaps because we return an approximate SEE score instead of the real negative score so that we have some bad capture or evasion sub-optimal ordering that compensates the speed up. Anyhow after 999 games at 1+0 Mod vs Orig +240 =514 -245 -2 ELO So almost no harm to remove and make the code simpler. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
70b7404a63
commit
12461996a5
3 changed files with 7 additions and 33 deletions
|
@ -1171,8 +1171,8 @@ namespace {
|
|||
Square b8 = relative_square(us, (square_file(s) == FILE_A) ? SQ_B8 : SQ_G8);
|
||||
|
||||
if ( pos.piece_on(b6) == piece_of_color_and_type(opposite_color(us), PAWN)
|
||||
&& pos.see(s, b6, false) < 0
|
||||
&& pos.see(s, b8, false) < 0)
|
||||
&& pos.see(s, b6) < 0
|
||||
&& pos.see(s, b8) < 0)
|
||||
{
|
||||
ei.mgValue -= Sign[us] * TrappedBishopA7H7Penalty;
|
||||
ei.egValue -= Sign[us] * TrappedBishopA7H7Penalty;
|
||||
|
|
|
@ -1300,13 +1300,13 @@ void Position::undo_null_move() {
|
|||
int Position::see(Square to) const {
|
||||
|
||||
assert(square_is_ok(to));
|
||||
return see(SQ_NONE, to, false);
|
||||
return see(SQ_NONE, to);
|
||||
}
|
||||
|
||||
int Position::see(Move m) const {
|
||||
|
||||
assert(move_is_ok(m));
|
||||
return see(move_from(m), move_to(m), false);
|
||||
return see(move_from(m), move_to(m));
|
||||
}
|
||||
|
||||
int Position::see_sign(Move m) const {
|
||||
|
@ -1322,10 +1322,10 @@ int Position::see_sign(Move m) const {
|
|||
&& type_of_piece_on(from) != KING)
|
||||
return 1;
|
||||
|
||||
return see(from, to, true);
|
||||
return see(from, to);
|
||||
}
|
||||
|
||||
int Position::see(Square from, Square to, bool shortcut) const {
|
||||
int Position::see(Square from, Square to) const {
|
||||
|
||||
// Material values
|
||||
static const int seeValues[18] = {
|
||||
|
@ -1337,7 +1337,6 @@ int Position::see(Square from, Square to, bool shortcut) const {
|
|||
};
|
||||
|
||||
Bitboard attackers, stmAttackers, b;
|
||||
int pieceDiff = 0;
|
||||
|
||||
assert(!shortcut || from != SQ_NONE);
|
||||
assert(square_is_ok(from) || from == SQ_NONE);
|
||||
|
@ -1356,22 +1355,6 @@ int Position::see(Square from, Square to, bool shortcut) const {
|
|||
if (type_of_piece(piece) == KING)
|
||||
return seeValues[capture];
|
||||
|
||||
// If captured piece is defended by enemy pawns or knights then SEE is negative
|
||||
// when captured piece value does not compensate the lost of capturing one.
|
||||
if (shortcut)
|
||||
{
|
||||
pieceDiff = seeValues[piece] - seeValues[capture];
|
||||
|
||||
if ( pieceDiff > seeValues[PAWN]
|
||||
&&(attacks_from<PAWN>(to, us) & pieces(PAWN, them)))
|
||||
return -(pieceDiff - seeValues[PAWN] / 2);
|
||||
|
||||
if ( pieceDiff > seeValues[KNIGHT]
|
||||
&& pieces(KNIGHT, them)
|
||||
&&(pieces(KNIGHT, them) & attacks_from<KNIGHT>(to)))
|
||||
return -(pieceDiff - seeValues[KNIGHT] / 2);
|
||||
}
|
||||
|
||||
// Handle en passant moves
|
||||
if (st->epSquare == to && type_of_piece_on(from) == PAWN)
|
||||
{
|
||||
|
@ -1442,15 +1425,6 @@ int Position::see(Square from, Square to, bool shortcut) const {
|
|||
for (pt = PAWN; !(stmAttackers & pieces(pt)); pt++)
|
||||
assert(pt < KING);
|
||||
|
||||
// If captured piece is defended by an enemy piece then SEE is negative
|
||||
// if captured piece value does not compensate the lost of capturing one.
|
||||
if (pieceDiff > seeValues[pt])
|
||||
{
|
||||
assert(shortcut);
|
||||
return -(pieceDiff - seeValues[pt] / 2);
|
||||
} else
|
||||
pieceDiff = 0; // Only first cycle
|
||||
|
||||
// Remove the attacker we just found from the 'attackers' bitboard,
|
||||
// and scan for new X-ray attacks behind the attacker.
|
||||
b = stmAttackers & pieces(pt);
|
||||
|
|
|
@ -229,7 +229,7 @@ public:
|
|||
void undo_null_move();
|
||||
|
||||
// Static exchange evaluation
|
||||
int see(Square from, Square to, bool shortcut) const;
|
||||
int see(Square from, Square to) const;
|
||||
int see(Move m) const;
|
||||
int see(Square to) const;
|
||||
int see_sign(Move m) const;
|
||||
|
|
Loading…
Add table
Reference in a new issue