Author: Robert Hyatt
Date: 15:17:19 09/27/04
Go up one level in this thread
On September 25, 2004 at 16:35:05, Stuart Cracraft wrote:
>On September 25, 2004 at 16:02:08, Andrew Platt wrote:
>
>>On September 25, 2004 at 10:30:52, Rick Bischoff wrote:
>>
>>>Hi,
>>>
>>>I am confused about the mate threat extension. I have the following code:
>>>
>>>search ( depth, alpha, beta )
>>>
>>>->check extension
>>>->else pawn extension
>>>
>>>->if depth <= 0 do the queiscent
>>>
>>>->if checkReps return draw
>>>->if insufficnetMaterial return draw
>>>
>>>->Probe the hash table and return if good
>>>
>>>->if not in check and depth>3 and last move was not null and material is ok:
>>>->-> do null move
>>>->-> x = -search(depth - 3, -beta, -beta +1 )
>>>->-> undo null move
>>>->-> if ( x >= beta ) return beta
>>>->-> if ( x < (-MATE+MAXPLY) ) cout << "found mate"
>>>
>>>->normal alpha/beta stuff
>>>
>>>end search
>>>
>>>"found mate" never gets printed out in WAC141 unless I change the null move to a
>>>full width search... Why? Well, I shouldn't say never, but I let it run to ply
>>>9.
>>
>>if (x >= beta) return beta
>>
>>means that you don't return the actual scores, just the cutoff. This is fine
>>until you try to detect threats. Then you need to return the actual scores
>>because only those will have the mate in them.
>>
>>In WAC 141 you should hit a bunch of mate threat extensions on the way to the
>>lowest ply because each time your Rooks take a pawn, and then the bishop, you
>>should trigger one. In my search it still isn't enough to counteract the drop
>>into qsearch where I don't consider checks. I've given up on generating the mate
>>score in a short time right now (I have plenty of other problems!). It's enough
>>that the first few plies in the PV are correct so if it actually hit it, it
>>would find it. Of course that only works here because it turns out that the
>>Queen sacrifice is good more material as well as mate!
>>
>>Andy.
>
>So do you solve WAC 141 in a reasonable amount of time?
>I don't and my code returns all values, does a null move
>with -beta,-alpha, checks if the returning value is
>equal to -MATE+ply+2 to extend (but doesn't extend it if
>already in check), and I return -MATE+ply when in check
>in the main search. In quiescence, I pass back to the main
>search if in check, but I don't search checking moves unless
>they are captures.
>
>Anyway, with the above, WAC 141 is out of reach and no one
>has been able to help it!
If you do mate threat right, you should find this quickly. Here is Crafty on a
single-CPU 2.8ghz PIV:
8-> 1.58 -1.20 1. Kf1 a5 2. Rxh5 gxh5 3. Rxh5 Re1+
4. Kxe1 Nxh5 5. Qg5+ Kf8 6. Qh6+ Kg8
7. Qxh5
9 3.91 -1.20 1. Kf1 a5 2. Rxh5 gxh5 3. Rxh5 Re1+
4. Kxe1 Nxh5 5. Qg5+ Kf8 6. Qh6+ Kg8
7. Qxh5
9 4.38 +1 1. Qxf4!!
9 4.63 +3 1. Qxf4!!
9 5.11 +M 1. Qxf4!!
9 49.31 Mat06 1. Qxf4 Bxf4 2. Rxh5 gxh5 3. Rxh5 Bh6
4. Rxh6 Qh2+ 5. Kxh2 Kf8 6. Rh8#
9-> 49.31 Mat06 1. Qxf4 Bxf4 2. Rxh5 gxh5 3. Rxh5 Bh6
4. Rxh6 Qh2+ 5. Kxh2 Kf8 6. Rh8#
4 secs to find it. 49 secs to produce the mate score.
With mate threat extension disabled (ext/mate=0 command) I see this:
10-> 20.95 -1.31 1. Kf1 Kf8 2. Rxh5 gxh5 3. Rxh5 Re1+
4. Kxe1 Nxh5 5. Qh6+ Ke8 6. Qxh5 Bf4
11 40.48 -1.08 1. Kf1 a5 2. Rxh5 gxh5 3. Rxh5 Re1+
4. Kxe1 Nxh5 5. Qg5+ Kf8 6. Qxh5 Bb4+
7. Kd1 Qd6
11 43.03 +1 1. Qxf4!!
11 43.94 +3 1. Qxf4!!
11 52.35 +M 1. Qxf4!!
11 5:12 Mat06 1. Qxf4 Bxf4 2. Rxh5 gxh5 3. Rxh5 Bh6
4. Rxh6 Qh2+ 5. Kxh2 Kf8 6. Rh8#
11-> 5:12 Mat06 1. Qxf4 Bxf4 2. Rxh5 gxh5 3. Rxh5 Bh6
4. Rxh6 Qh2+ 5. Kxh2 Kf8 6. Rh8#
SO it finds the right move 2 plies quicker, 10X faster, with than without the
mate threat extension...
This with a simple q-search with no checks, no check evasion or anything else..
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.