|
DocumentationSearch TechniqueJujube uses a Minimax search algorithm with Alpha-Beta pruning. Jujube also uses a dynamic max depth search. When Jujube is called to make a move, the number of possible moves are counted and a maximum depth is determined. This help to take advantage of the decreasing number of possible moves as the game progresses. Thus Jujube can search deeper and still not take to much time.HeuristicsThe following heuristics are used in determining the "goodness" of a move:Percentage of Territory: Jujube's total number of intersections divided by the number of all occupied intersections. Number of Live Intersections: The number of Jujube's live intersections subtracted by the number of the humans' live intersections. Also each move never take away the liveness of a group of Jujube's intersections. Number of Eyes: The number of Jujube's eyes (intersections surrounded by Jujube ) subtracted by the number of the humans' eyes. Each of the above heuristics are used with the following weights: 1 for Percentage of Territory, 2 for Number of Live Intersections and 3 for Number of Eyes. Having larger weights on liveness and eyes help Jujube to focus on these at the beginning of the game, and always seems to pay off in the end. I have experimented with many different heuristics but the above mentioned seems to work the best. I have left a few notable heuristics commented out in the code (Check the Eval function). |