Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Question for Hyatt about Alpha/Beta

Author: Vasik Rajlich

Date: 03:06:07 02/06/04

Go up one level in this thread


On February 05, 2004 at 14:33:53, Robert Hyatt wrote:

>On February 05, 2004 at 14:25:24, Anthony Cozzie wrote:
>
>>On February 05, 2004 at 13:31:56, Robert Hyatt wrote:
>>
>>>On February 05, 2004 at 13:03:59, Anthony Cozzie wrote:
>>>
>>>>On February 05, 2004 at 12:47:26, Robert Hyatt wrote:
>>>>
>>>>>On February 05, 2004 at 12:38:20, Anthony Cozzie wrote:
>>>>>
>>>>>>On February 05, 2004 at 12:22:44, Bob Durrett wrote:
>>>>>>
>>>>>>>
>>>>>>>Bob Hyatt:
>>>>>>>
>>>>>>>I was going through the older CCC bulletins to make sure I didn't miss anything
>>>>>>>important and noticed the thread begun by Russell,
>>>>>>>http://www.talkchess.com/forums/1/message.html?345569.  After checking Russell's
>>>>>>>reference, I saw something you wrote cited below.  This made me really curious
>>>>>>>about how the alpha/beta algorithm might be impacted by improvements in the
>>>>>>>position evaluation code.  It seems to me, intuitively, that accurate assessment
>>>>>>>of positional [and other non-material] factors in a position, along with the
>>>>>>>correct assessment of material factors, would give
>>>>>>>values which would change the interpretations of failing alpha or beta tests.
>>>>>>>It seems that this would significantly alter the way searching would proceed.
>>>>>>>
>>>>>>>If this is unclear, I can try to be more detailed if you wish.  [I never claimed
>>>>>>>to be a Pulitzer Prize winning author.]
>>>>>>>
>>>>>>>Bob D.
>>>>>>
>>>>>>Hey, you are starting to realize why it is so hard to write a good chess program
>>>>>>:)
>>>>>>
>>>>>>One of the reasons Crafty gets good search depth is that it keeps a lot of the
>>>>>>piece eval simple.  For example, Rooks in crafty have just 4 patterns: open
>>>>>>file, 7th rank, behind (friendly|enemy) passed pawn. The advantage here is that
>>>>>>the eval is very quantized [0 | 20 | 40].  In Zappa, I do a true (and fairly
>>>>>>complex) mobility calculation.  The advantage is that this catches a lot of
>>>>>>cases that crafty does not, for example a rook lift
>>>>>
>>>>>You didn't look far enough. Crafty handles this but at another place in the
>>>>>evaluation.  Also I do more than "open files"  There are half-open files.  I
>>>>>also catch the rook lift directly as I look in _front_ of the rook to see if I
>>>>>hit any of my own pawns.  If not, I like it.  And if it bears on the opponent's
>>>>>king, I like it even more.
>>>>>
>>>>>I'm not sure where your "only 4 patterns" came from.  Unless you just looked at
>>>>>the comments alone.  IE this:
>>>>>
>>>>>/*
>>>>> ************************************************************
>>>>> *                                                          *
>>>>> *   determine if the rook is on an open file.  if it is,   *
>>>>> *   determine if this rook attacks another friendly rook,  *
>>>>> *   making it difficult to drive the rooks off the file.   *
>>>>> *                                                          *
>>>>> ************************************************************
>>>>> */
>>>>>    trop = 7;
>>>>>    if (!(file_mask[file] & tree->all_pawns)) {
>>>>>      score += ROOK_OPEN_FILE;
>>>>>      trop = FileDistance(square, tree->b_kingsq);
>>>>>    } else {
>>>>>      if (tree->pawn_score.open_files) {
>>>>>        unsigned char rankmvs = AttacksRank(square) >> (56 - (square & 0x38));
>>>>>
>>>>>        if (!(rankmvs & tree->pawn_score.open_files))
>>>>>          score -= ROOK_OPEN_FILE >> 1;
>>>>>      }
>>>>>      if (!(file_mask[file] & WhitePawns)) {
>>>>>        score += ROOK_HALF_OPEN_FILE;
>>>>>        trop = FileDistance(square, tree->b_kingsq);
>>>>>      } else if (!(plus8dir[square] & WhitePawns)) {
>>>>>        trop = FileDistance(square, tree->b_kingsq);
>>>>>      }
>>>>>    }
>>>>>
>>>>>It does a _lot_ more than just open files in that block of code...
>>>>>
>>>>>I don't like rook mobility myself.  I used to do it and it is not very expensive
>>>>>(IE I do bishop mobility at present already).  I think the concept of open files
>>>>>and half-open files is just another way to express mobility, as is rook on the
>>>>>7th.  however I don't blindly go for rook on the 7th as some do, it has to have
>>>>>a reason for being there or it can be pointless.
>>>>
>>>>There's no need to be so defensive.  I haven't read the Crafty source in a while
>>>>as I've pretty much found all your secrets already, so I forgot a few things.
>>>
>>>wasn't trying to be "defensive".  Just "informative".  You had made a statement
>>>that wasn't correct about Crafty, and I was just pointing that out to not leave
>>>a wrong impression.
>>>
>>>
>>>>Note also that you are handling only the kingsafety for rook lift here.  If I
>>>>have WP@B2, WR@B3, BP@B7, BR@B8, Zappa will give white an advantage and crafty
>>>>will not.
>>>
>>>yes, but if the bp is at b6, there isn't much of an advantage.  I prefer to pick
>>>up the "advantage" by seeing the file half-open-up at some point.
>>>
>>>
>>>>
>>>>Anyway, the point remains: You are taking rook mobility, breaking out what you
>>>>feel are 4-5 key cases, and implementing those.  Advantage: quantization and
>>>>speed.  Disadvantage: doesn't catch all cases.  Its simply a tradeoff for the
>>>>programmer to make.
>>>>
>>>>anthony
>>>
>>>I disagree.  your approach doesn't catch all cases either.  The one I gave
>>>previously is one example.  with pawns at f7 g6 and h7, a rook on the g-file is
>>>not a serious threat unless you push your own f and h pawns to try to attack
>>>that g-pawn.  But once it goes away we both notice it is good.  So we both are
>>>going to miss some things, and it is just a matter of picking which you like
>>>best.  I didn't choose to not do mobility for rooks because of the cost.  I
>>>didn't like some of the moves it produces.  IE unnecessary pawn advances, or not
>>>liking rooks side-by-side because they interfere with mobility, etc...
>>>
>>>
>>>I don't think you have to count squares to do adequate mobility.  With today's
>>>search depth, if you have a rook on an open file, most likely you can see deep
>>>enough, once the file gets opened or half-opened on the enemy king, so that you
>>>can get the rook over there within the normal search horizon.
>>>
>>>Other pieces can use mobility better.  Bishops are a good example and I do
>>>mobility for them since it is not an expensive term at all with table lookups
>>>available.  however, I happen to believe that often mobility is a _result_ of
>>>something good happening, not the "cause".
>>>
>>
>>Zappa's mobility is somewhat more complex than just counting squares.
>>
>>anthony
>
>So was the mobility in Cray Blitz, where the "mobility value" for every
>reachable square was computed as well...
>
>however, for rooks in particular, it rarely made any difference, because all the
>old praxims about "rooks on open files" and so forth are just another way of
>expressing mobility, until you see the exceptions.  IE rook on an open E file
>but your opponent has a bishop at e4 supported by pawns at f5 and d5 and you
>have nothing to drive it away...  I do miss those now where I didn't years ago.
>But I have not seen it much of a problem and don't deal with it as of yet...
>

