Author: Sune Fischer
Date: 12:59:40 11/11/02
Go up one level in this thread
On November 11, 2002 at 13:04:37, Uri Blass wrote: >On November 11, 2002 at 12:10:55, Andreas Stabel wrote: > >>On November 11, 2002 at 12:04:03, Uri Blass wrote: >> >>>On November 11, 2002 at 10:28:33, Robert Hyatt wrote: >>> >>>>On November 11, 2002 at 01:10:23, Uri Blass wrote: >>>> >>>>>On November 10, 2002 at 23:53:19, Robert Hyatt wrote: >>>>> >>>>>>On November 10, 2002 at 22:38:03, Jeremiah Penery wrote: >>>>>> >>>>>>>On November 10, 2002 at 21:29:43, Robert Hyatt wrote: >>>>>>> >>>>>>>>On November 10, 2002 at 21:15:07, Jim Bumgardner wrote: >>>>>>>> >>>>>>>>>Which of these strategies for "think on opponent's time" makes more sense? >>>>>>>>> >>>>>>>>>A) To only search the top-move from the principle variation. If >>>>>>>>>the opponent makes that move, continue searching, otherwise reset and >>>>>>>>>search again. >>>>>>>> >>>>>>>>This is the _only_ way to do it. I've explained this many times, but it >>>>>>>>is probably time to go it again... >>>>>>> >>>>>>>For the general case. But it shouldn't be hard to find situations where it's >>>>>>>very easy to tell the ponder move is probably wrong. In those cases, it's >>>>>>>obvious, IMO, that switching to a different ponder move would help. >>>>>>> >>>>>>>One possible scenario is when the ponder move keeps failing high - either the >>>>>>>ponder move is wrong, or you ponder some other move and you'll find the >>>>>>>fail-highs again anyway if they play the original ponder move. Otherwise, >>>>>>>you'll have a better chance of pondering on a better move. You could always >>>>>>>save the result of the first ponder search just in case. >>>>>> >>>>>> >>>>>>That is a good point of course. If you get the fail high _before_ using the >>>>>>"target time" then you can safely switch to pondering something else, knowing >>>>>>you will have time to find the "fail high" again, if the opponent makes the >>>>>>expected move. >>>>>> >>>>>>The bad side might be that you don't fail high until you are beyond your target >>>>>>time, so that if you start pondering something else, you might not be able to >>>>>>find the fail high for real if the opponent actually makes that move... >>>>> >>>>>You assume here that you are going to forget the fail high. >>>>> >>>>>You can rememeber the move that you want to play against the expected move in >>>>>case of fail high and continue to search other moves and when the opponent plays >>>>>the expected move you can play the move that you remember in 0 seconds. >>>> >>>>Yes, although I am trying to adhere to the KISS principle here. The above >>>>would work well, but it would introduce additional complexity and the >>>>opportunity for bugs. But it might be worth it too... >>>> >>>>> >>>>>I also believe that the best strategy is not to ponder only on one move but to >>>>>have a lot of threads(for every legal move of the opponent a different thread) >>>>>and to give different priority for different moves. >>>> >>>>How about some math to show how the above is going to be better than pondering >>>>one move that is correct over 50% of the time. I don't see any way to improve >>>>except in special cases such as a terrible fail-high that lets you know your >>>>opponent probably won't play that move... >>> >>>I admit that there is not a big improvement but if you want some math then here >>>is is: >>> >>>What is better? >>> >>>Case A:You ponder the expected move 60% of the cases and ponder another move in >>>40% of the cases >>> >>>case B:In the same 60% of the cases you use 90% of the time for the expected >>>move. >>>In the rest of the 40% of the cases you use 30% of the time for the move that is >>>going to be played. >>> >>>0.6*0.9+0.4*0.3=0.66>0.6 >>> >>> >>>Uri >> >>The math here is wrong - it should be: >>0.6*0.9 + 0.4*0.1*0.3 = 0.54 + 0.012 = 0.0552 > >The math is correct >You cannot change my calculation and decide that my math is wrong. > >I think that you assume that I assume that the program always use 90% of the >time for the move that it expects. > >I did not say it. > >There are 2 kind of moves: > >Moves type A:Moves that the program has the move that is going to be played in >the pv. >Moves type B:Moves that the program does not have the move in the pv. > >I assume that moves type A are 60% of the moves. > >I said that it is possible that the program use in average 90% of the time for >the played move in moves type A and 30% of the time for the played move in moves >type B. > >The point is that moves type A are not random moves and most of them are forced >positionally or tactically so the program can see after a short search that one >move is better than the other moves so it is using 90% of the time for the >expected move. > >The moves type B are not forced moves and in most cases there are 2 or 3 moves >that have the same score or almost the same score so the program can use 30% of >it's time for every one of these moves. > >Uri I think you are both wrong :) But I'm not sure you are trying to calculate here, shouldn't it be the expected ponder success rate? Looks like you are calculating 0.6*0.9+0.4*0.3=0.66>0.6, or: frequency of type A times percentage of search time + .... Whatever that is, it isn't the same. Bob's example was that in more than 50% of the cases the second move in the PV would be a correct guess, hence a ponder success rate of more than 50% (or 0.50). This was only type A moves, ie we assume there is always a move to ponder. We could get the full success rate if we apply a ponder scheme to type B moves also, but I think the question was only about the optimal strategy if there is a move in the PV, otherwise it isn't so clear what to do. -S.
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.