Author: John Stanback
Date: 16:45:50 02/25/99
Go up one level in this thread
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
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.