Author: Don Dailey
Date: 21:33:15 02/25/99
Go up one level in this thread
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 Hi John, This brings back memories. I remember the first time I tried: if (static_eval > beta) return(beta); WOW! This is fast! I was so excited I didn't get much sleep that night. When the autotester returned a poor result the next day the first thing I discovered was that it was really stupid to do this when in check. Of course this was not the only problem. I was decieved by how nice the PV's look too. Very natural looking moves, no Na3 stuff. I eventually kludged some stuff together that was still faster than full width and didn't play any weaker (or stronger either.) I eventually gave it up because it was such a hack and didn't really help. I can laugh about it now because I was all over the problem and didn't see the obvious! Those days were fun! - 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.