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:
parent
c9dcda6ac4
commit
153309e287
3 changed files with 19 additions and 8 deletions
|
@ -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);
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
Loading…
Add table
Reference in a new issue