mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 08:43:09 +00:00
Prune negative SEE moves also in PV nodes
This patch is actually the sum of two contributions that have been tested independently: 1) Pruning of negative SEE moves in PV After 10000 games at 20+0.05 ELO: 5.18 +-7 (95%) LOS: 99.2% Total: 10000 W: 1952 L: 1803 D: 6245 2) Remove of bestValue > VALUE_MATED_IN_MAX_PLY condition After 23000 games at 20+0.05 ELO: 1.63 +-4 (95%) LOS: 88.1% Total: 23000 W: 4232 L: 4124 D: 14644 The whole patch as been re-tested at long TC with positive results: After 10000 games at 60+0.05 ELO: 4.31 +-7 (95%) LOS: 98.3% Total: 10000 W: 1765 L: 1641 D: 6594
This commit is contained in:
parent
9a1d5f0f1d
commit
335b57b5ef
1 changed files with 5 additions and 6 deletions
|
@ -857,16 +857,15 @@ split_point_start: // At split points actual search starts from here
|
||||||
newDepth = depth - ONE_PLY + ext;
|
newDepth = depth - ONE_PLY + ext;
|
||||||
|
|
||||||
// Step 13. Futility pruning (is omitted in PV nodes)
|
// Step 13. Futility pruning (is omitted in PV nodes)
|
||||||
if ( !PvNode
|
if ( !captureOrPromotion
|
||||||
&& !captureOrPromotion
|
|
||||||
&& !inCheck
|
&& !inCheck
|
||||||
&& !dangerous
|
&& !dangerous
|
||||||
&& move != ttMove
|
&& move != ttMove
|
||||||
&& (bestValue > VALUE_MATED_IN_MAX_PLY || ( bestValue == -VALUE_INFINITE
|
&& alpha > VALUE_MATED_IN_MAX_PLY)
|
||||||
&& alpha > VALUE_MATED_IN_MAX_PLY)))
|
|
||||||
{
|
{
|
||||||
// Move count based pruning
|
// Move count based pruning
|
||||||
if ( depth < 16 * ONE_PLY
|
if ( !PvNode
|
||||||
|
&& depth < 16 * ONE_PLY
|
||||||
&& moveCount >= FutilityMoveCounts[depth]
|
&& moveCount >= FutilityMoveCounts[depth]
|
||||||
&& (!threatMove || !refutes(pos, move, threatMove)))
|
&& (!threatMove || !refutes(pos, move, threatMove)))
|
||||||
{
|
{
|
||||||
|
@ -883,7 +882,7 @@ split_point_start: // At split points actual search starts from here
|
||||||
futilityValue = ss->staticEval + ss->evalMargin + futility_margin(predictedDepth, moveCount)
|
futilityValue = ss->staticEval + ss->evalMargin + futility_margin(predictedDepth, moveCount)
|
||||||
+ Gain[pos.piece_moved(move)][to_sq(move)];
|
+ Gain[pos.piece_moved(move)][to_sq(move)];
|
||||||
|
|
||||||
if (futilityValue < beta)
|
if (!PvNode && futilityValue < beta)
|
||||||
{
|
{
|
||||||
if (SpNode)
|
if (SpNode)
|
||||||
sp->mutex.lock();
|
sp->mutex.lock();
|
||||||
|
|
Loading…
Add table
Reference in a new issue