mirror of
https://github.com/sockspls/badfish
synced 2025-07-11 03:29:14 +00:00
Remove margin[] from EvalInfo
Directly pass arguments to king evaluation. No functional change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
d4250c52f0
commit
3107e68c03
1 changed files with 10 additions and 16 deletions
|
@ -45,11 +45,6 @@ namespace {
|
|||
// Middle and end game position's static evaluations
|
||||
Score value;
|
||||
|
||||
// margin[color] stores the evaluation margins we should consider for
|
||||
// the given position. This is a kind of uncertainty estimation and
|
||||
// typically is used by the search for pruning decisions.
|
||||
Value margin[2];
|
||||
|
||||
// Pointer to pawn hash table entry
|
||||
PawnInfo* pi;
|
||||
|
||||
|
@ -243,7 +238,7 @@ namespace {
|
|||
Score evaluate_pieces_of_color(const Position& pos, EvalInfo& ei);
|
||||
|
||||
template<Color Us, bool HasPopCnt>
|
||||
void evaluate_king(const Position& pos, EvalInfo& ei);
|
||||
void evaluate_king(const Position& pos, EvalInfo& ei, Value margins[]);
|
||||
|
||||
template<Color Us>
|
||||
void evaluate_threats(const Position& pos, EvalInfo& ei);
|
||||
|
@ -299,6 +294,10 @@ Value do_evaluate(const Position& pos, Value margins[]) {
|
|||
// position object (material + piece square tables).
|
||||
ei.value = pos.value();
|
||||
|
||||
// margins[color] stores the uncertainty estimation of position's evaluation
|
||||
// and typically is used by the search for pruning decisions.
|
||||
margins[WHITE] = margins[BLACK] = VALUE_ZERO;
|
||||
|
||||
// Probe the material hash table
|
||||
MaterialInfo* mi = MaterialTable[pos.thread()]->get_material_info(pos);
|
||||
ei.value += mi->material_value();
|
||||
|
@ -328,8 +327,8 @@ Value do_evaluate(const Position& pos, Value margins[]) {
|
|||
// Kings. Kings are evaluated after all other pieces for both sides,
|
||||
// because we need complete attack information for all pieces when computing
|
||||
// the king safety evaluation.
|
||||
evaluate_king<WHITE, HasPopCnt>(pos, ei);
|
||||
evaluate_king<BLACK, HasPopCnt>(pos, ei);
|
||||
evaluate_king<WHITE, HasPopCnt>(pos, ei, margins);
|
||||
evaluate_king<BLACK, HasPopCnt>(pos, ei, margins);
|
||||
|
||||
// Evaluate tactical threats, we need full attack info including king
|
||||
evaluate_threats<WHITE>(pos, ei);
|
||||
|
@ -392,10 +391,6 @@ Value do_evaluate(const Position& pos, Value margins[]) {
|
|||
factor[BLACK] = sf;
|
||||
}
|
||||
|
||||
// Populate margins[]
|
||||
margins[WHITE] = ei.margin[WHITE];
|
||||
margins[BLACK] = ei.margin[BLACK];
|
||||
|
||||
// Interpolate between the middle game and the endgame score
|
||||
return Sign[pos.side_to_move()] * scale_by_game_phase(ei.value, phase, factor);
|
||||
}
|
||||
|
@ -680,7 +675,7 @@ namespace {
|
|||
// evaluate_king<>() assigns bonuses and penalties to a king of a given color
|
||||
|
||||
template<Color Us, bool HasPopCnt>
|
||||
void evaluate_king(const Position& pos, EvalInfo& ei) {
|
||||
void evaluate_king(const Position& pos, EvalInfo& ei, Value margins[]) {
|
||||
|
||||
const Color Them = (Us == WHITE ? BLACK : WHITE);
|
||||
|
||||
|
@ -766,9 +761,8 @@ namespace {
|
|||
// be very big, and so capturing a single attacking piece can therefore
|
||||
// result in a score change far bigger than the value of the captured piece.
|
||||
ei.value -= Sign[Us] * KingDangerTable[Us][attackUnits];
|
||||
ei.margin[Us] = mg_value(KingDangerTable[Us][attackUnits]);
|
||||
} else
|
||||
ei.margin[Us] = VALUE_ZERO;
|
||||
margins[Us] += mg_value(KingDangerTable[Us][attackUnits]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue