Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: null move and mate threat

Author: Zach Wegner

Date: 17:03:43 10/08/04

Go up one level in this thread


I don't know how to get WAC 141 in one second, but I know some things in your
code to improve it. First, you should not dynamically allocate storage for moves
(do not declare the array in search()), but rather have a large array of size
MAXMOVES * MAXPLY (it can probably be less) that is indexed by a pointer array
indexed by ply. If this seems confusing, heres some pseudo-code:

mv movestack[MAXMOVES * MAXPLY];
mv *firstmove[MAXPLY];
...
firstmove[ply + 1] = gen(firstmove[ply]);

This requires your gen() to return a pointer to the element after the last move
used, which shouldn't be too difficult.

Second, it seems you are not using fractional extensions the way most people do.
The depth parameter is measured in some constant > 1 that is proportional to a
ply. I suppose floats could be used, but is important that the depth parameter
is not an int with 1 equal to a ply. The idea is that for some extensions you do
not want to extend a whole ply for just one occurence, but add a little bit of a
ply to the depth that could help trigger an extension later. As an example, at
ply X you have a condition met and you want to extend a half of a ply. Then at
ply X + 2(say) you have the same (or other) condition met, and you extend a half
of a ply again. The net extension is then just one ply, while in your
implementation it would not be extended because the half ply would be rounded
off at each ply. Or maybe I just misunderstood your code...

Regards,
Zach



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.