Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Pawn Majorities : some working examples...

Author: Robert Hyatt

Date: 06:57:56 09/22/99

Go up one level in this thread


On September 22, 1999 at 01:04:28, Ricardo Gibert wrote:

>On September 21, 1999 at 09:52:02, Robert Hyatt wrote:
>
>>On September 21, 1999 at 02:23:38, Ricardo Gibert wrote:
>>
>>>On September 20, 1999 at 14:42:27, Robert Hyatt wrote:
>>>
>>>>
>>>>
>>>>OK... I now have some working code.  It is not perfected, by any stretch yet,
>>>>but it works in two pieces, and one of the two pieces is really good, from an
>>>>accuracy point of view.  Here is what I have done:
>>>>
>>>>1.  I have written a piece of code that is very good at enumerating candidate
>>>>passers in a possition.  Nothing fancy except that bitboards help a lot in
>>>>discovering which pawns are candidate passers.  I produce an 8-bit vector for
>>>>each side with a 1 on a file for a candidate passer being present, a 0 if no
>>>>candidate is on that file...
>>>>
>>>>2.  I am using this in a way that is conservative at present, but which works
>>>>pretty well.  If white has a candidate, I compare the 'outsideness' of that
>>>>candidate against real passers and candidate passers for the other side, and
>>>>give a bonus (that is bigger as material comes off) if it has an outside
>>>>candidate passer.
>>>>
>>>>Here are a couple of examples:
>>>>
>>>>       +---+---+---+---+---+---+---+---+
>>>>    8  |   |   |   |   |   |   | *K|   |
>>>>       +---+---+---+---+---+---+---+---+
>>>>    7  | *P| *P|   |   |   | *P| *P| *P|
>>>>       +---+---+---+---+---+---+---+---+
>>>>    6  |   |   |   |   |   |   |   |   |
>>>>       +---+---+---+---+---+---+---+---+
>>>>    5  |   |   |   |   |   |   |   |   |
>>>>       +---+---+---+---+---+---+---+---+
>>>>    4  |   |   |   |   |   |   |   |   |
>>>>       +---+---+---+---+---+---+---+---+
>>>>    3  |   |   |   |   |   |   | P |   |
>>>>       +---+---+---+---+---+---+---+---+
>>>>    2  | P | P | P |   |   |   | P |   |
>>>>       +---+---+---+---+---+---+---+---+
>>>>    1  |   |   |   |   |   |   | K |   |
>>>>       +---+---+---+---+---+---+---+---+
>>>>         a   b   c   d   e   f   g   h
>>>>
>>>>
>>>>(fen  6k1/pp3ppp/8/8/8/6P1/PPP3P1/6K1/ w)
>>>>
>>>>old (16.18 crafty) evaluates this as -36 (black is better) because of
>>>>those two doubled kingside pawns.  new crafty says +.36 because white has
>>>>a potential outside passer on the c file, black can't force a passer without
>>>>the king helping.  Better...
>>>>
>>>>Here is a test of that code, as it is not very well known that two doubled
>>>>pawns can stop a majority, when a duo can't, as in the previous example.
>>>>       +---+---+---+---+---+---+---+---+
>>>>    8  |   |   |   |   |   |   | *K|   |
>>>>       +---+---+---+---+---+---+---+---+
>>>>    7  | *P| *P|   |   |   | *P| *P| *P|
>>>>       +---+---+---+---+---+---+---+---+
>>>>    6  |   |   |   |   |   |   |   |   |
>>>>       +---+---+---+---+---+---+---+---+
>>>>    5  |   |   |   |   |   |   |   |   |
>>>>       +---+---+---+---+---+---+---+---+
>>>>    4  |   |   |   |   |   | *B|   |   |
>>>>       +---+---+---+---+---+---+---+---+
>>>>    3  |   |   |   |   |   |   | N |   |
>>>>       +---+---+---+---+---+---+---+---+
>>>>    2  | P | P | P |   |   | P | P | K |
>>>>       +---+---+---+---+---+---+---+---+
>>>>    1  |   |   |   |   |   |   |   |   |
>>>>       +---+---+---+---+---+---+---+---+
>>>>         a   b   c   d   e   f   g   h
>>>>
>>>>This is the position prior to the last one.  I (as black) played Bxg3.  Old
>>>>crafty promptly plays Kxg3 and now it has to watch out for the passed black
>>>>pawn on the h file (eventually).  new crafty plays fxg3 and black isn't going
>>>>to make any passer.
>>>
>>>Be careful! It makes a difference where the g-pawn is. In the example I gave
>>>earlier (W: Pa3, b2 ,c2 B: Pb5, b7) both sides get a Q with white just ahead of
>>>black at the cost of a pawn. In your example (disregarding the Ks for the
>>>moment), after the move f5 the position is effectively moved up one rank so
>>>black is one rank closer from getting his Q AND white is one rank further away.
>>>White will be several tempi slower then. In this particular example, the move
>>>fxg3 appears to be fine despite this. Kxg3 allows black to get the better of it
>>>due the quality of his candidate (further from the center). I'm too lazy to
>>>figure out the evaluations more precisely. The "branching factor" is too high
>>>for me at this hour. Interesting example though.
>>
>>
>>this is caught separately, as there is code to evaluate whether _any_ passer
>>can 'run' and not be stopped by the opposing king...
>>
>>
>>
>>>
>>>>
>>>>How this is going to work in games is anybody's guess...  the outside passed
>>>>pawn code has pretty well stood the test of time, this is just taking in one
>>>>level more abstract.
>>>>
>>>>More after I run it a while to see how it behaves.  BTW, as I mentioned, this
>>>>has not slowed me down one bit.  In fact, in adding this, I consolidated several
>>>>flags into one pawn hash entry to make room for the two new bitmaps (8 bits
>>>>each) and actually the new code is a bit faster than the old (without this
>>>>majority stuff)...
>>>>
>>>>If you have a position you'd like to see it evaluate, let me know.  Best kinds
>>>>are those that don't need a search, so we can see what it understands or doesn't
>>>>understand with pure evaluation.
>>>>
>>>>Maybe its endgame strength will increase a little more with this.  It certainly
>>>>seems reasonable at present to assume so...
>>>
>>>How does Crafty cope with: 5k2/8/pppppppp/8/PPPPPPPP/8/8/5K2 w - - 0 0
>>>Which move by white does Crafty examine first? A human can find the best first
>>>move without "calculating" if he/she knows his stuff. A very instructive
>>>position though maybe not so practical ;-)
>>
>>
>>this is based on the 'sneaker' from fine's book I believe.  IE you are looking
>>for b5, and by sacrificing a pawn, white gets a passer.  However in this
>>position it doesn't seem to work and the evaluation I have done doesn't worry
>>about such positions at all.  I am really only trying to recognize an off-side
>>majority that will turn into a distant passed pawn and win the game..
>>
>
>Eventually b5. The key move is d5 which works. The way to "picture" the position
>is to remove the e-pawns from the board. With the 4 vs 4, to obtain the Leftmost
>passer, action is initiated on the right. The leftmost passer will then be the
>b-pawn. With b5 you are effectively "picturing" the position with the d-pawns
>removed, then the b5 move is the way to obtain a passer in 3 vs 3. Leftmost
>passer is then determined by the defender and of course he will choose rightmost
>passer, which will be the c-pawn. Concrete variations will illustrate all this
>better:
>
>1 d5 cxd5 2 a5 bxa5 3 b5
>Only now. The leftmost passer will be the b-pawn. At the moment the pawn leaves
>the black K "outside the square of the pawn", so black has no time for anything
>else. This is VERY important as will be seen later.
>
>3...axb5 4 cxb5 Ke7 5 b6 Kd7 6 b7 Kc7
>Advancing the pawn to the 7th sets up a tempo gaining trick, which is seen
>often. Remember to "picture" the position with the e-pawns removed. Now is the
>time to activate the 3 vs 3 on the k-side. Note that 7 b8Q is a mistake here.
>
>7 g5 fxg5 8 h5 gxh5 9 f5 exf5 10 exf5 a4
>Will black now Q with check?
>
>11 f6 a3 12 f7 a2 13 b8Q Kxb8 14 f8Q
>No. It is white who Qs with check and he wins.
>
>1 b5? cxb5 2 a5? bxa5 3 c5 dxc5 4 dxc5
>A passed c-pawn rather than a passed b-pawn. VERY important. Here black is
>already "in the square of the pawn", so he gets an extra move...
>
>4...a4 5 c6 Ke8! 6 c7 Kd7 7 e5 a3 8 ef6 a2
>And wins, since white is a tempo short.
>
>Now things should be clear why d5 would be the first move a strong player would
>look at. Naturally, he wants to form the leftmost passer and (s)he knows (s)he
>can make the b-pawn the one by "picturing" the position with the e-pawns
>removed. Then, by experience, (s)he knows that to form the leftmost passer,
>(s)he must initiate action on right (a rule of thumb for 4 vs 4), hence d5. Of
>course, it would be crazy to play the move "blind".
>
>As I noted, this is NOT a practical position. The particular 4 vs 4 situation
>that arises in the above position is pretty rare (forming a passed pawn from a
>"quart-grip" is more common W: Pa5, b4, c4, d5; B: Pa6, b7, c7, d6) and it would
>be pointless to include it in a program unless you can figure out a way "to do
>it for free". All the same, the position is instructive.
>
>>


Right.. what I meant by "appears to not work here" was that the 'first-level'
evaluation (assuming your code handles a 'sneaker') doesn't work.  This is
similar to what I am trying to do at present.  My outside (distant) passed pawn
code has worked well for years.  But it didn't recognize the outside passer
until it 'happened'.  Now it is recognizing them before they truly exist.

in your case, you want code that recognizes a sneaker, and then you want to
add to it to recognize a 'candidate sneaker'.  Similar ideas.  And it might be
interesting to do this at some point.  However, a 'sneaker' plays a far less
frequent deciding role in games than does an outside passer or candidate
outside passer.  But I hope to get 'em all right one day...  :)




>>
>>
>>>
>>>>
>>>>Bob



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.