mirror of
https://github.com/sockspls/badfish
synced 2025-04-29 08:13:08 +00:00
Rename ei.kingDanger in ei.margin
It will be more clear when we will go to add stuff apart from king danger itself. No functional change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
00469d1798
commit
c7a932bc74
4 changed files with 19 additions and 19 deletions
|
@ -709,14 +709,14 @@ namespace {
|
||||||
attackUnits = Min(99, Max(0, attackUnits));
|
attackUnits = Min(99, Max(0, attackUnits));
|
||||||
|
|
||||||
// Finally, extract the king danger score from the KingDangerTable[]
|
// Finally, extract the king danger score from the KingDangerTable[]
|
||||||
// array and subtract the score from evaluation. Set also ei.kingDanger[]
|
// array and subtract the score from evaluation. Set also ei.margin[]
|
||||||
// value that will be used for pruning because this value can sometimes
|
// value that will be used for pruning because this value can sometimes
|
||||||
// be very big, and so capturing a single attacking piece can therefore
|
// 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.
|
// result in a score change far bigger than the value of the captured piece.
|
||||||
ei.value -= Sign[Us] * KingDangerTable[Us][attackUnits];
|
ei.value -= Sign[Us] * KingDangerTable[Us][attackUnits];
|
||||||
ei.kingDanger[Us] = mg_value(KingDangerTable[Us][attackUnits]);
|
ei.margin[Us] = mg_value(KingDangerTable[Us][attackUnits]);
|
||||||
} else
|
} else
|
||||||
ei.kingDanger[Us] = VALUE_ZERO;
|
ei.margin[Us] = VALUE_ZERO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@ class Position;
|
||||||
|
|
||||||
struct EvalInfo {
|
struct EvalInfo {
|
||||||
|
|
||||||
EvalInfo() { kingDanger[0] = kingDanger[1] = VALUE_ZERO; }
|
EvalInfo() { margin[WHITE] = margin[BLACK] = VALUE_ZERO; }
|
||||||
|
|
||||||
// Middle game and endgame evaluations
|
// Middle game and endgame evaluations
|
||||||
Score value;
|
Score value;
|
||||||
|
@ -89,8 +89,8 @@ struct EvalInfo {
|
||||||
// 2 to kingAdjacentZoneAttacksCount[BLACK].
|
// 2 to kingAdjacentZoneAttacksCount[BLACK].
|
||||||
int kingAdjacentZoneAttacksCount[2];
|
int kingAdjacentZoneAttacksCount[2];
|
||||||
|
|
||||||
// Value of the danger for the king of the given color
|
// Value of the score margin we should consider for the given color
|
||||||
Value kingDanger[2];
|
Value margin[2];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1035,7 +1035,7 @@ namespace {
|
||||||
if (!PvNode && tte && ok_to_use_TT(tte, depth, beta, ply))
|
if (!PvNode && tte && ok_to_use_TT(tte, depth, beta, ply))
|
||||||
{
|
{
|
||||||
// Refresh tte entry to avoid aging
|
// Refresh tte entry to avoid aging
|
||||||
TT.store(posKey, tte->value(), tte->type(), tte->depth(), ttMove, tte->static_value(), tte->king_danger());
|
TT.store(posKey, tte->value(), tte->type(), tte->depth(), ttMove, tte->static_value(), tte->static_value_margin());
|
||||||
|
|
||||||
ss->bestMove = ttMove; // Can be MOVE_NONE
|
ss->bestMove = ttMove; // Can be MOVE_NONE
|
||||||
return value_from_tt(tte->value(), ply);
|
return value_from_tt(tte->value(), ply);
|
||||||
|
@ -1051,13 +1051,13 @@ namespace {
|
||||||
assert(tte->static_value() != VALUE_NONE);
|
assert(tte->static_value() != VALUE_NONE);
|
||||||
|
|
||||||
ss->eval = tte->static_value();
|
ss->eval = tte->static_value();
|
||||||
ei.kingDanger[pos.side_to_move()] = tte->king_danger();
|
ei.margin[pos.side_to_move()] = tte->static_value_margin();
|
||||||
refinedValue = refine_eval(tte, ss->eval, ply);
|
refinedValue = refine_eval(tte, ss->eval, ply);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
refinedValue = ss->eval = evaluate(pos, ei);
|
refinedValue = ss->eval = evaluate(pos, ei);
|
||||||
TT.store(posKey, VALUE_NONE, VALUE_TYPE_NONE, DEPTH_NONE, MOVE_NONE, ss->eval, ei.kingDanger[pos.side_to_move()]);
|
TT.store(posKey, VALUE_NONE, VALUE_TYPE_NONE, DEPTH_NONE, MOVE_NONE, ss->eval, ei.margin[pos.side_to_move()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save gain for the parent non-capture move
|
// Save gain for the parent non-capture move
|
||||||
|
@ -1371,7 +1371,7 @@ namespace {
|
||||||
|
|
||||||
ValueType vt = (bestValue <= oldAlpha ? VALUE_TYPE_UPPER : bestValue >= beta ? VALUE_TYPE_LOWER : VALUE_TYPE_EXACT);
|
ValueType vt = (bestValue <= oldAlpha ? VALUE_TYPE_UPPER : bestValue >= beta ? VALUE_TYPE_LOWER : VALUE_TYPE_EXACT);
|
||||||
move = (bestValue <= oldAlpha ? MOVE_NONE : ss->bestMove);
|
move = (bestValue <= oldAlpha ? MOVE_NONE : ss->bestMove);
|
||||||
TT.store(posKey, value_to_tt(bestValue, ply), vt, depth, move, ss->eval, ei.kingDanger[pos.side_to_move()]);
|
TT.store(posKey, value_to_tt(bestValue, ply), vt, depth, move, ss->eval, ei.margin[pos.side_to_move()]);
|
||||||
|
|
||||||
// Update killers and history only for non capture moves that fails high
|
// Update killers and history only for non capture moves that fails high
|
||||||
if ( bestValue >= beta
|
if ( bestValue >= beta
|
||||||
|
@ -1442,7 +1442,7 @@ namespace {
|
||||||
{
|
{
|
||||||
assert(tte->static_value() != VALUE_NONE);
|
assert(tte->static_value() != VALUE_NONE);
|
||||||
|
|
||||||
ei.kingDanger[pos.side_to_move()] = tte->king_danger();
|
ei.margin[pos.side_to_move()] = tte->static_value_margin();
|
||||||
bestValue = tte->static_value();
|
bestValue = tte->static_value();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1455,7 +1455,7 @@ namespace {
|
||||||
if (bestValue >= beta)
|
if (bestValue >= beta)
|
||||||
{
|
{
|
||||||
if (!tte)
|
if (!tte)
|
||||||
TT.store(pos.get_key(), value_to_tt(bestValue, ply), VALUE_TYPE_LOWER, DEPTH_NONE, MOVE_NONE, ss->eval, ei.kingDanger[pos.side_to_move()]);
|
TT.store(pos.get_key(), value_to_tt(bestValue, ply), VALUE_TYPE_LOWER, DEPTH_NONE, MOVE_NONE, ss->eval, ei.margin[pos.side_to_move()]);
|
||||||
|
|
||||||
return bestValue;
|
return bestValue;
|
||||||
}
|
}
|
||||||
|
@ -1467,7 +1467,7 @@ namespace {
|
||||||
deepChecks = (depth == -ONE_PLY && bestValue >= beta - PawnValueMidgame / 8);
|
deepChecks = (depth == -ONE_PLY && bestValue >= beta - PawnValueMidgame / 8);
|
||||||
|
|
||||||
// Futility pruning parameters, not needed when in check
|
// Futility pruning parameters, not needed when in check
|
||||||
futilityBase = bestValue + FutilityMarginQS + ei.kingDanger[pos.side_to_move()];
|
futilityBase = bestValue + FutilityMarginQS + ei.margin[pos.side_to_move()];
|
||||||
enoughMaterial = pos.non_pawn_material(pos.side_to_move()) > RookValueMidgame;
|
enoughMaterial = pos.non_pawn_material(pos.side_to_move()) > RookValueMidgame;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1552,7 +1552,7 @@ namespace {
|
||||||
// Update transposition table
|
// Update transposition table
|
||||||
Depth d = (depth == DEPTH_ZERO ? DEPTH_ZERO : DEPTH_ZERO - ONE_PLY);
|
Depth d = (depth == DEPTH_ZERO ? DEPTH_ZERO : DEPTH_ZERO - ONE_PLY);
|
||||||
ValueType vt = (bestValue <= oldAlpha ? VALUE_TYPE_UPPER : bestValue >= beta ? VALUE_TYPE_LOWER : VALUE_TYPE_EXACT);
|
ValueType vt = (bestValue <= oldAlpha ? VALUE_TYPE_UPPER : bestValue >= beta ? VALUE_TYPE_LOWER : VALUE_TYPE_EXACT);
|
||||||
TT.store(pos.get_key(), value_to_tt(bestValue, ply), vt, d, ss->bestMove, ss->eval, ei.kingDanger[pos.side_to_move()]);
|
TT.store(pos.get_key(), value_to_tt(bestValue, ply), vt, d, ss->bestMove, ss->eval, ei.margin[pos.side_to_move()]);
|
||||||
|
|
||||||
// Update killers only for checking moves that fails high
|
// Update killers only for checking moves that fails high
|
||||||
if ( bestValue >= beta
|
if ( bestValue >= beta
|
||||||
|
@ -2251,7 +2251,7 @@ namespace {
|
||||||
if (!tte || tte->move() != pv[i])
|
if (!tte || tte->move() != pv[i])
|
||||||
{
|
{
|
||||||
v = (p.is_check() ? VALUE_NONE : evaluate(p, ei));
|
v = (p.is_check() ? VALUE_NONE : evaluate(p, ei));
|
||||||
TT.store(p.get_key(), VALUE_NONE, VALUE_TYPE_NONE, DEPTH_NONE, pv[i], v, ei.kingDanger[pos.side_to_move()]);
|
TT.store(p.get_key(), VALUE_NONE, VALUE_TYPE_NONE, DEPTH_NONE, pv[i], v, ei.margin[pos.side_to_move()]);
|
||||||
}
|
}
|
||||||
p.do_move(pv[i], st);
|
p.do_move(pv[i], st);
|
||||||
}
|
}
|
||||||
|
|
8
src/tt.h
8
src/tt.h
|
@ -43,7 +43,7 @@
|
||||||
/// bit 64-79: value
|
/// bit 64-79: value
|
||||||
/// bit 80-95: depth
|
/// bit 80-95: depth
|
||||||
/// bit 96-111: static value
|
/// bit 96-111: static value
|
||||||
/// bit 112-127: king danger value
|
/// bit 112-127: margin of static value
|
||||||
///
|
///
|
||||||
/// the 32 bits of the data field are so defined
|
/// the 32 bits of the data field are so defined
|
||||||
///
|
///
|
||||||
|
@ -62,7 +62,7 @@ public:
|
||||||
value16 = int16_t(v);
|
value16 = int16_t(v);
|
||||||
depth16 = int16_t(d);
|
depth16 = int16_t(d);
|
||||||
staticValue = int16_t(statV);
|
staticValue = int16_t(statV);
|
||||||
kingDanger = int16_t(kd);
|
staticValueMargin = int16_t(kd);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t key() const { return key32; }
|
uint32_t key() const { return key32; }
|
||||||
|
@ -72,7 +72,7 @@ public:
|
||||||
ValueType type() const { return ValueType((data >> 21) & 3); }
|
ValueType type() const { return ValueType((data >> 21) & 3); }
|
||||||
int generation() const { return data >> 23; }
|
int generation() const { return data >> 23; }
|
||||||
Value static_value() const { return Value(staticValue); }
|
Value static_value() const { return Value(staticValue); }
|
||||||
Value king_danger() const { return Value(kingDanger); }
|
Value static_value_margin() const { return Value(staticValueMargin); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
uint32_t key32;
|
uint32_t key32;
|
||||||
|
@ -80,7 +80,7 @@ private:
|
||||||
int16_t value16;
|
int16_t value16;
|
||||||
int16_t depth16;
|
int16_t depth16;
|
||||||
int16_t staticValue;
|
int16_t staticValue;
|
||||||
int16_t kingDanger;
|
int16_t staticValueMargin;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue