Author: Tord Romstad
Date: 00:46:16 10/04/03
Go up one level in this thread
Hello, Uri! I think it would be better to ask Sergei these questions -- after all he has much more experience with this extension than I have. I give you some answers and comments below, but I'm not sure they are worth much. On October 03, 2003 at 12:03:49, Uri Blass wrote: > >I can detect every big threat by adding a special search after making null move. > >For example if I like to detect threats of at least 2.2 pawns I can do >val=-alphabeta(depth-4,-beta+219,-beta+220,...) > >if (val<=beta-220) >threatmove[ply-1]=1; >//ply-1 because I still did not undo the null move. > > >I understood that you use the botvinik extension only after big threats so how >do you detect big threats? > >Do you decide to detect only part of the threats or do you do additional search >to detect all of them? In general, I don't see any reason to keep any secrets about how my program works, but there is one exception: In cases when I use an idea I have recieved in private e-mail from another engine author, and I am not sure the author wants the idea to be public, I naturally don't want to reveal it. Unfortunately my precise definition of "sufficiently serious threats" is based on such an idea. At least I can tell you that I don't do anything similar to your pseudo-code above. Because I am using MTD(f), I am forced to avoid all search extensions, reductions, or forward pruning tricks based on the values of alpha and beta. All such tricks give me search instabilities which are so huge that they would scare even you. :-) But the short answer is that I don't always find a sufficiently big threat to trigger the extension, even when such a threat exists. In this respect, my implementation of the Botvinnik-Markoff extension is imperfect. It happens that I don't extend in positions which should have been extended (but this is probably much better than extending in too many positions, of course). >Another question is about your order of moves. >Do you start with the threat move in case of a big threat or do you start with >good captures? After a null move, I search moves with the same target as the previous threat move (if such a move exists, of course) directly after the move from the hash table, and before good captures. I haven't experimented much with this yet, though. It is likely that I will need much fine-tuning before my implementation is anywhere near optimal. So far, I have just added a few simple lines of code without thinking much, and played a few test matches. This makes me even more optimistic regarding the potential of the idea. When even a quick and dirty implementation is good enough to beat a version without the extension by 111.5-88.5, it is likely that a fine-tuned implementation would perform extremely well. Tord
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.