Author: Robert Hyatt
Date: 13:03:08 04/29/04
Go up one level in this thread
On April 29, 2004 at 02:08:40, Tony Werten wrote: >On April 28, 2004 at 16:14:39, Gerd Isenberg wrote: > >>On April 28, 2004 at 13:45:05, Ed Schröder wrote: >> >><snip> >> >>>What is double nullmove? I only know recursive nullmove allowing multiple >>>nullmoves. I also read about "allowing 2 nullmoves in a row". What are the >>>differences? >>> >>>I use recursive nullmove, not allowing the next ply after the nullmove to >>>nullmove. So: >>> >>> e2-e4 >>> e7-e5 >>> **-** // nullmove >>> d7-d5 // do no allow nullmove >>> >>>When I remove that check I get a few percent speedup, results look okay. >>> >>>Ed >> >> >>Hi Ed, >> >>yes Double Nullmove, suggested and invented by Vincent, allows to play two >>nullmoves in a row, to efficiently get rid of zugzwang problems. It is recursive >>too, and if i understand correctly, it works fine without any nullmove >>precondition: >> >> if (!inCheck) >> { >> if ( move2thisNode != null || move2ParentNode != null ) ( >> val = -doNullMoveSearch(depth-1-R,...); >> if ( val >= beta ) return val; // return beta; >> } >> } >> >>May be Vincent may correct me. >>It seems that there is an implicit kind of IID with 2R-2 too. > >Correct. Chech your hashtable again after the nullmove, if you didn't have a >best move before. > >Then throw out IID. > >Tony I don't see how/why one would throw out IID. NULL can collapse search to q-search, which means the best you can hope for is a capture should you search this position later. That's not the same as a "good" move when depth>0. If you mean after the second null, you are now 8 plies short of a full search, which in most middlegame positions is going to be into the capture only search... > >> >>What i do (did?), is a conditional confirmation search with same depth reduction >>if a single nullmove fails high. To look whether there is at least one move >>equal or better than doing nothing. Pseudo code like this: >> >> if (!inCheck) >> { >> eva = evaluate(&thread,..); // thead is negative if eg. own pieces hang >> if ( move2thisNode != null && eva + thread - margin >= beta ) >> ( >> val = -doNullMoveSearch(depth-1-R,...); >> if ( val >= beta ) >> { // nullmove cutoff? >> if ( !likely2haveZugzwang() ) >> return val; >> if ( search(depth-1-R,...) >= beta ) // one may even try depth-2-R >> return val; >> // else zugzwang detected >> } >> } >> } >> >>Cheers, >>Gerd
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.