On Mon, Nov 12, 2007 at 05:31:11PM +0100, Petr Baudis wrote:
> > 
> > I may be wrong, but I suspect most of bots specify the total number of
> > simulations to play, not per move candidate. Thus, your '1000' should be
> > compared against a '81000' in the beginning of the game. That sounds like an
> > overly large number to me.
> 
> Oh! I must have misunderstood the Monte Carlo algorithm description in
> that case.

It could also be me who is wrong! I am just an amateur hanging at the fringe
of the computer go world, programming small experiments with go when I am not
too tired from my daily programming job...

> I intentially tried to come up with the simplest MonteCarlo-like
> algorithm possible - it is supposed to be an example engine, after all.
> Are there other possible algorithms for the MonteCarlo approach?
> (Apart of UCT; that's the next step.)

There is the "all moves as first" (AMAF), that counts a win or loss not only
to the move that started the random playout, but to every move that was
played in that playout.  Somewhat weaker, they say, but gets good results
quicker (in a smaller number of simulations).

> I have had it play games on KGS over the day but I still don't have much
> idea about its strength. I would say maybe around 15k, but mostly too
> strong people play it and the weaker ones escape or undo (I have
> disallowed that now).

Why don't you play it on cgos, that is where most go programs meet? 
http://cgos.boardspace.net/

> It used to be nice code; as I desperately tried to optimize it, the code
> got somewhat uglier in some parts. (I got it from initial 650 games per
> second to 2500 gps, though!) You might not like the foreach macros. ;-)

I have to live with such macros in the libego code as well. As long as I
don't have to use them everywhere in my own code, I don't mind. And as long
as there are decent interfaces to the functions, I don't really care how ugly
the insides are coded.

> The framework and the example engines are MIT-licensed (almost public
> domain); I believe this is just something that noone should have to
> reimplement yet another time, no matter how evil they are. If I get some
> really well-performing engine built on top of it, I might license that
> one under GPL or keep the code for myself, depending how evil *I* will
> feel.

GPL is fine with me. I only want to be able to make my experiments and show
the world how I did it, in case I get some interesting results.

> Since I have a nice number of my university department machines
> available at night, I'm currently working on support for low-level
> parallelization over many hosts in the infrastructure. I wonder if I can
> dig out shells on at least 81 machines... ;-)

Interesting. But since those are not going to be equally powerful, nor
equally close to your master machine, I suspect there could be a more
efficient way to distribute the job among them, than just giving one
candidate move to each. Why not let each of them try all possible moves, and
report their results back after a given time. Simply sum up the results, and
choose the best. That way you can use as many or as few machines as you
happen to have at hand, and the fast ones don't need to wait for the slower
ones. But I think MC is so fast that this will not pay off. I seem to recall
that the quality of play does not improve much over 5000 play-outs, anyway.

-H

-- 
Heikki Levanto   "In Murphy We Turst"     heikki (at) lsd (dot) dk

_______________________________________________
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Reply via email to