mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 16:53:09 +00:00
Retire Null Driven IID
It does not seem to clearly improve things and in any case is disabled by default, so retire for now. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
c8773c720a
commit
bfcfaf7101
2 changed files with 1 additions and 38 deletions
|
@ -125,9 +125,6 @@ namespace {
|
||||||
const bool UseIIDAtPVNodes = true;
|
const bool UseIIDAtPVNodes = true;
|
||||||
const bool UseIIDAtNonPVNodes = false;
|
const bool UseIIDAtNonPVNodes = false;
|
||||||
|
|
||||||
// Use null move driven internal iterative deepening?
|
|
||||||
bool UseNullDrivenIID = false;
|
|
||||||
|
|
||||||
// Internal iterative deepening margin. At Non-PV moves, when
|
// Internal iterative deepening margin. At Non-PV moves, when
|
||||||
// UseIIDAtNonPVNodes is true, we do an internal iterative deepening search
|
// UseIIDAtNonPVNodes is true, we do an internal iterative deepening search
|
||||||
// when the static evaluation is at most IIDMargin below beta.
|
// when the static evaluation is at most IIDMargin below beta.
|
||||||
|
@ -437,7 +434,6 @@ void think(const Position &pos, bool infinite, bool ponder, int side_to_move,
|
||||||
if (UseLogFile)
|
if (UseLogFile)
|
||||||
LogFile.open(get_option_value_string("Search Log Filename").c_str(), std::ios::out | std::ios::app);
|
LogFile.open(get_option_value_string("Search Log Filename").c_str(), std::ios::out | std::ios::app);
|
||||||
|
|
||||||
UseNullDrivenIID = get_option_value_bool("Null driven IID");
|
|
||||||
UseQSearchFutilityPruning = get_option_value_bool("Futility Pruning (Quiescence Search)");
|
UseQSearchFutilityPruning = get_option_value_bool("Futility Pruning (Quiescence Search)");
|
||||||
UseFutilityPruning = get_option_value_bool("Futility Pruning (Main Search)");
|
UseFutilityPruning = get_option_value_bool("Futility Pruning (Main Search)");
|
||||||
|
|
||||||
|
@ -1201,7 +1197,6 @@ namespace {
|
||||||
|
|
||||||
Value approximateEval = quick_evaluate(pos);
|
Value approximateEval = quick_evaluate(pos);
|
||||||
bool mateThreat = false;
|
bool mateThreat = false;
|
||||||
bool nullDrivenIID = false;
|
|
||||||
bool isCheck = pos.is_check();
|
bool isCheck = pos.is_check();
|
||||||
|
|
||||||
// Null move search
|
// Null move search
|
||||||
|
@ -1226,19 +1221,6 @@ namespace {
|
||||||
|
|
||||||
Value nullValue = -search(pos, ss, -(beta-delta-1), depth-R*OnePly, ply+1, false, threadID);
|
Value nullValue = -search(pos, ss, -(beta-delta-1), depth-R*OnePly, ply+1, false, threadID);
|
||||||
|
|
||||||
// Check for a null capture artifact, if the value without the null capture
|
|
||||||
// is above beta then mark the node as a suspicious failed low. We will verify
|
|
||||||
// later if we are really under threat.
|
|
||||||
if ( UseNullDrivenIID
|
|
||||||
&& nullValue < beta
|
|
||||||
&& depth > 6 * OnePly
|
|
||||||
&&!value_is_mate(nullValue)
|
|
||||||
&& ttMove == MOVE_NONE
|
|
||||||
&& ss[ply + 1].currentMove != MOVE_NONE
|
|
||||||
&& pos.move_is_capture(ss[ply + 1].currentMove)
|
|
||||||
&& pos.see(ss[ply + 1].currentMove) + nullValue >= beta)
|
|
||||||
nullDrivenIID = true;
|
|
||||||
|
|
||||||
pos.undo_null_move();
|
pos.undo_null_move();
|
||||||
|
|
||||||
if (value_is_mate(nullValue))
|
if (value_is_mate(nullValue))
|
||||||
|
@ -1262,10 +1244,8 @@ namespace {
|
||||||
// low score (which will cause the reduced move to fail high in the
|
// low score (which will cause the reduced move to fail high in the
|
||||||
// parent node, which will trigger a re-search with full depth).
|
// parent node, which will trigger a re-search with full depth).
|
||||||
if (nullValue == value_mated_in(ply + 2))
|
if (nullValue == value_mated_in(ply + 2))
|
||||||
{
|
|
||||||
mateThreat = true;
|
mateThreat = true;
|
||||||
nullDrivenIID = false;
|
|
||||||
}
|
|
||||||
ss[ply].threatMove = ss[ply + 1].currentMove;
|
ss[ply].threatMove = ss[ply + 1].currentMove;
|
||||||
if ( depth < ThreatDepth
|
if ( depth < ThreatDepth
|
||||||
&& ss[ply - 1].reduction
|
&& ss[ply - 1].reduction
|
||||||
|
@ -1295,22 +1275,6 @@ namespace {
|
||||||
search(pos, ss, beta, Min(depth/2, depth-2*OnePly), ply, false, threadID);
|
search(pos, ss, beta, Min(depth/2, depth-2*OnePly), ply, false, threadID);
|
||||||
ttMove = ss[ply].pv[ply];
|
ttMove = ss[ply].pv[ply];
|
||||||
}
|
}
|
||||||
else if (nullDrivenIID)
|
|
||||||
{
|
|
||||||
// The null move failed low due to a suspicious capture. Perhaps we
|
|
||||||
// are facing a null capture artifact due to the side to move change
|
|
||||||
// and this position should fail high. So do a normal search with a
|
|
||||||
// reduced depth to get a good ttMove to use in the following full
|
|
||||||
// depth search.
|
|
||||||
Move tm = ss[ply].threatMove;
|
|
||||||
|
|
||||||
assert(tm != MOVE_NONE);
|
|
||||||
assert(ttMove == MOVE_NONE);
|
|
||||||
|
|
||||||
search(pos, ss, beta, depth/2, ply, false, threadID);
|
|
||||||
ttMove = ss[ply].pv[ply];
|
|
||||||
ss[ply].threatMove = tm;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initialize a MovePicker object for the current position, and prepare
|
// Initialize a MovePicker object for the current position, and prepare
|
||||||
// to search all moves:
|
// to search all moves:
|
||||||
|
|
|
@ -120,7 +120,6 @@ namespace {
|
||||||
o.push_back(Option("Full Depth Moves (non-PV nodes)", 3, 1, 100));
|
o.push_back(Option("Full Depth Moves (non-PV nodes)", 3, 1, 100));
|
||||||
o.push_back(Option("Threat Depth", 5, 0, 100));
|
o.push_back(Option("Threat Depth", 5, 0, 100));
|
||||||
o.push_back(Option("Selective Plies", 7, 0, 10));
|
o.push_back(Option("Selective Plies", 7, 0, 10));
|
||||||
o.push_back(Option("Null driven IID", false));
|
|
||||||
o.push_back(Option("Futility Pruning (Main Search)", true));
|
o.push_back(Option("Futility Pruning (Main Search)", true));
|
||||||
o.push_back(Option("Futility Pruning (Quiescence Search)", true));
|
o.push_back(Option("Futility Pruning (Quiescence Search)", true));
|
||||||
o.push_back(Option("Futility Margin (Quiescence Search)", 50, 0, 1000));
|
o.push_back(Option("Futility Margin (Quiescence Search)", 50, 0, 1000));
|
||||||
|
|
Loading…
Add table
Reference in a new issue