Computer Chess Club Archives




Subject: Re: Question about static exchange evaluation

Author: Larry Coon

Date: 13:29:20 11/12/98

Go up one level in this thread

On November 12, 1998 at 14:34:16, Robert Hyatt wrote:

>your approach is a complicated way of thinking about it, but it
>ought to work.

I wouldn't want to do things the easy way...  :-)

>An easier way is to simply play out the captures
>and save the material score after each one, just as you suggested,
>until one side can't make a capture.  Then you simply back up
>thru this list to see what the material score before the capture
>and after the capture is...

In implementation I'd probably play through them, as you
said, since I already have code to *make* moves, and would
otherwise have to worry about things like discovered checks.
But if you always play through the entire sequence, do you
lose the opportunity to cut off the search in the way I
suggested, and thus save time?  Or is the gain not worth
the effort?

>but the score after the capture is
>the score that happens at the end of the sequence, or somewhere
>along the way... here is a simple bit of code:
>  next_capture--;
>  if(next_capture&1) sign=-1;
>  else sign=1;
>  while (next_capture) {
>    if (sign < 0) {
>      if(swap_list[next_capture] <= swap_list[next_capture-1])
>         swap_list[next_capture-1]=swap_list[next_capture];
>    }
>    else {
>      if(swap_list[next_capture] >= swap_list[next_capture-1])
>       swap_list[next_capture-1]=swap_list[next_capture];
>    }
>    next_capture--;
>    sign=-sign;
>  }
>next_capture tells me how many entries are in swap_list...  notice that
>at each step along the way, I compare the current to the next entry and
>if the next is "better" from my point of view, I back this up to the
>previous entry.. then the side on there can choose to accept my value,
>or the value he would have if he chooses to not make a capture at all
>and stand pat...
>Pretty simple idea, pretty difficult to explain it.

No kidding!  That one took some walkthroughs with pencil
& paper....

>The above can be
>written a bit shorter because the two comparisons can be done like we
>do with negamax... but this one is probably easier to understand...

BTW, I always seem to make a mistake when I try to type
in a position from my head.  I really should write them
down on paper first.  I said:
     1kq5/3n2p1/5p2/8/6N1/5R2/5RK1 w
I meant:
     1kq5/8/3n2p1/5p2/8/6N1/5R2/5RK1 w

Another question: How does SEE handle cases where the series
of exchanges has multiple branches?  Maybe I'd better give an
example (I'll write it down first):
      1k6/8/3nq1p1/4np2/8/6N1/5R1Q/4RK2 w

This is a slight modification of my first position.  Now
when white does NxP, he opens up the h2-e5 diagonal for
the queen, so white now attacks e5 twice, and the combinaion
now continues at e5 rather than f5.  A way of solving it
would be to generate the captures each step of the way and
do a tree search through them, but that seems more like a
selective extension than a static evaluation.  In fact, it
even seems to contradict the name *static* exchange
evaluation.  Does a static evaluation, by its very definition,
miss this kind of combination?

Thanks for the response,

Larry Coon

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.