jd1 wrote:
Actually I am little confused - is there a difference between consecutive and recursive null-moves?
Null move search is recursive. However, I recommend you put an arbitrary limitation to it: prevent consecutive null moves. For example:
- OK: white plays a null move (depth=d), black plays a real move (depth=d-R), white plays a null move (depth=d-R-1), etc.
- not OK: white plays a null move (depth=d), black plays a null move (depth=d-R), etc.
I've never tried Vincent Diepeveen's double null move method, but somehow I'm very skeptical about it...
Thanks, that makes sense. Now we'll see whether it works in testing Toga currently has no limitation on consecutive null-moves since the eval >= beta term was removed and the tempo bonus added to eval.
jd1 wrote:- not OK: white plays a null move (depth=d), black plays a null move (depth=d-R), etc.
In micro-Max I search any number of null moves in a row, and it does not seem to hurt it significantly. (It does this because the null-move search doubles as check test, and it can be important to know whether you are in check even when eval < beta, because you could be stalemated and beta could be < 0.) With multiple null moves the reductions pile up, so although it might be a waste of time, it is hard to believe that it could ever be a significant waste of time.
In Shokidoki, which has a tempo bonus, I use the condition eval - BONUS >= beta.
lucasart wrote:I've never tried Vincent Diepeveen's double null move method, but somehow I'm very skeptical about it...
Double null move is a method of detecting zugzwang. It relies on the null-move observation breaking down.
Say we do a single null-move (what you do) - in a zugzwang position you return a fail-high.
In a double null-move, you do them, and the last one fails high. Since we take the negative score of the null move the initial null-move fails low, and we continue searching normally. It's theoretically sound.
hgm wrote:
In micro-Max I search any number of null moves in a row, and it does not seem to hurt it significantly. With multiple null moves the reductions pile up, so although it might be a waste of time, it is hard to believe that it could ever be a significant waste of time.
Thta's how Toga does it currently - any number of null moves in a row. Changing always seems to lose elo, however.
hgm wrote:
In micro-Max I search any number of null moves in a row, and it does not seem to hurt it significantly. With multiple null moves the reductions pile up, so although it might be a waste of time, it is hard to believe that it could ever be a significant waste of time.
Thta's how Toga does it currently - any number of null moves in a row. Changing always seems to lose elo, however.
Jerry
I'll make this a subject of a test run. To be clear, in Crafty, when I do a null-move search I always call search with a flag that says "no null next ply only". That needs to be changed. Anything else you do that is interesting? Such as letting nulls go deep into the endgame rather than turning them off when zugzwang becomes more common (Vincent D uses the second null to refute the first and supposedly avoid zugzwang problems. Never has worked for me, but I will give this a try, just to see if it is a positive, negative, or equal type of thing....
hgm wrote:
In micro-Max I search any number of null moves in a row, and it does not seem to hurt it significantly. With multiple null moves the reductions pile up, so although it might be a waste of time, it is hard to believe that it could ever be a significant waste of time.
Thta's how Toga does it currently - any number of null moves in a row. Changing always seems to lose elo, however.
Jerry
I'll make this a subject of a test run. To be clear, in Crafty, when I do a null-move search I always call search with a flag that says "no null next ply only". That needs to be changed. Anything else you do that is interesting? Such as letting nulls go deep into the endgame rather than turning them off when zugzwang becomes more common (Vincent D uses the second null to refute the first and supposedly avoid zugzwang problems. Never has worked for me, but I will give this a try, just to see if it is a positive, negative, or equal type of thing....
Thanks! It will be very interesting to see the results. I turn off null-move when entering a king and pawn endgame.
hgm wrote:
In micro-Max I search any number of null moves in a row, and it does not seem to hurt it significantly. With multiple null moves the reductions pile up, so although it might be a waste of time, it is hard to believe that it could ever be a significant waste of time.
Thta's how Toga does it currently - any number of null moves in a row. Changing always seems to lose elo, however.
Jerry
I'll make this a subject of a test run. To be clear, in Crafty, when I do a null-move search I always call search with a flag that says "no null next ply only". That needs to be changed. Anything else you do that is interesting? Such as letting nulls go deep into the endgame rather than turning them off when zugzwang becomes more common (Vincent D uses the second null to refute the first and supposedly avoid zugzwang problems. Never has worked for me, but I will give this a try, just to see if it is a positive, negative, or equal type of thing....
Thanks! It will be very interesting to see the results. I turn off null-move when entering a king and pawn endgame.
Jerry
I'll do that. Might take a day or two as I have some other test queued up at the moment...
hgm wrote:
In micro-Max I search any number of null moves in a row, and it does not seem to hurt it significantly. With multiple null moves the reductions pile up, so although it might be a waste of time, it is hard to believe that it could ever be a significant waste of time.
Thta's how Toga does it currently - any number of null moves in a row. Changing always seems to lose elo, however.
Jerry
I'll make this a subject of a test run. To be clear, in Crafty, when I do a null-move search I always call search with a flag that says "no null next ply only". That needs to be changed. Anything else you do that is interesting? Such as letting nulls go deep into the endgame rather than turning them off when zugzwang becomes more common (Vincent D uses the second null to refute the first and supposedly avoid zugzwang problems. Never has worked for me, but I will give this a try, just to see if it is a positive, negative, or equal type of thing....
Thanks! It will be very interesting to see the results. I turn off null-move when entering a king and pawn endgame.
Jerry
I'll do that. Might take a day or two as I have some other test queued up at the moment...
It's been a long test Do you remember the results?
I was looking at the Fruit 2.1 code today because I'm convinced I have a search problem (newish engine developer here) and could not figure out how it (Fruit) was preventing successive null moves, but this thread made me realise it's implicit in eval() > beta. But, if you remove that, a la Toga, then it's going to just rip through to a QSearch - how can that be useful...?
Just a couple of quick questions, firstly, should IID be done at non-PV nodes (in particular Cut-Nodes)? If so, how much elo was this worth for you?
Secondly, is recursive null-move (i.e. the null-move search tries a second null-move) ok or not?
Thanks a lot!
Jerry
You have to be more specific about null-move. Most everybody uses recursive null move, but almost everybody excludes two consecutive null-moves. There is a difference. The classic definition of recursive null move simply says that you can have more than one null-move in a single path, but not two consecutive null-moves.
Just a couple of quick questions, firstly, should IID be done at non-PV nodes (in particular Cut-Nodes)? If so, how much elo was this worth for you?
Secondly, is recursive null-move (i.e. the null-move search tries a second null-move) ok or not?
Thanks a lot!
Jerry
You have to be more specific about null-move. Most everybody uses recursive null move, but almost everybody excludes two consecutive null-moves. There is a difference. The classic definition of recursive null move simply says that you can have more than one null-move in a single path, but not two consecutive null-moves.
You have probably missed Colin's post that reactivated a 2 years old thread by asking a question to you.