Author: Uri Blass
Date: 10:28:12 01/11/02
Go up one level in this thread
On January 11, 2002 at 11:44:39, David Rasmussen wrote: >[D]2Q2n2/2R4p/1p1qpp1k/8/3P3P/3B2P1/5PK1/r7 w - - 0 1 > >In the above position, my search tree explodes because of extensions. It takes > >3 minutes and 42 million nodes to finish an 8 ply search. How does your program >do? > >Any good ideas on how to limit extensions in such a position. > >P.S. Solving the position is no problem. It is a simple mate in 5 plies, and is >found very early on at depth 1 or 2 or so. Still, there must be something >unsound about my extensions, or at least room for improvement, when this >position makes the tree explode. > >/David I see no reason to search to depth 8 when there is a mate in 3. My program simply stops to search when it finds the mate in 3 at depth 3 after 18210 nodes. I have other problems in my program I have some bug in my alpha beta code or in my move generator. At least I found that the bug is not in my fail high code. For some reason I have fail high and after it fail low in wac21 and I know that it is not supposed to happen because I currently supposed not to do selective search that is based on alpha or beta in my program. After some investigation I found that I get some plies later in the tree in the following position [D]5rk1/1b3p1p/pp3p1Q/8/1P6/P3nPP1/7P/5BK1 w - - I get alphabeta(40,402,10000)=499 6196 nodes alphabeta(40,403,10000)=403 5944 nodes I tried to get less nodes so I calculated and found alphabeta(40,402,404)=404 nodes 1695 alphabeta(40,403,404)=403 nodes 3956 40 means 4 plies and all the numbers are in multiplies of 10. I do it in order to give more room for extensions or pruning but today I do not use it and I only have extension of 1 ply for checks. I guess that I use some wrong pruning in my alphabeta or my qsearch that is based on evaluation and I will try to investigate it later. It is not the first bug that I discover after implementing the fail high code. previous bugs were: 1)My program extended checks twice in the first ply and the result was that the fail high code made my program slower. I need a long time to understand the reason for the fact that my program is slower. 2)I did not generate the moves again in the root position when I increased the depth. The problem was that My generate move also calculated scores for the order of moves and the scores were not updated. The result was that my program did not know to follow the right pv because the score of the previous pv remained constant so the previous pv was always searched first. Maybe it is better if I do a different function to calculate scores for moves because if I already generate the moves in previous search it is a waste of time to generate them again but it does not happen often so I am not sure if it is a good idea. Uri
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.