Computer Chess Club Archives




Subject: Re: no more comments???

Author: Uri Blass

Date: 09:10:35 07/25/02

Go up one level in this thread

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

Function 2:generate only the good captures and if
you find good captures count the number of legal moves
if you did not do it in previous steps.

Function 3:generate the rest of the moves.

>You only drop into steps 2-5 if the hash probe does not cause a cutoff.
>With my approach, you add step 1a.
>1a.  Search hash move without generating moves.
>If it causes a cutoff, you _still_ avoid 2-5.
>So for every cutoff you get from the hash move being searched, you avoid
>one move generation cycle.
>>I still did not change it and in the last days there are other
>>simple changes that I tested.
>>Every change may do the program only slightly better and I prefer
>>to test after every small change in the search rules
>>in order to avoid bugs(there were cases when a change that
>>I knew that it should be productive was not profuctive
>>because of a bug).
>This is _zero_ change to the search.  The node counts will be identical
>since you should be searching the hash move first whether you generate
>moves or not.  This is purely an efficiency issue, avoiding the computation
>of generating all the moves that you won't need to search when the hash move
>is good enough to fail high.
>>Every test takes time because I use the GCP test suite
>>at 5 minutes per position so the test takes 15 hours.
>This can be verified as correct with a few positions.  Since the node
>counts can't possibly change, just compare a few position "before" and
>"after".  It the node counts are identical, you are done.

You are right and the only problem that
I can think is hash
collision about the number of legal moves that
may cause different extensions
but I use 64 bit signature and in most cases
it is not going to cause different extensions
so I can hope that it does not happen.


This page took 0.08 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.