1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-07-11 19:49:14 +00:00

Revert so called "fromNull patch"

Revert patch c581b7ea36

Seems a regression after testing from Gary:
ELO: 7.24 +- 99%: 17.03 95%: 12.93
LOS: 97.86%
Wins: 439 Losses: 381 Draws: 1962

And mine:
After 5410 games at 15"+0.05
Wins: 936 Losses: 1141 Draws: 3333  ELO -13

Moreover we know that there is a regression in the range
of patches which include the fromNull patch.

Probably this is not the only regression since 2.3.1 and
perhaps the idea under fromNull is good, but at the moment,
while in deep regression hunting, better to be on the safe
side and revert it entirely.

My guess on why this is a regression is that using the
negated evaluation of previous ply in case of null search
fails to take in account the king safety asymmetry between
the two colors. This is of course just a guess.

bench 5503830
This commit is contained in:
Marco Costalba 2013-01-06 22:55:35 +01:00
parent 9b1cf3cf43
commit edce2a8448

View file

@ -1109,7 +1109,7 @@ split_point_start: // At split points actual search starts from here
Key posKey;
Move ttMove, move, bestMove;
Value bestValue, value, ttValue, futilityValue, futilityBase, oldAlpha;
bool givesCheck, enoughMaterial, evasionPrunable, fromNull;
bool givesCheck, enoughMaterial, evasionPrunable;
Depth ttDepth;
// To flag BOUND_EXACT a node with eval above alpha and no available moves
@ -1118,7 +1118,6 @@ split_point_start: // At split points actual search starts from here
ss->currentMove = bestMove = MOVE_NONE;
ss->ply = (ss-1)->ply + 1;
fromNull = (ss-1)->currentMove == MOVE_NULL;
// Check for an instant draw or maximum ply reached
if (pos.is_draw<false, false>() || ss->ply > MAX_PLY)
@ -1156,13 +1155,7 @@ split_point_start: // At split points actual search starts from here
}
else
{
if (fromNull)
{
// Approximated score. Real one is slightly higher due to tempo
ss->staticEval = bestValue = -(ss-1)->staticEval;
ss->evalMargin = VALUE_ZERO;
}
else if (tte)
if (tte)
{
// Never assume anything on values stored in TT
if ( (ss->staticEval = bestValue = tte->static_value()) == VALUE_NONE
@ -1206,7 +1199,6 @@ split_point_start: // At split points actual search starts from here
// Futility pruning
if ( !PvNode
&& !InCheck
&& !fromNull
&& !givesCheck
&& move != ttMove
&& enoughMaterial