Author: Don Dailey
Date: 22:02:34 02/25/99
Go up one level in this thread
On February 25, 1999 at 21:23:30, Will Singleton wrote: > >On February 25, 1999 at 19:45:50, John Stanback wrote: > >>On February 24, 1999 at 19:16:27, Bruce Moreland wrote: >> >>> >>>On February 24, 1999 at 15:37:58, Don Dailey wrote: >>> >>>>My program is a mixture of static rules and null move. I do null >>>>move when I have significant depth remaining, but when I am near >>>>end nodes I do a simple static attack analysis. This has proven >>>>to be a significant improvement to my chess program. It is faster >>>>than null move and slightly riskier, but the net affect is >>>>a stronger chess program (for me.) Even though it's probably >>>>riskier, it does pick up things null move will miss although the >>>>converse is also true. >>> >>>Can you describe this or give examples please? I know that some people do this >>>but I haven't the vaguest idea how it works. >>> >>>bruce >> >>In Zarkov, I also use a combination of null move search and static >>evaluation to selectively prune the tree. At depths 4 and higher I >>use standard null-move search with R=2. Like Don, at depths 1-3 if >>the static eval is greater than beta+margin then I use static >>threat detection (and sometimes depth reduced searches) to try to >>prune the tree. On some problems this works better than null-move and >>sometimes worse. Overall I've gotten a little better results. >>Some of the threat detection stuff is a little "ugly", but whatever >>works... :) >> >>I first discovered the simple heuristic approach to selective search >>in 1988 and like Don I couldn't believe that I had worked on my program >>for years without thinking of this. It's that mythalogical one line >>change that gives a huge increase in strength that every chess >>programmer dreams of -- except that it doesn't actually give a huge >>increase in strength (at least not without adding the threat detection >>stuff). Anyway, when I first tried adding this line to the search >>routine (at all depths) I was elated: >> >>if (static_eval > beta) return(beta); >> >>Even on my old 8 Mhz 286 Zarkov now cruised through the iterations, >>giving some pretty nice looking PV's. WOW! Let's try some problems. >>OOPS, it can't solve anything. Well, so maybe the static eval isn't >>quite good enough, the next step is to add some threat detection stuff >>to try to fix the problem :). This selectivity is actually the same >>idea as null-move, except much riskier and trickier to implement. >>Anyway, it's great fun to add the line above and see how fast the >>search goes. >> >>What do most null-movers do at depth=1? >> >> >>John > > >I don't use null move at depths 1, so I'm looking forward to trying this "static >selectivity tester", as Don put it. > >Will A very simple thing you can do, and it will make your program stronger is to use a big margin on the last ply only: if (static_core >= beta+margin) return(beta) Try a margin around 1/2 pawn. What will happen is that your program will be faster, lose a single ply on many tactics but be somewhat stronger. This is kludge solution but will improve your program until you get around to doing the right thing. We were surprised that this tests pretty well. Half pawn doesn't cover a lot of tactics but evidently enough to make a lot of difference. This is far from optimal and I don't recommend it for a finely tuned program but it is a "one line change" that adds a few rating points if you are doing nothing else but full width here. But there is no reason why you cannot go all the way into quies with null move. You don't have to give up the last ply. It's just that at some point you are only doing a quies search after a null move. You will still see a speedup if you do null+quies when you are entering your last ply of the main search. This is probably better than my 1/2 pawn margin which is just a curiosity. However I am convinced the right thing to do on at least the last 2 ply is good solid "static threat detection" as John calls it (a better phrase than the one I used.) - Don
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.