Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Crafty question: root iteration

Author: Robert Hyatt

Date: 07:55:13 02/13/00

Go up one level in this thread


On February 12, 2000 at 22:45:21, Sanjiv Karnataki wrote:

>On February 12, 2000 at 19:39:44, Robert Hyatt wrote:
>
>>On February 12, 2000 at 17:46:51, Sanjiv Karnataki wrote:
>>
>>>Hi All,
>>>
>>>I was trying to put in MTD(f) in my amateur program, but it seemed to worsen the
>>>search times so I decided to do what every amateur does when they get stuck ;) I
>>>looked at Crafty's code to see if it did something similar, but I cannot figure
>>>out what it is doing.
>>>
>>>Could someone (possibly Dr. Hyatt) please explain in small words the logic in
>>>iterate.c and searchr.c? I understand that it maintains a sorted root move list,
>>>but I cannot understand all the stuff it is doing with root_alpha, root_beta,
>>>root_moves[0].status. It also modifies root_beta in SearchRoot !?.
>>>
>>>Any help is greatly appreciated, thank you in advance !
>>>
>>>Sanjiv.
>>
>>
>>first, I don't use mtd(f).  I tried it, but didn't like it.
>>
>>iterate simply calls SearchRoot() over and over.  If the value returned is
>>< alpha, I relax alpha and search again, same depth.  If the value returned is
>>> beta, I relax beta and search again, same depth.  Otherwise I go to the next
>>ply.
>>
>>Other than that I am not sure what you don't understand..  feel free to ask
>>specific things however..
>
>Thank you Dr. Hyatt.
>
>A couple of specific questions:
>a) Crafty seems to use the two least significant bits of root_moves[0].status in
>some way that controls how alpha and beta are relaxed. What do the bits mean and
>why different rules for relaxing alpha/beta?
>
>b) If iterate.c controls calls to searchroot, why is SearchRoot in turn also
>modifying root_beta ? does that improve the window somehow?
>
>Thank you for your patience and answers !
>
>
>Sanjiv.


/*
  xxxx xxx1 = failed low
  xxxx xx1x = failed high
  1xxx xxxx = done (searched)
  x1xx xxxx = don't search in parallel
*/


That is from 'chess.h' where the structure is defined.  I am interested in
odd cases like a move fails high, then low.  Or low, then high.  Those flags
let me handle those.

Yes.  root-beta is 'global' to handle some specific conditions.  as a new
root_alpha value is found, root-beta is also adjusted where appropriate...



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.