mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-21 01:27:16 +08:00
Pass endgame value to evaluate_scale_factor()
No functional change Resolves #592
This commit is contained in:
@@ -695,9 +695,9 @@ namespace {
|
|||||||
|
|
||||||
|
|
||||||
// evaluate_scale_factor() computes the scale factor for the winning side
|
// evaluate_scale_factor() computes the scale factor for the winning side
|
||||||
ScaleFactor evaluate_scale_factor(const Position& pos, const EvalInfo& ei, Score score) {
|
ScaleFactor evaluate_scale_factor(const Position& pos, const EvalInfo& ei, Value eg) {
|
||||||
|
|
||||||
Color strongSide = eg_value(score) > VALUE_DRAW ? WHITE : BLACK;
|
Color strongSide = eg > VALUE_DRAW ? WHITE : BLACK;
|
||||||
ScaleFactor sf = ei.me->scale_factor(pos, strongSide);
|
ScaleFactor sf = ei.me->scale_factor(pos, strongSide);
|
||||||
|
|
||||||
// If we don't already have an unusual scale factor, check for certain
|
// If we don't already have an unusual scale factor, check for certain
|
||||||
@@ -720,7 +720,7 @@ namespace {
|
|||||||
}
|
}
|
||||||
// Endings where weaker side can place his king in front of the opponent's
|
// Endings where weaker side can place his king in front of the opponent's
|
||||||
// pawns are drawish.
|
// pawns are drawish.
|
||||||
else if ( abs(eg_value(score)) <= BishopValueEg
|
else if ( abs(eg) <= BishopValueEg
|
||||||
&& ei.pi->pawn_span(strongSide) <= 1
|
&& ei.pi->pawn_span(strongSide) <= 1
|
||||||
&& !pos.pawn_passed(~strongSide, pos.square<KING>(~strongSide)))
|
&& !pos.pawn_passed(~strongSide, pos.square<KING>(~strongSide)))
|
||||||
sf = ei.pi->pawn_span(strongSide) ? ScaleFactor(51) : ScaleFactor(37);
|
sf = ei.pi->pawn_span(strongSide) ? ScaleFactor(51) : ScaleFactor(37);
|
||||||
@@ -816,7 +816,7 @@ Value Eval::evaluate(const Position& pos) {
|
|||||||
score += evaluate_initiative(pos, ei.pi->pawn_asymmetry(), eg_value(score));
|
score += evaluate_initiative(pos, ei.pi->pawn_asymmetry(), eg_value(score));
|
||||||
|
|
||||||
// Evaluate scale factor for the winning side
|
// Evaluate scale factor for the winning side
|
||||||
ScaleFactor sf = evaluate_scale_factor(pos, ei, score);
|
ScaleFactor sf = evaluate_scale_factor(pos, ei, eg_value(score));
|
||||||
|
|
||||||
// Interpolate between a middlegame and a (scaled by 'sf') endgame score
|
// Interpolate between a middlegame and a (scaled by 'sf') endgame score
|
||||||
Value v = mg_value(score) * int(ei.me->game_phase())
|
Value v = mg_value(score) * int(ei.me->game_phase())
|
||||||
|
|||||||
Reference in New Issue
Block a user