On Fri, 2007-01-26 at 15:57 -0600, Nick Apperson wrote: > So I was thinking. I wonder if anyone has written a go engine that > can play using only the time that it takes their opponent to think. > It seems some of your monte carlo programs would be able to do this > decently well. Has anyone tried to see how much it hurts the ranking > of a program? I would estimate that it would lose only 600 ELO = > around 3 doublings of thinking time. That is assuming the engine > spends on *proper average 1/8 the time it has trying the move that the > opponent picked. Proper average I am defining to be: e^(mean(ln(time > spent))). So essentially, the expected ELO of the move picked. Any > thoughts or data?
Lazarus uses the opponents time to think. It does this by assuming that the opponent will play the next move in the principal variation. The prediction accuracy is fairly high on CGOS but I don't have exact numbers. Another idea is to start searching as soon as you make a move, as if you were the opponent. When the opponent finally plays a move, you then can discard the root node and all the siblings of the move the opponent chose. Unfortunately, this doesn't buy that much time except at nodes where the moves are obvious and forced. I came to the conclusion that it's better to just predict the opponents move, play it and then start thinking right away, and if the opponent doesn't do what you predicted you have lost nothing (but neither have you gained anything.) But when you predict correctly you get the full benefit of his time. Right now, Lazarus uses the opponents time to think, but that doesn't change the amount of time it thinks on it's own time. I think this is wrong and it's just a detail I have not yet implemented. I think the proper behavior is to have a fixed "goal time" for the move and play the move as soon as the opponent moves if you have already met that goal time, otherwise continue to think until you've met the goal time. So you might get instant response, or just fairly quick response but if you predict correctly it will always be at least a little benefit. This should be combined with even more aggressive up front time loading (where you spend a lot more time on early moves.) This should be done whether you think on the opponents time or not. Lazarus does save the tree from each search - so there is at least a minor benefit even if you don't predict the opponents move correctly you get to use any nodes that you have generated although this usually doesn't amount to much. So it never resets the tree completely, it just continues to splice forward. - Don > - Nick > _______________________________________________ > computer-go mailing list > computer-go@computer-go.org > http://www.computer-go.org/mailman/listinfo/computer-go/ _______________________________________________ computer-go mailing list computer-go@computer-go.org http://www.computer-go.org/mailman/listinfo/computer-go/