I'd be more than happy to work with you and the other members of your group. I'm getting close to wrapping up a restructuring of my bot that allows easily swapping out evaluation methods and search techniques.
As an example, here's the code that does a few basic MC searches: 11 static if (searchMethod == "pureMC" || searchMethod == "UCB"){ 12 alias node!(gameSource, binomial).onePly moveData; 13 alias onePlySearcher!(gameSource, moveData) searchBase; 14 } 15 else static if (searchMethod == "UCT"){ 16 alias node!(gameSource, binomial).multiPly moveData; 17 alias multiPlySearcher!(gameSource, moveData) searchBase; 18 } 19 else 20 static assert(0, "Don't know what kind of search base to use for search method '" ~ searchBase ~ "'"); ... 65 class searcher : searchBase{ 66 this(int nThreads){ super(nThreads); } 67 override int pickMoveForPlayout(moveData searchNode, ref Random gen){ 68 static if (searchMethod == "pureMC") 69 return moveSelectionMethods.pickRandomMove(searchNode, gen); 70 else static if (searchMethod == "UCB" || searchMethod == "UCT") 71 return moveSelectionMethods.pickHighestConfidenceBound!("sqrt(log(searchNode.simulations+1))")(searchNode, gen); 72 } 73 override int pickMoveForReal(moveData searchNode, ref Random gen){ 74 static if (searchMethod == "pureMC") 75 return moveSelectionMethods.pickMaxValue(searchNode, gen); 76 else static if (searchMethod == "UCB" || searchMethod == "UCT") 77 return moveSelectionMethods.pickMostVisited(searchNode, gen); 78 } 79 } The prior version of my bot included alpha-beta as an option, and there's no reason for me to not do that again with this version. I won't make the alpha-beta multi-thread capable without significant help though (I don't know of any simple techniques to do so). On Tue, Feb 17, 2009 at 12:27 PM, George Dahl <george.d...@gmail.com> wrote: > At the moment I (and another member of my group) are doing research on > applying machine learning to constructing a static evaluator for Go > positions (generally by predicting the final ownership of each point > on the board and then using this to estimate a probability of > winning). We are looking for someone who might be willing to help us > build a decent tree search bot that can have its static evaluator > easily swapped out so we can create systems that actually play over > GTP. As much as we try to find quantitative measures for how well our > static evaluators work, the only real test is to build them into a > bot. > > Also, if anyone knows of an open source simple tree search bot > (perhaps alpha-beta or something almost chess like) for Go, we might > be able to modify it ourselves. > > The expertise of my colleague and I is in machine learning, not in > tree search (although if worst comes to worst I will write my own > simple alpha-beta searcher). We would be eager to work together with > someone on this list to try and create a competitive bot. We might at > some point create a randomized evaluator that returns win or loss > nondeterministically for a position instead of a deterministic score, > so an ideal collaborator would also have some experience with > implementing monte carlo tree search (we could replace playouts with > our evaluator to some extent perhaps). But more important is > traditional, chess-like searching algorithms. > > If anyone is interested in working with us on this, please let me > know! We have a prototype static evaluator complete that is producing > sane board ownership maps, but we will hopefully have many even better > ones soon. > > - George > _______________________________________________ > 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/