Interesting discussion. One other thing to throw in: it seems to me that a
rook's mobility being hindered by a pawn is more serious than a bishop's
mobility being hindered by a pawn, because it's easier to move a pawn off of a
diagonal (ie just push the pawn) than to move it away from a file. So, it makes
some sense to emphasize rooks on open files (rather than rook mobility), and to
give this a higher value than a bishop on an open diagonal. Ideally, a bishop's
diagonal would be evaluated to see how easy it is for any blocking pawns to
move, because sometimes a bishop can be totally without prospects because of one
pawn.

Also, it doesn't seem super-cheap cheap to get bishop mobility, you need to do a
CountBitboardBits (), while open file is just an "&" operation and a boolean
test.

Vas

>>
>>>>
>>>>>
>>>>>>(R@B3 P@B2 BP@B7) or a rook
>>>>>>on the 8/6th ranks (which can also be powerful).  The disadvantage is that the
>>>>>>eval is much less quantized. [0 | 1 | 2 ... | 40].  This means that move
>>>>>>ordering is worse, and so I search less deeply with mobility on than with
>>>>>>mobility off (not to mention the speed loss).  I believe the depth I lose is
>>>>>>worth Zappa playing a somewhat more natural game, but it is a tradeoff that
>>>>>>everyone has to make for themselves, of course.
>>>>>>
>>>>>>anthony
>>>>>>
>>>>>>
>>>>>>>http://groups.google.com/groups?q=%22The+meaning+of+Alpha+and+Beta%22&hl=en&lr=&ie=UTF-8&selm=a6d9ho%24899%241%40juniper.cis.uab.edu&rnum=1
>>>>>>>
>>>>>>>Referenced by:
>>>>>>>
>>>>>>>http://www.talkchess.com/forums/1/message.html?345569
>>>>>>>
>>>>>>>> An alpha cutoff is what happens when you search the second move,
>>>>>>>>> and you prove that if you play that move, your opponent has a move
>>>>>>>>> he can play that will produce a score less than your "lower bound"
>>>>>>>>> you established for the first move.  There is no need to search
>>>>>>>>> further.
>>>>>>>>>
>>>>>>>>> For example, after that +1 on the first move, you try the second
>>>>>>>>> move and after trying the first move the opponent has in reply to
>>>>>>>>> that move, you discover you _lose_ a pawn.  The score is -1.0...
>>>>>>>>> There is no need to search other opponent moves to produce a
>>>>>>>>> score even lower than -1.00, because you already know this move
>>>>>>>>> is at _least_ -1.00 and possibly worse, while the first move is
>>>>>>>>> +1.00.  You stop searching this move and move on to your third
>>>>>>>>> choice...



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.