Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: A nice speedup - maybe (?)

Author: Robert Hyatt

Date: 07:23:54 03/08/01

Go up one level in this thread


On March 08, 2001 at 06:39:59, Jeremiah Penery wrote:

>On March 08, 2001 at 01:01:58, Pham Minh Tri wrote:
>
>>On March 07, 2001 at 01:03:40, Pham Minh Tri wrote:
>>
>>>On March 06, 2001 at 10:39:05, Robert Hyatt wrote:
>>>
>>>>On March 05, 2001 at 23:57:05, Pham Minh Tri wrote:
>>>>
>>>>>Hi Dr. Hyatt,
>>>>>
>>>>>I am studying your RootMoveList function and wondering if its method of ordering
>>>>>could be replaced by calling Quiesce function.
>>>>>
>>>>>I mean the value for ordering could compute simply as following:
>
><slightly modified line below, to make it have the correct number of parameters>
>>>>> value = -Quiesce(tree,-MATE-1,MATE+1,ChangeSide(wtm),1);
>
>>>>>(need not call Evaluation and EnPrise functions)
>>>>>Could it work with the same result? Do I miss something?
>>>>>
>>>>>Thank in advance for your advice,
>>>>>Pham
>>>>
>>>>Probably would work find.  Might take a bit longer to sort the move list
>>>>since that quiesce() call could be quite complex.  The question is, would the
>>>>probably more accurate move ordering offset the cost, or not?
>>>
>>>But this is the fastest (and little diffirent, if someone need :) ) way to try
>>>your idea. I will try it now. Thank you very much.
>>
>>I have tried it. It works and saves me 1/4 of search nodes and time.
>>THANK YOU VERY MUCH FOR EVERYTHING.
>>Pham
>
>I inserted this in Crafty to see if I could reproduce your result.  For some
>positions, it truly produces an amazing speed up in time-to-ply of Crafty.
>However, it seems to cause problems in a few positions because of hash-table
>weirdness I think.  In the position:
>
>8/5pP1/1R6/7P/8/k7/p6r/K7 w - - 0 5
>
>I kept getting:
>
>                1     0.00   4.12   1. h6
>captured a king 1     0.00  10/20?  1. Ka1xa2+
>piece=3,from=16,to=8,captured=3
>ply=2
>captured a king
>piece=3,from=16,to=8,captured=3
>ply=2
>captured a king
>piece=6,from=15,to=8,captured=3
>ply=2
>captured a king
>piece=6,from=15,to=8,captured=3
>ply=2
>                1     0.01     ++   1. Ra6+!!
>                1     0.01   8.81   1. Ra6+ Kb3 2. g8=Q
>                1     0.02   9.04   1. g8=Q
>                1->   0.02   9.04   1. g8=Q
>                2     0.02     --   1. g8=Q
>                2     0.03 -16.45   1. g8=Q Rh1+ 2. Qg1 Rxg1+ 3. Rb1 <HT>
>                2     0.03     ++   1. Ra6+!!
>                2     0.05   8.54   1. Ra6+ Kb3 2. Rb6+ Kc3 3. g8=Q
>bad move from hash table, ply=220?  1. Ka1xa2+
>captured a king
>piece=3,from=16,to=8,captured=3
>ply=2
>captured a king
>piece=3,from=16,to=8,captured=3
>ply=2
>bad move from hash table, ply=2
>                2->   0.07   8.54   1. Ra6+ Kb3 2. Rb6+ Kc3 3. g8=Q
>                3     0.08     --   1. Ra6+
>                3     0.10   0.00   1. Ra6+ Kb3 2. Rb6+ Ka3
>bad move from hash table, ply=220?  1. Ka1xa2+
>captured a king
>piece=3,from=16,to=8,captured=3
>ply=2
>captured a king
>piece=3,from=16,to=8,captured=3
>ply=2
>
>
>It seems that once per iteration it's searching the illegal move Kxa2, which is
>causing these problems.  I think because of this, it causes a net slowdown in
>this position.  But so far for most positions it could be a big win.

It would seem that you somehow simply have a bug.  One problem is that you
have to be careful how you call Quiesce().  It uses the move generator to stuff
capture moves (only) into the move list.  The right idea is to make each move
as I do on RootMoves(), and then call Quiesce() with ply=2, which should work
cleanly..  I'll give it a check to see...



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.