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

Scale eval when down to only one pawn

Passed both short TC
LLR: 2.97 (-2.94,2.94) [-1.50,4.50]
Total: 11921 W: 2346 L: 2208 D: 7367

And long TC
LLR: 2.97 (-2.94,2.94) [0.00,6.00]
Total: 21002 W: 3395 L: 3197 D: 14410

bench: 7602383
This commit is contained in:
shane31 2014-01-01 07:45:20 +11:00 committed by Marco Costalba
parent c9dcda6ac4
commit 153309e287
3 changed files with 19 additions and 8 deletions

View file

@ -358,9 +358,9 @@ Value do_evaluate(const Position& pos) {
// If we don't already have an unusual scale factor, check for opposite // If we don't already have an unusual scale factor, check for opposite
// colored bishop endgames, and use a lower scale for those. // colored bishop endgames, and use a lower scale for those.
if ( ei.mi->game_phase() < PHASE_MIDGAME if ( ei.mi->game_phase() < PHASE_MIDGAME
&& pos.opposite_bishops() && pos.opposite_bishops()
&& sf == SCALE_FACTOR_NORMAL) && (sf == SCALE_FACTOR_NORMAL || sf == SCALE_FACTOR_ONEPAWN))
{ {
// Ignoring any pawns, do both sides only have a single bishop and no // Ignoring any pawns, do both sides only have a single bishop and no
// other pieces? // other pieces?
@ -375,7 +375,7 @@ Value do_evaluate(const Position& pos) {
else else
// Endgame with opposite-colored bishops, but also other pieces. Still // Endgame with opposite-colored bishops, but also other pieces. Still
// a bit drawish, but not as drawish as with only the two bishops. // a bit drawish, but not as drawish as with only the two bishops.
sf = ScaleFactor(50); sf = ScaleFactor(50 * sf / SCALE_FACTOR_NORMAL);
} }
Value v = interpolate(score, ei.mi->game_phase(), sf); Value v = interpolate(score, ei.mi->game_phase(), sf);

View file

@ -246,6 +246,16 @@ Entry* probe(const Position& pos, Table& entries, Endgames& endgames) {
(npm_w == npm_b || npm_b < RookValueMg ? 0 : NoPawnsSF[std::min(pos.count<BISHOP>(BLACK), 2)]); (npm_w == npm_b || npm_b < RookValueMg ? 0 : NoPawnsSF[std::min(pos.count<BISHOP>(BLACK), 2)]);
} }
if (pos.count<PAWN>(WHITE) == 1 && npm_w - npm_b <= BishopValueMg)
{
e->factor[WHITE] = (uint8_t) SCALE_FACTOR_ONEPAWN;
}
if (pos.count<PAWN>(BLACK) == 1 && npm_b - npm_w <= BishopValueMg)
{
e->factor[BLACK] = (uint8_t) SCALE_FACTOR_ONEPAWN;
}
// Compute the space weight // Compute the space weight
if (npm_w + npm_b >= 2 * QueenValueMg + 4 * RookValueMg + 2 * KnightValueMg) if (npm_w + npm_b >= 2 * QueenValueMg + 4 * RookValueMg + 2 * KnightValueMg)
{ {

View file

@ -138,10 +138,11 @@ enum Phase {
}; };
enum ScaleFactor { enum ScaleFactor {
SCALE_FACTOR_DRAW = 0, SCALE_FACTOR_DRAW = 0,
SCALE_FACTOR_NORMAL = 64, SCALE_FACTOR_ONEPAWN = 48,
SCALE_FACTOR_MAX = 128, SCALE_FACTOR_NORMAL = 64,
SCALE_FACTOR_NONE = 255 SCALE_FACTOR_MAX = 128,
SCALE_FACTOR_NONE = 255
}; };
enum Bound { enum Bound {