Author: Ed Schröder
Date: 14:34:50 04/08/04
Go up one level in this thread
On April 08, 2004 at 13:36:03, Uri Blass wrote: >On April 08, 2004 at 12:22:15, Ed Schröder wrote: > >>On April 08, 2004 at 09:04:15, Harald Lüßen wrote: >> >>>On April 08, 2004 at 07:10:29, Daniel Shawul wrote: >>> >>>>Hi >>>>Here are some questions >>>> >>>>2.In Ed's paper there are some tricks done at horizon. >>>> trick one if(score - (margin + largest hanging piece) > beta) >>>> don't do quiescence >>>> trick two if(score - 900 > beta) >>>> don't do quiescence >>>> My question is every body does >>>> score=eval() >>>> if(score > beta) >>>> don't do quiescence; >>>> So i don't see how the tricks work? >> >> >>>His alpha is our beta and vice versa. >> >>Really? >> >>If true I need to re-read some papers :) >> >>To clarify, suppose an aspiration search with a 0.50 window and a best move with >>a 0.20 score then going to the next iteration I get a window of: >> >>ALPHA = -0.30 >>BETA = 0.70 >> >>Your comment suggests: >> >>ALPHA = 0.70 >>BETA = -0.30 >> >>Ed >No > > >suppose that we start with position of big advantage for white and you have >alpha=3.00 beta=4.00 > >His point is that the meaning of alpha and beta is different. >Search is a recursive function so alpha=3.00 beta=4.00 turns out to be >alpha=--4.00 beta=-3.00 after a recursive call. > >You try to prune moves before calling search so you may use >alpha=3.00 beta=4.00 when most programmer try to prune moves after calling >search so they have alpha=-4.00 beta=-3.00 Confusion all over here, I call "search" only once. >Your pruning trick when it is white to move is Realize the above definition is ambiguous, crucial: do do you mean before or after "make_move"? >if(score - (margin + largest hanging piece) > 4.00 pawns) > don't do quiescence > >It is translated after calling search to > >if (score+margin+largest hanging piece<-4.00 pawns >don't do qsearch. > >I guess also that your score is not from the same side to move like other >programmers. That could be very well the case, for me ALPHA means the "best_score_so_far" and BETA is the upper limit of the window. I assume the internal organization of my search is different than other programs although the outcome and behavior is the same. In a nutshell: static int ab[64]; // create depth based stack for alpha-beta static int depth; When I am on ply-3 in the search: depth=3; ab[depth] = ALPHA ab[depth-1] = BETA When going one ply deeper in the search (ply-4), I do: depth++; ab[depth]=ab[depth-2]; Then Alpha-Beta pruning: if (ab[depth-1] + score < 0) // no alpha/beta -> do next move ..... prune here ...... Are you still with me? Ed :)
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.