1
0
Fork 0
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:
Marco Costalba 2009-11-01 22:09:53 +01:00
parent 70b7404a63
commit 12461996a5
3 changed files with 7 additions and 33 deletions

View file

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

View file

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

View file

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