Code: Select all
Score of test vs DiscoCheck 3.5.1: 152 - 149 - 199 [0.50] 500
Basically I'm doing a verification search at high depths (depth >= 7) when the null move fails high.
Moderator: Ras
Code: Select all
Score of test vs DiscoCheck 3.5.1: 152 - 149 - 199 [0.50] 500
I personally tested this several times, with 30K game matches, and I found absolutely no case where it helped, and lots of cases where it hurts (you can limit the overhead by limiting the depth where you do it of course)...lucasart wrote:Just tried it, and it's proven completely useless. Result after 500 games in 6"+0.1" (average NPS on my hardware around 1M)I wonder if it's normal, and if others have come to the same conclusion, or if I'm doing something wrong.Code: Select all
Score of test vs DiscoCheck 3.5.1: 152 - 149 - 199 [0.50] 500
Basically I'm doing a verification search at high depths (depth >= 7) when the null move fails high.
I think this whole zogzwang problem is vastly exagerated. People seem to attach far too much attentionattention to this post null move hype:After testing I discovered the following:bob wrote:I personally tested this several times, with 30K game matches, and I found absolutely no case where it helped, and lots of cases where it hurts (you can limit the overhead by limiting the depth where you do it of course)...lucasart wrote:Just tried it, and it's proven completely useless. Result after 500 games in 6"+0.1" (average NPS on my hardware around 1M)I wonder if it's normal, and if others have come to the same conclusion, or if I'm doing something wrong.Code: Select all
Score of test vs DiscoCheck 3.5.1: 152 - 149 - 199 [0.50] 500
Basically I'm doing a verification search at high depths (depth >= 7) when the null move fails high.
Verification search need big depths to be effective. I doubt that your engine reach more than 6-7 depth in the middle of the tree (13-15 depths from the root) at such fast time control.lucasart wrote:Just tried it, and it's proven completely useless. Result after 500 games in 6"+0.1" (average NPS on my hardware around 1M)I wonder if it's normal, and if others have come to the same conclusion, or if I'm doing something wrong.Code: Select all
Score of test vs DiscoCheck 3.5.1: 152 - 149 - 199 [0.50] 500
Basically I'm doing a verification search at high depths (depth >= 7) when the null move fails high.
at this time control in the middlegame, it typically reaches an average depth of 11Karlo Bala wrote:Verification search need big depths to be effective. I doubt that your engine reach more than 6-7 depth in the middle of the tree (13-15 depths from the root) at such fast time control.lucasart wrote:Just tried it, and it's proven completely useless. Result after 500 games in 6"+0.1" (average NPS on my hardware around 1M)I wonder if it's normal, and if others have come to the same conclusion, or if I'm doing something wrong.Code: Select all
Score of test vs DiscoCheck 3.5.1: 152 - 149 - 199 [0.50] 500
Basically I'm doing a verification search at high depths (depth >= 7) when the null move fails high.
Please have a little sympathy for the chessplayerslucasart wrote:I think this whole zogzwang problem is vastly exagerated. People seem to attach far too much attentionattention to this post null move hypebob wrote:I personally tested this several times, with 30K game matches, and I found absolutely no case where it helped, and lots of cases where it hurts (you can limit the overhead by limiting the depth where you do it of course)...lucasart wrote:Just tried it, and it's proven completely useless. Result after 500 games in 6"+0.1" (average NPS on my hardware around 1M)I wonder if it's normal, and if others have come to the same conclusion, or if I'm doing something wrong.Code: Select all
Score of test vs DiscoCheck 3.5.1: 152 - 149 - 199 [0.50] 500
Basically I'm doing a verification search at high depths (depth >= 7) when the null move fails high.
That you tested this instead of just simply adopting the strategy of maximizing nullmove is certainly commendable. I am far too lazy to even think about testing something like this.:After testing I discovered the following:
* verification search is completely useless. elowise of course, meaning that there are perhaps some positions in which it helps, but overall it doesn't help.
I think it has become a little less effective on big hardware where you can reach searchdepths that make the tactical benefits of this less important. On small hardware like the iPad it is more important still I think. In Rainbow Serpent I usually do not undo the reduction (return Fail Low score to the parent node which will trigger a full search) if the nullmove fails low (like Glaurung and Stockfish do this, at small remaining depth)), this is after all a re-search as Tord described in the notes, and you could achieve much the same thing by doing some sort of extension when still in the (Step 15 LMR-)reduced search, after nullmove fails. The 'connected moves' idea is really beautiful though and for Tord even a reason of doing a nullmove search when you know already that a verification search would fail low against beta (for instance if your hashhit could already tell you that). There are more threads about verification search in this subforum, but I have not done the research of looking up Tord's post about this.* the piece precondition: only do a null move when you have at least a piece on the board. Well even that is almost useless. Adding that condition was unmeasurably better (better but below error bar). I kept it anyway, but perhaps it could be further improved, like at least one piece, or not in a king opposition (ie. king dist != 2). Even in K+P endgames, the zugzwang is more an exception than a general problem. And not doing null move misses a lot of good moves that would be found deeper in search, which is to be put in front of the zugzwang improvement.
* when null move fails low, do a mate threat extension (ie. search for a mate at null-reduced depth from opp perspective): saw that in the wiki, and found it to be not just useless but actually harmful. There is however the connected move trick by Tord Romstad, which is quite a smart idea. I haven't experimented with it, and wonder how much elo it adds to SF.
Code: Select all
else
{
// The null move failed low, which means that we may be faced with
// some kind of threat. If the previous move was reduced, check if
// the move that refuted the null move was somehow connected to the
// move which was reduced. If a connection is found, return a fail
// low score (which will cause the reduced move to fail high in the
// parent node, which will trigger a re-search with full depth).
threatMove = (ss+1)->currentMove;
if ( depth < ThreatDepth
&& (ss-1)->reduction
&& threatMove != MOVE_NONE
&& connected_moves(pos, (ss-1)->currentMove, threatMove))
return beta - 1;
}
}
Code: Select all
else
{
// The null move failed low, which means that we may be faced with
// some kind of threat. If the previous move was reduced, check if
// the move that refuted the null move was somehow connected to the
// move which was reduced. If a connection is found, return a fail
// low score (which will cause the reduced move to fail high in the
// parent node, which will trigger a re-search with full depth).
threatMove = ss->threatMove = (ss+1)->currentMove;
if (nullValue <= VALUE_MATED_IN_MAX_PLY)
mate_threatExtension = true;
else if ( depth < ThreatDepth
&& (ss-1)->reduction
&& threatMove != MOVE_NONE)
{
if ( nullValue < beta - 0x50
&& connected_moves(pos, (ss-1)->currentMove, threatMove))
return beta - 1;
threatreplyExtension = true; //[No real extension but switches off futility pruning]
}
}
}
Code: Select all
// Don't terminate search early if the opponent threatens mate
if (ext < ONE_PLY && mate_threatExtension && ss->ply < iteration)
ext = ONE_PLY;
So, with 11 depth you have a weak zugzwang detection at ply 2 (only 3 ply deep), and in the middle of the tree (at ply 5,6) you have none. I think that for decent zuzgzwang detection your engine need at least depth 20.lucasart wrote:at this time control in the middlegame, it typically reaches an average depth of 11Karlo Bala wrote:Verification search need big depths to be effective. I doubt that your engine reach more than 6-7 depth in the middle of the tree (13-15 depths from the root) at such fast time control.lucasart wrote:Just tried it, and it's proven completely useless. Result after 500 games in 6"+0.1" (average NPS on my hardware around 1M)I wonder if it's normal, and if others have come to the same conclusion, or if I'm doing something wrong.Code: Select all
Score of test vs DiscoCheck 3.5.1: 152 - 149 - 199 [0.50] 500
Basically I'm doing a verification search at high depths (depth >= 7) when the null move fails high.
Last time I tested this verification helped only when I restricted it to cases with a small number of pieces for the side to move on the board. It wasn't a big effect and I can't remember if it was significant.I think this whole zogzwang problem is vastly exagerated. People seem to attach far too much attentionattention to this post null move hype:After testing I discovered the following:
* verification search is completely useless. elowise of course, meaning that there are perhaps some positions in which it helps, but overall it doesn't help.
* the piece precondition: only do a null move when you have at least a piece on the board. Well even that is almost useless. Adding that condition was unmeasurably better (better but below error bar). I kept it anyway, but perhaps it could be further improved, like at least one piece, or not in a king opposition (ie. king dist != 2). Even in K+P endgames, the zugzwang is more an exception than a general problem. And not doing null move misses a lot of good moves that would be found deeper in search, which is to be put in front of the zugzwang improvement.
* when null move fails low, do a mate threat extension (ie. search for a mate at null-reduced depth from opp perspective): saw that in the wiki, and found it to be not just useless but actually harmful. There is however the connected move trick by Tord Romstad, which is quite a smart idea. I haven't experimented with it, and wonder how much elo it adds to SF.