WAC.002 by evaluation?

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

User avatar
michiguel
Posts: 6401
Joined: Thu Mar 09, 2006 8:30 pm
Location: Chicago, Illinois, USA

Re: WAC.002 by evaluation?

Post by michiguel »

Uri Blass wrote:
metax wrote:
Uri Blass wrote:
metax wrote:A common chess endgame rule says "two connected passers on the sixth beat a rook". Is there any program that happens to solve WAC.002 by eval?

[d]8/7p/5k2/5p2/p1p2P2/Pr1pPK2/1P1R3P/8 b - -
The rule is simply wrong and the program that solve WAC.002 by evaluation will also play Rxb2 in the following position after search of 3 plies Rxb2 Rxb2 c3 because 2 connected passers on the 6th beat a rook.

[d]8/7p/5k2/5p2/p1p2P2/Pr1p1KP1/1P1R3P/8 b - - 0 1

Uri
No, because it will see by search that the two connected passers get lost. ;)
It is not going to see it by search if the remaining depth is too small
and if you do not care about cases when the remaining depth is too small then I do not see why do you need to see it by evaluation.

Uri
This is one of the issues I wanted to deal for a long time. Since I saw this post, I've worked on the static evaluation of passed pawns in 6th/7th versus rook. The main goal was to experiment how to tackled complex static evaluation. I guess that I just succeeded, but it was a humongous pain the the rear end.

