Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: move_generation + hash

Author: Ed Schröder

Date: 09:09:02 05/31/00

Go up one level in this thread


On May 30, 2000 at 18:11:51, Robert Hyatt wrote:

>On May 30, 2000 at 15:24:36, Ed Schröder wrote:
>
>>On May 30, 2000 at 00:28:47, Robert Hyatt wrote:
>>
>>>On May 28, 2000 at 16:37:32, Gian-Carlo Pascutto wrote:
>>>
>>>>On May 28, 2000 at 10:02:05, Georg v. Zimmermann wrote:
>>>>
>>>>>From my tests it shows that it sticks with the hash-move about 50% of the time.
>>>>>Should this number be higher ?
>>>>
>>>>Hmm...if this number is also effectively your 'move ordering percentage',
>>>>which I assume it is, it is quite low. I'd expect it to be at least about 75%.
>>>>
>>>>>
>>>
>>>
>>>
>>>The classic definition of a "strongly-ordered tree" is this:  If, for every
>>>node where you fail high, you fail high on the first move at least 90% of the
>>>time, then your move ordering is good."  If you are much below 90% and already
>>>have a serious problem that is not hard to fix.  The traditional ordering ideas
>>>holds Crafty at 92% and better for most of the game.
>>
>>I can't understand the 92%. A perfect mini-max search requires many many
>>nodes an alpha-beta cutoff will not work and you are forced to search all
>>the nodes of the ply in question. And this number is certainly much higher
>>than 8%.
>
>You have to re-read the definition again, _very carefully_ to avoid the semantic
>trap you just fell into.
>
>For every position where you fail high, if you fail high on the first move you
>try, you increment a counter "right++".  You always increment a counter "fh++".
>When you finish the search,  you compute percent=right/fh.  That number needs to
>be over 90% to consider your tree strongly ordered.  Notice that this 92% number
>(in crafty) simply says this:
>
>    "if we look at _all_ the positions in the tree where the search fails high,
>     then 92% of those fail highs happen on the first move searched in that
>     position, which is known as 'optimal move ordering'.  In 8% of those fail-
>     high positions, we failed high on a move other than the first one (a killer
>     move, a capture, a history move, etc.)

In our example I got the "fh++" before and the "right++" after the alpha-beta
check which is also a nice piece of information. Now that I have changed this
into your way I typically get 92-94%. Since this percentage is updated on the
screen every second I can follow its behavior. You indeed see the percentage
dropping when for instance a move fails low on the root and the engine has to
search for a new move it did not had as best move sofar before.

The question remains "who has decided" or "how do you know" that 90% is good
and below is bad (as you say).

Ed



>>The way I count is to calculate the percentage around the alpha-beta check.
>>I get 65 to 70% and this number is pretty stable for each position I tested.
>>So the question is how you count, and your interpretation of a fail-high.
>>When I read fail-high I interprete this as a normal alpha-beta cutoff check.
>>
>>Ed
>
>
>
>Yes...  I call fail high this:
>
>    value=-Search(xxxx);
>    if (value > alpha) {
>      if (value > beta) {
>         stuff done here is done after a fail high condition was detected.
>         return value;
>      }
>    }
>
>
>
>>
>>
>>
>>>>>I was very dissapointed when I didn't notice any speedup after my changes. What
>>>>>speedup should I expect ? Something like 0.5-1% or more like 1ply ?
>>>>>
>>>>>Am I doing something wrong or does this simply not matter as much as I thought ?
>>>>
>>>>It's strange. I did the same thing in the past and arrived at the same result.
>>>>My eval is pretty small, my movegen is very expensive yet my speed was hardly
>>>>any better. I didn't get it. I still don't.
>>>>
>>>>I still don't get how some programs run 10x as fast as mine either.(Little
>>>>Goliath). What the hell do they do to make those things so darned fast?
>>>>
>>>>--
>>>>GCP
>>>
>>>
>>>Easy:  Never do now, that which you can defer doing until later.  Because if you
>>>defer doing it, a cutoff will mean you don't do it at all.



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.