Author: Ed Schröder
Date: 23:16:00 09/30/99
Go up one level in this thread
>Posted by Peter McKenzie on October 01, 1999 at 00:31:08: > >>>No null-move in Rebel. Rebel's evaluation function is much to slow >>>for null-move. Besides of that my evaluation function provides me >>>so much data I don't need null-move. >>> >>>I tried null-move once and it gave me a speed-loss of 25%. >>> >>>Ed >> >> >>Two things come to mind.... >> >>(1) I don't see how null move R=2 can possibly slow you down, unless you >>implemented it in a different way than we are using. IE it only reduces the >>depth on bogus branches... but doesn't incur any penalty unless you are >already >>doing some selective discarding of moves along the way and you suddenly can't >>do this with null-move active... > >My take on this is that Ed is doing something similar (or somehow >equivalent) to >nullmove pruning using information derived from his evaluation function. > >For example, in the extreme case lets assume that the information from his >evaluation function allows him to prune 100% of the lines that would be pruned >by nullmove pruning. Adding nullmove pruning to such a program would >merely add >the cost of doing the nullmove search but without getting any benefits. Hence >clearly a slowdown. > >Now its highly unlikely Ed's pruning has a 100% match with nullmove >pruning, but >the principle still applies. If his pruning prunes 90% of the lines pruned by >nullmove pruning, then adding nullmove pruning would still probably result >in a >slowdown. You got it right Peter. I concluded that my way of doing selective search is more powerful than the benefits of null-move, at least for Rebel. Null-move is a powerful way of doing selective search, no doubt. But it doesn't mean that it is the best system. For Rebel it wasn't. The big disadvantage of null-move are these (for Rebel) unnecessary R=2 searches you have to do as they cost a lot of processor time. Imagine you have an evaluation function that provides you with all the information you need to do a proper selective search. You then do not have to do all these R=2 searches which eat a lot of the processor time. Rebel works that way. Other programs work that way as well. CST comes to mind. I am not saying my system is better only that my way of doing things suits Rebel better. I know for sure that if you have a super-fast evaluation null-move will be superior than my way of doing things. And since Rebel has a slow evaluation function it was logical for me to accept Rebel did not benefit from null-move. >>(2) Crafty is pretty evaluation-heavy today... ie it is currently spending >>over 50% of the total search time in Evaluate() and children functions... and >>that is in spite of lazy evaluation... yet null move speeds me up by a factor of >>2 plies typically... When I set Rebel to "brute force" the slow down is 2.5-3 plies. Ed >Sure, but Crafty doesn't try to directly use information from the >Evaluation for >pruning... > >Peter
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.