Author: Ricardo Gibert
Date: 22:04:28 09/21/99
Go up one level in this thread
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. > > > >> >>> >>>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.