mirror of
https://github.com/sockspls/badfish
synced 2025-04-29 08:13:08 +00:00
Don't update bestValue when pruning
Simply return a fail-low score Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
14df99130f
commit
3f14ed6602
2 changed files with 13 additions and 8 deletions
|
@ -948,6 +948,9 @@ split_point_start: // At split points actual search starts from here
|
|||
{
|
||||
lock_grab(&(sp->lock));
|
||||
bestValue = sp->bestValue;
|
||||
moveCount = sp->moveCount;
|
||||
|
||||
assert(bestValue > -VALUE_INFINITE && moveCount > 0);
|
||||
}
|
||||
|
||||
// Step 11. Loop through moves
|
||||
|
@ -1065,13 +1068,7 @@ split_point_start: // At split points actual search starts from here
|
|||
if (futilityValue < beta)
|
||||
{
|
||||
if (SpNode)
|
||||
{
|
||||
lock_grab(&(sp->lock));
|
||||
if (futilityValue > sp->bestValue)
|
||||
sp->bestValue = bestValue = futilityValue;
|
||||
}
|
||||
else if (futilityValue > bestValue)
|
||||
bestValue = futilityValue;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
@ -1220,9 +1217,17 @@ split_point_start: // At split points actual search starts from here
|
|||
// case of StopRequest or thread.cutoff_occurred() are set, but this is
|
||||
// harmless because return value is discarded anyhow in the parent nodes.
|
||||
// If we are in a singular extension search then return a fail low score.
|
||||
if (!SpNode && !moveCount)
|
||||
if (!moveCount)
|
||||
return excludedMove ? oldAlpha : inCheck ? value_mated_in(ss->ply) : VALUE_DRAW;
|
||||
|
||||
// We have pruned all the moves, so return a fail-low score
|
||||
if (bestValue == -VALUE_INFINITE)
|
||||
{
|
||||
assert(!playedMoveCount);
|
||||
|
||||
bestValue = alpha;
|
||||
}
|
||||
|
||||
// Step 21. Update tables
|
||||
// If the search is not aborted, update the transposition table,
|
||||
// history counters, and killer moves.
|
||||
|
|
|
@ -263,7 +263,7 @@ Value ThreadsManager::split(Position& pos, Stack* ss, Value alpha, Value beta,
|
|||
Value bestValue, Depth depth, Move threatMove,
|
||||
int moveCount, MovePicker* mp, int nodeType) {
|
||||
assert(pos.pos_is_ok());
|
||||
assert(bestValue >= -VALUE_INFINITE);
|
||||
assert(bestValue > -VALUE_INFINITE);
|
||||
assert(bestValue <= alpha);
|
||||
assert(alpha < beta);
|
||||
assert(beta <= VALUE_INFINITE);
|
||||
|
|
Loading…
Add table
Reference in a new issue