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 <[email protected]> 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
> [email protected]
> http://www.computer-go.org/mailman/listinfo/computer-go/
>
_______________________________________________
computer-go mailing list
[email protected]
http://www.computer-go.org/mailman/listinfo/computer-go/