Same for me. I've never been able to see an improvement from lazy eval. It's a typical compromise speed/accuracy. Perhaps at hyper bullet games it can improve something (although even that I never managed to measure), but I doubt that such a dubious idea really makes an elo difference at long time controls.diep wrote:In any pruning decision at the leaves - lazy evaluation doesn't work for Diep.jd1 wrote:Hi,
I have a question:
When Razoring, I understand some programs (such as Toga II) call the evaluation and check whether it is less than (beta - RazorMargin) as one condition.
Lazy Evaluation is done (as in Toga) by passing alpha & beta to the evaluation and checking whether lazy value > beta + margin or < alpha + margin.
When calling eval() for razoring, should (alpha, beta) be passed into the eval() function as normal, or does it make sense to pass (beta - RazorMargin, beta - RazorMargin+1)?
It seems that the evaluation value found here is not used again, and if we are only using the evaluation to decide whether or not to use razoring, I would have thought that if
lazy value > beta - RazorMargin + margin
or
lazy value < beta - RazorMargin - margin
it should be safe to return from eval() here as we already know what the decision will be. Am I right or horribly mistaken?
Thanks for all your help.
Jerry
Suppose that you search 30 plies deep. then the entire decision after that 30 plies is based upon lazy evaluation. That means that a few generic rules overrule a huge sophisticated evaluation function - which is not acceptable.
One thing is certain however: if you use lazy eval, it's very easy to either (i) screw things up completely for a negligible speed gain (ii) make your code illegible and messy. And that is reason enough not to use lazy eval, IMO.
It's amazing how many amateurish chess engines try to mess around with lazy eval. There are so many low hanging fruits to grab, before one even thinks of lazy eval and raw speed optimizations... It's the computer equivalent of a human 1200 elo player, trying to memorize deep lines of complicated opening books, when he doesn't even see a basic fork or mate in 1 in obvious situations.