Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: No explosions

Author: Uri Blass

Date: 02:14:44 01/13/02

Go up one level in this thread


On January 12, 2002 at 06:58:28, David Rasmussen wrote:

>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.

If I understand correctly numberofMoves means number of legal moves when you are
in check and number of pseudo legal moves when you are not in check.

In this case you still can extend +1 only if NumberofMoves=1 because the only
case when Numberofmoves=1 the number of legal moves is always at most 1(it can
be also 0 in some stalemate situations when there is only 1 pseudo legal move)

Uri
>
>>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 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.