Author: Robert Hyatt
Date: 15:10:11 07/27/04
Go up one level in this thread
On July 27, 2004 at 16:53:17, Uri Blass wrote: >On July 27, 2004 at 16:01:09, Robert Hyatt wrote: > >>On July 27, 2004 at 15:25:50, Uri Blass wrote: >> >>>On July 27, 2004 at 13:26:54, Robert Hyatt wrote: >>> >>>>On July 27, 2004 at 12:42:42, Uri Blass wrote: >>>> >>>>>On July 27, 2004 at 11:11:10, Robert Hyatt wrote: >>>>> >>>>>>On July 27, 2004 at 03:18:50, Sune Fischer wrote: >>>>>> >>>>>>>On July 25, 2004 at 22:01:31, Robert Hyatt wrote: >>>>>>> >>>>>>>>Bad idea. Start the next iteration even if you don't think you will have time >>>>>>>>to finish it. You might fail low. Wouldn't that be nice to know? :) >>>>>>> >>>>>>>This may or may not be a good idea. >>>>>>> >>>>>>>I think if it is a good idea, then you should always try and search the next >>>>>>>iteration for a short time to see if you get a quick fail-low. >>>>>>> >>>>>>>On the other hand, if it is a bad idea it is better to save the time that will >>>>>>>probably be wasted anyway. >>>>>>> >>>>>>>From what I can tell you propose to do a mixture, i.e. to use extra time if the >>>>>>>time manager tells you to? >>>>>>> >>>>>>>I really doubt this is the best way, because it will be extremely random when >>>>>>>you get to begin the next ply. >>>>>> >>>>>>No idea what that means. I set a target time. If I have not used that much >>>>>>time, I keep searching. Whether that means starting a new iteration or >>>>>>continuing on the current iteration. >>>>>> >>>>>>When the target time is reached, I set a flag that says "do not search another >>>>>>root move, but don't stop until either the current root move has been searched >>>>>>or 2x the time limit has been used." This does not apply if the root move being >>>>>>searched is the first one in the list... >>>>> >>>>>Basically there are 2 cases to consider. >>>>>case 1:you did not expect the opponent move correctly. >>>>>case 2:You expected the opponent move correctly. >>>> >>>>I completely ignore this. My only purpose for "pondering" is to save time so >>>>that I have more later when I need it. >>> >>>I think that it is wrong to ignore it because the situation is not the same. >>> >>>suppose that you have 2 minutes to finish the game when the opponent played fast >>>in previous moves and have 20 minutes to finish the game >>> >>>Suppose also that the opponent used 2 minutes for the last move. >>> >>>If you pondered the correct move you can use more than 2 minutes without losing >>>on time(you count in that case also the time that you used in the opponent time >>>otherwise you can never reply immediatly) and there may be cases when you want >>>to do it(for example after a big fail low when you hope to find a better move). >> >>I don't understand. When I am "pondering" I have no "time limit" to deal with. >>The time limit is set when my opponent actually moves and my clock starts. I >>will generally "move instantly" in such a case where I have a small time target >>but used a lot of time waiting on my opponent... > >Suppose that it is game in 30 minutes without increasment to do things more >simple. > >If I understand correctly you simply use the following factors to decide if to >play immediatly. > >1)target time that is based on the time that you have to finish the game. Correct... >2)time used that is based on the time that you started the search(if you >pondered correctly it is a positive number and if you pondered wrong it is 0) No. It is zero for either case. IE my "ponder start time" is the instant I start pondering. My non-ponder-start-time is the instant I start searching. My time limit will either be ponder-start-time + time limit, or non-ponder-start-time + time limit. IE when I ponder and use my target, I might actually use zero clock time. With a non-ponder search I always burn time off of my clock. But here is an easier-to-visualize explanation: I set a target time of 100 seconds and start pondering. My opponent makes a different move. I re-start the search from the right position, and I'll burn 100 seconds off my clock, then make the move. I set a target time of 100 seconds and start pondering. My opponent makes the right move after 150 seconds. Since I have searched for > my target time, I move instantly and save that 100 seconds to use later if needed. I set a target time of 100 seconds and start pondering. My opponent makes the right move after 50 seconds. I continue searching for another 50 seconds to use my total 100 second time limit, but I only burn 50 seconds off the real chess clock. I save the other 50 seconds for use when needed later in the game. >3)state of searching(for example if you search the first move or not the first >move). If I am hung on the first move, _and_ I have already pondered for more than my target time limit, I move instantly. If I am on other than the first move, and have already pondered for more than my target time limit, I require that all currently "active" root moves be completed (ie with a single-thread search I am busy on one root move and I want to finish it before stopping to be sure I am not about to change to this as the best move.) >4)maximal time that you have to finish the search(You may use more than twice >the target time in case of fail low and without decision of some maximal time >you may lose on time). I have an absolute "drop-dead" time limit to avoid losing on time. I can use up to 7X the normal time limit if the score has dropped significantly, to try to find a better move that doesn't lose. > >The question is how you decide about the value of target time and maximal time >when you start to ponder. I do it exactly as I do when I start a search after the opponent types in a move. The only difference is that here I am "guessing" his move and pondering on that position, and while waiting on him to make a move I don't do any time checks at all since my clock is not running. > >If they are based only on the time that you have on the clock then the problem >is that your rules may force you to play immediatly even in cases that you have >time on the clock. > I will only play immediately if the score is OK, I have searched as long as I had intended, and my opponent has played a move. Exceptions for stopping the search when a forced mate is found are used of course. >Maybe you use the time on the clock and add the pondering time that you used to >ponder the correct move to decide about the target time and the maximal time but >in that case you have something different when you pondered correctly like >different target time and different maximal time. No. The calculation for target time limit is _identical_ for pondering and non-pondering searches. > > > >I also think that the question if you pondered the correct move should be >relevant for different reasons. > >There may be a situation when you pondered for a long time and have a fail high >that may be wrong fail high and you do not fully trust it(if the opponent is a >computer it may use the long time because of fail low so it may be logical to >check it). > >What do you do? I trust fail highs as they are correct. Yes another iteration might show it is wrong, due to some sort of horizon effect. But you can't search an extra iteration for each move... Yes if I fail high, it might make sense to go try another move for the opponent, remembering the fail-high move in case he actually plays the predicted move. I don't see this happen enough to worry about it. There are other tricks that I do do. For example, when in book, I find the set of book moves, remove them from the set of legal root moves, do a search to find the best non-book move for the opponent, then I ponder that, knowing I already have a book move for each of the positions I just culled from the root move list. This often gets me into a "ponder cycle" where I am correctly predicting my opponent's moves and saving all the time. >You can decide that you already used more than twice of the target time so you >will not search more but often wrong fail high are detected relatively fast so I >think that if the fail high was not detected as wrong fail high you may decide >that it is better to continue to search and if you did not ponder the correct >move you could never use long time in the first place to get the fail high. > >Uri That is one area of weakness, but the complexity doesn't appear to be worth it based on ICC games. IE it needs to be something that happens relatively often and needs to be something that might have changed the game outcome, to be worthwhile.
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.