Computer Chess Club Archives




Subject: Re: no more comments???

Author: Robert Hyatt

Date: 15:01:49 07/25/02

Go up one level in this thread

On July 25, 2002 at 13:59:31, Uri Blass wrote:

>On July 25, 2002 at 13:09:31, Robert Hyatt wrote:
>>On July 25, 2002 at 12:10:35, Uri Blass wrote:
>>>On July 25, 2002 at 11:29:37, Robert Hyatt wrote:
>>>>On July 25, 2002 at 01:32:52, Uri Blass wrote:
>>>>>On July 24, 2002 at 21:54:12, Robert Hyatt wrote:
>>>>>>On July 24, 2002 at 13:13:11, Gian-Carlo Pascutto wrote:
>>>>>>>On July 23, 2002 at 12:08:43, Uri Blass wrote:
>>>>>>>>I still do not use hash tables to save generating moves and it is another gain
>>>>>>>>that I can get from hash tables.
>>>>>>>That gain is very small - I still don't do it either.
>>>>>>I think for me it was about 10%.  Not huge.  Not ignorable either.  if you
>>>>>>count the number of times the hash move causes a fail high, that is the number
>>>>>>of move generations you will totally avoid...  It may or may not be a lot
>>>>>>depending on other factors...
>>>>>It is not the number of move generations to avoid for me.
>>>>>You should multiply it by the number of legal moves because
>>>>>I generate them before looking at the hash tables.
>>>>I think you misunderstand.
>>>>At a ply in the tree, at the top of search, you should be doing this:
>>>>1.  hash probe.
>>>>2.  generate captures.
>>>>3.  try them one at a time.
>>>>4.  generate non-captures
>>>>5.  try them one at a time.
>>>I think that it should be:
>>>1.hash proble
>>>2.generate killers.
>>I don't see why you need to "generate" these.  You already have the
>>moves in the  killer list, you simply have to validate the move to be
>>sure it is legal in the current position...
>I need to generate a new function to validate if
>a move is legal(I have a function to check
>if the opponent move is legal but the way that I do it
>is by generating all the list of the legal moves and
>checking if the move is in the list).
>I called it generating the move but you are right that
>I do not need to put it in the move stack
>so practically after finding that it is legal.
>>>3.try them one at a time.
>>>4.gnerate captures(only good captures or promotions).
>>>5.try them one at a time.
>>>6.generate non-captures
>>>7.try them one at a time.
>>>For step 1 I need to change the data that is in the hash tables and add the
>>>number of legal moves because this number is
>>>used in part of the cases to decde about extensions.
>>>I understand that at least for step 2,4,6
>>>I need to write some new functions.
>>>Function 1:check if the killer is legal,generate it
>>>and count the number of legal moves
>>>(unless the number is in the hash tables or
>>>the killer is illegal).
>>Where are you doing the "legal move count"?  I assumed it was in your
>>move generator, which would be called at the _next_ ply after making a
>>killer at this ply...
>It is today in my move generator
>but I use it to decide if to extend or not to extend
>I have some rule that tells me to extend if the number
>of legal moves is small and some other conditions
>happen so
>I need to know the number of legal moves before
>making another move.

So you are "out of sync" here?  IE you make a move, and update the legal
move count for your opponent immediately so that you know whether to extend
here or not?

That is a bit like my old incremental move generation.  I would make a move
and update everything so that generating moves was always trivial.  The problem
is that you make a move, update the stuff, then get a hash hit and don't
use the updated info at all.  I gave up on that and decided to just update
exactly when it is needed...

This page took 0.04 seconds to execute

Last modified: Thu, 07 Jul 11 08:48:38 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.