Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Internal Iterative Deepening

Author: David Rasmussen

Date: 07:12:21 01/24/02

Go up one level in this thread


On January 24, 2002 at 08:32:39, Uri Blass wrote:

>
>1)I admit that I understand nothing about hashtables in chess programs but I do
>not understand what is the problem to find a move at reduced depth and ignore
>previous hash table information if they can give you only a score and not a
>move.
>

That's what I thought myself. But I thought there must be a reason why people
don't do that. I will of course test is myself, but I wanted to ask first.

>2)I may be wrong but it seems to me that you simply read Crafty's code and
>decided to do the same and this is the reason that you use depth-2(crafty is
>using depth-2 in search.c)
>

I don't know what you mean. Crafty isn't the only program using IID, and Hyatt
certainly didn't invent it. Lots of programs use it, so why shouldn't I? I made
statistics of how often my program is in the PV, but has no hash move. It was
quite often. That must hurt move ordering and take time. Then I implemented it
and it helps some, but as I said, it doesn't catch all cases. The reason why I
use depth-2 is because my testing shows that it's best. A lot of other people
use depth-2. Again, Hyatt didn't invent this, nor is he the only one who has
tested this. Anyway, why do you say that?

>I guess that you also use alpha and beta like Crafty.
>

Alpha-beta search? Yes, I must admit I do. So do 99% of all others. Hyatt
_certainly_ did not invent alpha-beta... I have been doing alpha-from the start,
long before I heard of Crafty. My program is not new, you know...

>I understand the idea of internal iterative deepening to find a move that is
>good enough at reduced move but I do not understand why start with good enough
>and not start with the best move at even reduced depth.
>

What?

>I thought that it may be possible to start with
>search(-infinite,infinite,depth-4) and
>only later to continue with search(alpha,beta,depth-2)
>when you start from the best move that you found at depth-4.
>

The Search() call in IID is not "just" a normal call at shallow depths to
determine a good move. In this call itself, there wont be any good move either,
so IID is performed again, until the remaining depth is less than some limit.
That's why it's iterative deepening. If you do depth-4, it will go (for example)
11,7,3 and possibly there wont be enough move ordering information from call to
call, for this to be effecient. Also, if you do depth-4, your lower limit, the
one mentioned before, will have to be at least 5. Anyway, I have tried with
different approaches, and this one works best for me.

>Note that it is possible that 4 is not big enough and we need bigger number.
>
>The reason is the fact that search(-infinite,infinite,depth-4) may find a mate
>or winning a queen when search(alpha,beta,depth-2) may find the wrong move(a
>move that is good enough but not winning and search(alpha,beta,depth) may take
>more time(in the case of mate it is obvious and in the case of winning a lot of
>material it also seems usually correct to me because of null move pruning)
>

The object is very seldom to spot a mate etc. In 99.999% of all IID cases, we
just want some reasonable move instead of having _no_ idea what is good.

>3)Note that I do not plan to use hash tables in a similiar way that chess
>programs use them because I want to evaluate sequance of moves and not only one
>position so I can see if one side make no progress and punish that side in the
>evaluation.
>

Your choice.

>I dislike the fact that programs use hash tables in a similiar way that I did
>not learn so they cannot detect fortress position or positions when one side
>gets the initiative(this is a bigger practical problem and programs do not see
>that a sequence of moves when the program earns positional bonuses again and
>again is better than a sequence of moves with slightly better score when the
>program lose positional bonuses again and again)
>
>I do not know today exactly how to use hash tables but I do not plan to do
>something wrong only because it is better than what I do now.
>

Why not, if you think it is better? If you really don't think it's better, then
fine by me.

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