Gaviota sees Rxb2 in 3 plies, instantaneously, and sticks with it. In the position that Uri posted, Gaviota never considers it. That's good.
Cost: about 500 lines of source code :-(

I am not sure it is bug free either. It was a great challenge...
Since I have done it and it is kind of cool, I may leave it in if I see there are no bugs. But, in terms of efficiency (work/ELO)... oh boy...

Miguel

Code: Select all

setboard 8/7p/5k2/5p2/p1p2P2/Pr1pPK2/1P1R3P/8 b - -
d
+-----------------+
| . . . . . . . . | [Black]
| . . . . . . . p |
| . . . . . k . . |
| . . . . . p . . |    Castling: 
| p . p . . P . . |    ep: -
| P r . p P K . . |
| . P . R . . . P |
| . . . . . . . . |
+-----------------+

analyze
********* Starts iterative deepening, thread = 0
set timer to infinite
        36   1:      0.0    +1.18  Rb8
       179   2:      0.0    +1.15  c3 2.bxc3 Rxc3
       587   3       0.0      :-)  Rxb2
       668   3       0.0      :-)  Rxb2
       884   3:      0.0    +3.26  Rxb2 2.Rxb2 c3 3.Rb7
      2013   4:      0.0    +3.31  Rxb2 2.Rxb2 c3 3.Rb6+ Kf7 4.Rb7+ Kg6
      3021   5       0.0      :-(  
      4082   5       0.0      :-(  
      6910   5:      0.0    +3.12  Rxb2 2.Rxb2 c3 3.Rb6+ Kf7 4.Rb7+ Kg6
                                   5.e4
     14307   6       0.0      :-(  Rxb2
     14485   6       0.0      :-(  
     15639   6       0.0      :-(  Rxb2
     18043   6       0.1      :-(  
     35111   6       0.1    +3.32  Rxb2 2.Rxb2 c3 3.Rb6+ Kf7 4.Rb5 c2
                                   5.Rxf5+ Ke6 6.Rc5
     35175   6:      0.1    +3.32  Rxb2 2.Rxb2 c3 3.Rb6+ Kf7 4.Rb5 c2
                                   5.Rxf5+ Ke6 6.Rc5
    108560   7       0.3    +3.08  Rxb2 2.Rxb2 c3 3.Rb6+ Kf7 4.Rb7+ Ke6
                                   5.Rb6+ Kd7 6.Rb7+ Kc6 7.Rb4 Kc5 8.Rxa4
    111111   7:      0.3    +3.08  Rxb2 2.Rxb2 c3 3.Rb6+ Kf7 4.Rb7+ Ke6
                                   5.Rb6+ Kd7 6.Rb7+ Kc6 7.Rb4 Kc5 8.Rxa4
    284109   8       0.7      :-)  Rxb2
    827414   8       2.0    +4.03  Rxb2 2.Rxb2 c3 3.Rb6+ Ke7 4.Rb7+ Kd6
                                   5.Rb6+ Kc7 6.Rb1 c2 7.Rc1 Kd6 8.Rg1
    835320   8:      2.1    +4.03  Rxb2 2.Rxb2 c3 3.Rb6+ Ke7 4.Rb7+ Kd6
                                   5.Rb6+ Kc7 6.Rb1 c2 7.Rc1 Kd6 8.Rg1
   1369148   9       3.3      :-)  Rxb2
   2135836   9       5.2    +5.20  Rxb2 2.Rxb2 c3 3.Rb6+ Ke7 4.Rb7+ Kd6
                                   5.Rb6+ Kc7 6.Rb4 c2 7.Rc4+ Kb6 8.Kg3 d2
                                   9.Rxc2 d1=Q
   2157168   9:      5.2    +5.20  Rxb2 2.Rxb2 c3 3.Rb6+ Ke7 4.Rb7+ Kd6
                                   5.Rb6+ Kc7 6.Rb4 c2 7.Rc4+ Kb6 8.Kg3 d2
                                   9.Rxc2 d1=Q
   3844641  10       9.2    +5.04  Rxb2 2.Rxb2 c3 3.Rb6+ Ke7 4.Rc6 c2
                                   5.Kf2 Kd7 6.Rc4 d2 7.Rxc2 d1=Q 8.Rc5
                                   Qd2+ 9.Kf3
   3956699  10:      9.5    +5.04  Rxb2 2.Rxb2 c3 3.Rb6+ Ke7 4.Rc6 c2
                                   5.Kf2 Kd7 6.Rc4 d2 7.Rxc2 d1=Q 8.Rc5
                                   Qd2+ 9.Kf3
   8924341  11      21.2    +5.20  Rxb2 2.Rxb2 c3 3.Rb6+ Ke7 4.Rc6 c2
                                   5.Kg3 h5 6.h3 Kd7 7.Rc4 d2 8.Rxc2 d1=Q
   9242213  11:     22.0    +5.20  Rxb2 2.Rxb2 c3 3.Rb6+ Ke7 4.Rc6 c2
                                   5.Kg3 h5 6.h3 Kd7 7.Rc4 d2 8.Rxc2 d1=Q

setboard 8/7p/5k2/5p2/p1p2P2/Pr1p1KP1/1P1R3P/8 b - - 0 1 
d
+-----------------+
| . . . . . . . . | [Black]
| . . . . . . . p |
| . . . . . k . . |
| . . . . . p . . |    Castling: 
| p . p . . P . . |    ep: -
| P r . p . K P . |
| . P . R . . . P |
| . . . . . . . . |
+-----------------+

analyze
********* Starts iterative deepening, thread = 0
set timer to infinite
        42   1:      0.0    +0.99  Rb8
       198   2:      0.0    +1.02  c3 2.bxc3 Rxc3
       793   3:      0.0    +0.96  Rb8 2.Ke3 Re8+ 3.Kd4
      1752   4:      0.0    +0.95  Rb8 2.Ke3 Re8+ 3.Kd4 Re4+ 4.Kc3
      5100   5:      0.0    +0.95  Rb8 2.Ke3 Re8+ 3.Kd4 Re4+ 4.Kc3 h5
      9746   6       0.0    +1.12  Rb8 2.h3 Re8 3.g4 Re4 4.Rd1
     12983   6:      0.0    +1.12  Rb8 2.h3 Re8 3.g4 Re4 4.Rd1
     27341   7       0.1    +1.08  Rb8 2.h3 Rg8 3.Rd1 Re8
     35855   7:      0.1    +1.08  Rb8 2.h3 Rg8 3.Rd1 Re8
     89035   8       0.2    +0.96  Rb8 2.h3 h5 3.Rh2 Re8 4.g4 hxg4+ 5.hxg4
                                   Re4 6.gxf5 Kxf5
    151478   8       0.4    +1.07  Rb7 2.h3 Rd7 3.Ke3 Re7+ 4.Kd4 Re2 5.Rd1
                                   Rc2
    160352   8:      0.4    +1.07  Rb7 2.h3 Rd7 3.Ke3 Re7+ 4.Kd4 Re2 5.Rd1
                                   Rc2
    275088   9       0.7    +1.05  Rb7 2.h3 Re7 3.g4 Kg6 4.Rg2 h6 5.g5 Re4
                                   6.gxh6+ Kxh6
    361596   9:      0.9    +1.05  Rb7 2.h3 Re7 3.g4 Kg6 4.Rg2 h6 5.g5 Re4
                                   6.gxh6+ Kxh6
    621517  10       1.6    +1.10  Rb7 2.h3 h5 3.Rf2 Re7 4.Rg2 Re8 5.g4
                                   hxg4+ 6.hxg4 fxg4+ 7.Rxg4
    787857  10:      2.0    +1.10  Rb7 2.h3 h5 3.Rf2 Re7 4.Rg2 Re8 5.g4
                                   hxg4+ 6.hxg4 fxg4+ 7.Rxg4
   1974085  11       4.9    +1.08  Rb7 2.Rf2 Re7 3.h3 h5 4.g4 hxg4+ 5.hxg4
                                   fxg4+ 6.Kxg4 Re2 7.Kf3 Rxf2+ 8.Kxf2 Ke6
                                   9.Ke3
   4696050  11      11.6    +1.25  Ke6 2.h3 Kd5 3.Ke3 Rb6 4.Rh2 Re6+ 5.Kd2
                                   Kd4 6.g4 Rb6 7.Kd1
   4718442  11:     11.6    +1.25  Ke6 2.h3 Kd5 3.Ke3 Rb6 4.Rh2 Re6+ 5.Kd2
                                   Kd4 6.g4 Rb6 7.Kd1
   6175476  12      15.3    +1.18  Ke6 2.h3 Kd5 3.Ke3 Rb6 4.Kf3 Rh6 5.h4
                                   Re6 6.g4 fxg4+ 7.Kxg4 Rg6+ 8.Kf3 Rf6
   6798218  12:     16.7    +1.18  Ke6 2.h3 Kd5 3.Ke3 Rb6 4.Kf3 Rh6 5.h4
                                   Re6 6.g4 fxg4+ 7.Kxg4 Rg6+ 8.Kf3 Rf6

metax
Posts: 344
Joined: Wed Sep 23, 2009 5:56 pm
Location: Germany

Re: WAC.002 by evaluation?

Post by metax »

michiguel wrote:This is one of the issues I wanted to deal for a long time. Since I saw this post, I've worked on the static evaluation of passed pawns in 6th/7th versus rook. The main goal was to experiment how to tackled complex static evaluation. I guess that I just succeeded, but it was a humongous pain the the rear end.

Gaviota sees Rxb2 in 3 plies, instantaneously, and sticks with it. In the position that Uri posted, Gaviota never considers it. That's good.
Cost: about 500 lines of source code :-(

I am not sure it is bug free either. It was a great challenge...
Since I have done it and it is kind of cool, I may leave it in if I see there are no bugs. But, in terms of efficiency (work/ELO)... oh boy...

Miguel
Could you explain roughly how you achieved this?
User avatar
michiguel
Posts: 6401
Joined: Thu Mar 09, 2006 8:30 pm
Location: Chicago, Illinois, USA

Re: WAC.002 by evaluation?

Post by michiguel »

metax wrote:
michiguel wrote:This is one of the issues I wanted to deal for a long time. Since I saw this post, I've worked on the static evaluation of passed pawns in 6th/7th versus rook. The main goal was to experiment how to tackled complex static evaluation. I guess that I just succeeded, but it was a humongous pain the the rear end.

Gaviota sees Rxb2 in 3 plies, instantaneously, and sticks with it. In the position that Uri posted, Gaviota never considers it. That's good.
Cost: about 500 lines of source code :-(

I am not sure it is bug free either. It was a great challenge...
Since I have done it and it is kind of cool, I may leave it in if I see there are no bugs. But, in terms of efficiency (work/ELO)... oh boy...

Miguel
Could you explain roughly how you achieved this?
I developed some sort of SEE for these cases. The output is -1, 0, 1 (cannot promote, uncertain, unstoppable pawns). Rather than exchanging captures, one side can only move the pair of passed pawns, and the other can move only the rook and king (only towards the first line or behind (R), or towards the pawns (K)), until a position with certainty is reached (for instance, two pawns in 7th in which is their turn is "unstoppable" a position in which the king and the rook blockaded the pawns is "Cannot promote").

Miguel
metax
Posts: 344
Joined: Wed Sep 23, 2009 5:56 pm
Location: Germany

Re: WAC.002 by evaluation?

Post by metax »

michiguel wrote:I developed some sort of SEE for these cases. The output is -1, 0, 1 (cannot promote, uncertain, unstoppable pawns). Rather than exchanging captures, one side can only move the pair of passed pawns, and the other can move only the rook and king (only towards the first line or behind (R), or towards the pawns (K)), until a position with certainty is reached (for instance, two pawns in 7th in which is their turn is "unstoppable" a position in which the king and the rook blockaded the pawns is "Cannot promote").

Miguel
Thanks for explaining... but isn't this extremely expensive in terms of speed?
User avatar
michiguel
Posts: 6401
Joined: Thu Mar 09, 2006 8:30 pm
Location: Chicago, Illinois, USA

Re: WAC.002 by evaluation?

Post by michiguel »

metax wrote:
michiguel wrote:I developed some sort of SEE for these cases. The output is -1, 0, 1 (cannot promote, uncertain, unstoppable pawns). Rather than exchanging captures, one side can only move the pair of passed pawns, and the other can move only the rook and king (only towards the first line or behind (R), or towards the pawns (K)), until a position with certainty is reached (for instance, two pawns in 7th in which is their turn is "unstoppable" a position in which the king and the rook blockaded the pawns is "Cannot promote").

Miguel
Thanks for explaining... but isn't this extremely expensive in terms of speed?
I do not know. I have not tested this thoroughly, but I think it will be ok.
1) this calculation happens only when a position like this is reached, and when that happen, I may want to sacrifice some speed for evaluation accuracy.
2) Though still expensive, It is not done on a "real" board, only 5-6 bitboards are being manipulated. Generally, only one or two "plies" are needed if several well defined static descriptions are included (e.g. two pawns in 7th with its turn is decisive).
3) Without bitboards, this is impossible.

Miguel