Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: No explosions

Author: David Rasmussen

Date: 03:58:28 01/12/02

Go up one level in this thread


On January 12, 2002 at 05:27:28, Sune Fischer wrote:

>
>They do, but I always check the easy stuff first before wirting massive debuging
>code, at least you would know which two extensions (or more) that work together
>to create the explosion.
>

Sure, but I already had an idea about that. I am pretty sure that I didn't have
a bug as such. I think the problem is that I didn't restrict extensions more
than I did. Now I've added another limitation that says that if the ply depth is
more than x*iterationDepth, I scale the extensions down by some factor, y. x is
typically 2, and y is typically 0.5. But I will experiment with these numbers.
This stopped the explosion.

>By looking at the position it is hard to see what can go wrong, I would love to
>see that 62 ply line if you decide to find it :)
>

I am looking forward to i my self :) It's no problem finding it. I can just put
a breakpoint in my search code on the condition that ply == 62. Then when I get
there, I can just print the current line.

>3 questions:
>Why do you do _all_ the extension checks, I don't see the point in checking for
>pawn pushes and recaptures if inCheck is true when you limit the to 1 ply
>anyway? Or if Pawnpush is true then the recapture check is wasted.
>

You are right, but my code is first of all simplicity and good design.
Optimization is secondary. In this case, I wouldn't like to have my design
depending on the specific values of my extensions. That makes testing other
extension values harder. Secondly, with this clean design, it will be very easy
to make the change to a 2-ply limiting system instead of the current 1-ply
limiting system. In a 2-ply system, I look at the extensions at the current ply
and the previous ply, and make sure they don't exceed 2. But if the last ply had
none, this ply can have 2, or 1.75 or whatever. Lastly, making the design more
rigid as you suggest, will give me a 0.1 % speedup or so. Why do it?

>If you find the legal moves incrementally, how can you check for
>numberofmoves==1 at the first move, or do you simply forget about it then?
>

In the case of check, I create only check evasions, that is, _real_ legal moves.
Partly because it is faster for move generation, and partly because it makes the
check for this extension a lot faster.

>And why the inCheck and numberOfMoves==1, can't you forget about the inCheck and
>just extend +1 if there is only one legal move?

No because I only do it of there's a check also. I don't generate real legal
moves at all nodes, only check nodes.

>The point should be that 1 move is free, so it will only burn depth, I don't see
>how it matters whether or not you are also checked (though often you will be)?
>

I think I have explained that :)

/David



This page took 0.01 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.