Author: Tim Foden
Date: 07:58:11 09/19/01
Go up one level in this thread
On September 19, 2001 at 10:32:25, Dieter Buerssner wrote: >On September 19, 2001 at 03:45:56, Tim Foden wrote: > >>Here are the mates GLC215 finds on the test suite (at 10s per position): > >I rerun the test with 3 minutes. I find mostly the same. > >> 6k1/1pp2p2/p2p2q1/2PPb3/4r3/Pr4PK/2R5/2Q2NR1 b - - bm Rh4+; id "ECM.1179"; >> 7 3.78 +Mate06 2624651 Rh4+ Kxh4 Qh7+ Qh6 Qxh6+ Kg4 f5+ Kxf5 Qh5+ Ke6 Qf7# >> {ht} > > 7074551 28.672 Mat07 7t 1...Rh4+ 2.Kxh4 Qh7+ 3.Kg5 f6+ 4.Kg4 f5+ 5.Kg5 > Kg7 6.Nh2 Qh6+ 7.Kxf5H Qg6#H {-490} > > >All the others agree in the first move and the score, however Yace needs often >more time. > >Additionally: >r4rk1/1bq2ppp/p1p1p3/2b1P1B1/3p2Q1/3B4/PPP2PPP/R3R1K1 w - - bm Bxh7+; id >"ECM.1597"; > > 2616001 14.198 Mat08 8t 1.Bxh7+ Kxh7 2.Bf6 gxf6 3.Qh4+ Kg6 4.Qxf6+ Kh7 > 5.Re4 Qxe5 6.Rh4+ Qh5 7.Rxh5+H Kg8H 8.Rh8#H > {381} > >The "H" at the end of the moves means, that the moves were picked from the hash >table at display time, and can be different than at search time. Here, they look >correct. > >From you posts, I have seen, that GLC is really good at solving mates (I mean >especially the Leonid positions, where Yace is often chanceless.) Do you have >any special trick, that you want to share? :-) I guess it is a combination of these things: 1. Search extensions. I don't restrict them in special way. They are just restricted to a maximum of 1 ply in each node. 2. Qsearch depth is restricted. Otherwise some of Leonid's positions simply explode. if( -depth >= max(4 * PLY, m_currentDepth * PLY) ) { #ifdef DEBUG_SEARCH WriteDebug( ply, _T("q %d / qdepth %d\n"), ply, currentEval ); #endif // DEBUG_SEARCH return currentEval; } 3. (this one may be new?) Cuts in the search if alpha or beta are in the mate range, and the current ply is too deep. e.g.: // can't find better checkmates in more plies! if( alpha >= evalCheckmate - ply ) { #ifdef DEBUG_SEARCH WriteDebug( ply, _T("s %d / deep %d\n"), ply, alpha ); #endif return alpha; } else if( beta <= -evalCheckmate + ply ) { #ifdef DEBUG_SEARCH WriteDebug( ply, _T("s %d / deep %d\n"), ply, beta ); #endif return beta; } Cheers, Tim.
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.