Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Nondeterminsitic behavior

Author: Dave Gomboc

Date: 13:59:52 07/18/99

Go up one level in this thread


On July 18, 1999 at 08:42:58, Andrew Williams wrote:

>On July 18, 1999 at 07:38:35, Dave Gomboc wrote:
>
>>On July 18, 1999 at 04:38:08, Andrew Williams wrote:
>>
>>>On July 18, 1999 at 03:01:33, Dave Gomboc wrote:
>>>
>>>>In the past, people have discussed how difficult it can be to debug a chess
>>>>program due to non-deterministic behavior.  Clearly, this can arise from a
>>>>multi-threaded search.  If, however, the search is single-threaded (and
>>>>discounting the play from the start of the game until the end of the opening
>>>>book), what factors, if any, might allow a program to still not play identically
>>>>each time?
>>>>
>>>>Dave
>>>
>>>In my (single-threaded) program, there are:
>>>
>>>(1) The hash-table - search the previous move for 10 seconds one time and
>>>    for 30 seconds the next time and you will have different information
>>>    supporting the search.
>>
>>Okay.  Assume that you search for the same length of time each time, and that
>>the background load during both runs is as low as possible (no other user apps
>>open.)  You can still get unlucky a very small portion of the time, right?
>>
>
>As far as PostModernist is concerned, if it searches one more node or one
>less node in a previous search, there's a chance that the HT contents will
>yield a slightly different set of nodes and its search may look different.
>If PM has searched exactly the same nodes as before, you should not see any
>difference in subsequent searches.
>
>>>(2) The order of the pieces in my piecelist[] data structure. For a long
>>>    while I was confused by the fact that if I ran postmodernist on a test
>>>    position from the command line I got a different search from what I got
>>>    running it under Xboard. The problem was that reading a position from fen
>>>    put the pieces in a different order from reading the same position from
>>>    xboard's "Edit Position" command. (I should say that this depends a bit
>>>    on your approach to move generation). I solved this by taking what I
>>>    got from "Edit Position", converting it to FEN and reading it back in.
>>
>>This is something that wouldn't have occured to me right off of the bat either.
>>
>>>(3) Bugs! I would look at uninitialized variables first.
>>
>>I haven't written a chess program, so I don't have any bugs to look for. :)
>>
>
>Was it you who wrote an Awari (Kalah) program using MTD(f)? If not, my
>apologies. If it was, can you tell me what you did about generating a PV?

Yes, I did.  (The class has been over for a while, and I haven't done anything
with it lately.  Some others are preparing a killer Awari program, but I'm doing
other things.)  The rules of our in-class tournament didn't allow thinking on
the opponent's time, so I didn't even worry about getting a response move for
pondering, much less an entire PV.  I just kept track of the move to play at the
top level of the search, which won't be good enough for you.

How was I going to deal with this issue?  Actually, I wasn't really sure.  I've
seen the mathematical arguments in favour of pondering on just one move, but
chessically speaking, I'm still unconvinced that it is the best that can be done
against humans.

Don Dailey was very helpful in discussions that I had with him re: mtd(f).
Hopefully he'll read your message and find time to write something.

>Thanks
>
>Andrew

Dave



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.