[computer-go] Monte Carlo and refutation

2006-10-30 Thread Peter Drake
I'm running into a problem where my Monte Carlo program is very slow  
to acknowledge that its favorite move has a strong counter.
Part of the problem is that the value of a move is based on how many  
of the runs through that move have succeeded. If there were a lot of  
them before the correct reply was discovered, the move has  
considerable "inertia" and it takes time to recover.


Has anyone tried only counting the most recent games through a move  
(say, the last 100), rather than the entire history?


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/



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


Re: [computer-go] Monte Carlo and refutation

2006-10-30 Thread Peter Drake

On Oct 30, 2006, at 7:51 PM, Don Dailey wrote:


On Mon, 2006-10-30 at 19:34 -0800, Peter Drake wrote:

I'm running into a problem where my Monte Carlo program is very slow
to acknowledge that its favorite move has a strong counter.
Part of the problem is that the value of a move is based on how many
of the runs through that move have succeeded. If there were a lot of
them before the correct reply was discovered, the move has
considerable "inertia" and it takes time to recover.


The inertia effect is minor, once it finds the right move it tends to
quickly recover.


I'm getting a rather severe effect. Specifically, if the move in  
question has led to wins for hundreds of thousands of games, it takes  
a similar amount of time to get its win rate back down.


Has anyone else had experience with this?

The reason this works so well is that you are taking very large  
samples,

100 samples wouldn't begin to be enough.


Just a number I pulled out of my hat.

A rationale (rationalization?), though, would be that since the most  
recent games were played with the most information, they're the most  
reliable.



If you want to experiment, the best way to solve this problem in my
opinion is to emphasize the later moves more than the early moves  
but in
a very smooth way.  The way I did this was to hit each move I  
encounter

as well as it's siblings, with a "degrade factor".   I multiply the
scores and the moves by the same constant.  Something very close to  
1.0

such as 0.9.

You have to use floating point values to do this.  Consider how this
works - if you play 100 games and win half of them,  with my method it
matters which ones you win.   With the normal method it doesn't  
matter.

With my method you will score much higher if you win more of the games
towards the end.  Conversely, if this move is refuted and you lose  
most

of the later games, your score will drop much more quickly.


That sounds reasonable. Another thought is to keep a score for each  
node that is incremented when the player wins and decremented when  
the player loses, but within some bounds (say, +/- 100). The only way  
to have a high positive score is to have won many recent games.


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/








Has anyone tried only counting the most recent games through a move
(say, the last 100), rather than the entire history?

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/



___
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/

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


[computer-go] Monte Carlo challenge: ladders

2006-11-02 Thread Peter Drake
To those of you with Monte Carlo programs:Consider this board configuration:...ww..wBBw..wBBw..wB I believe black's best move is to play in the center and escape via the broken ladder.1) Is this true? (This is a Go-playing question.)2) Can your program find this move (and decide that it's not a good move if the ladder-breaker is missing)?3) If so, how many runs does it take?4) With fewer runs, what does the program do? If there is no ladder breaker, does the program think the ladder works until it has read it to the end?I'm having a devil of a time getting my program to solve this one, and I'm wondering if I just picked an extremely hard problem.Peter DrakeAssistant Professor of Computer ScienceLewis & Clark Collegehttp://www.lclark.edu/~drake/ ___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

[computer-go] UCT

2006-11-03 Thread Peter Drake
I've decided to bite the bullet and implement UCT in Orego, since (a)  
everyone else appears to be using it and (b) not being a  
statistician, improving on this is probably not where I'm likely to  
make a contribution.


Here's my understanding of UCT. It is an algorithm for choosing the  
best move from a given parent node. Let


p = # of runs through parent node
r = # of runs through move in question
w = # of wins through move in question

UCT proposes that we choose the node with the highest sum

average + uncertainty

where

average = w/r

and

uncertainty = sqrt(2 * logn(p) / r)

Is this correct? Are there any things to watch out for?

Also, are people pruning any move for which (average + uncertainty)  
is less than the (average - uncertainty) of some other move?


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/



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


Re: [computer-go] UCT

2006-11-03 Thread Peter Drake

On Nov 3, 2006, at 8:10 AM, Rémi Coulom wrote:

You can try multiplying uncertainty by a well-chosen constant  
value. This way, you can tune how selective your search is. I found  
that using a constant < 1 improves the search on 9x9 for Crazy  
Stone (I use 1/sqrt(10), if I recall correctly). I wonder what is  
the experience of other UCT programmers, by the way.


Whee, parameter tweaking!  :-)

Do you have some reason for choosing this value, or did it just work  
well in practice?


Also, are people pruning any move for which (average +  
uncertainty) is less than the (average - uncertainty) of some  
other move?
I am not sure what you mean. In UCT, you only search the move that  
has the highest average + uncertainty, and you don't search any  
other at all.


By "prune" I mean "remove from the stored tree", making the memory  
used on that branch available for something else.


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/


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


Re: [computer-go] UCT

2006-11-03 Thread Peter Drake

On Nov 3, 2006, at 8:33 AM, Rémi Coulom wrote:

I have never had memory problems with Crazy Stone. Crazy Stone uses  
32 bytes of RAM per node of the tree. It is not really a tree, but  
a hash table, to handle transpositions. For nodes closer to the  
root, I "extend" each node with more data (pointers to children).  
This is only


Since Orego stores the entire tree (with some optimizations for non- 
branching paths), it is ... somewhat less memory-efficient than Crazy  
Stone.  :-)


needed for a small proportion of the total number of nodes, so it  
does not eat up a huge amount of RAM. That is because I don't do  
UCT in a node before 81 random simulations have been run there.


A thought: if we define the uncertainty of an untried move to be 2,  
the UCT algorithm will automatically try all of those before trying  
anything else twice.


Maybe you're already doing that.

Since I use transpositions, it is not really possible to remove a  
subtree, anyways.


Yes, another thing I have to (re-)implement...

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/


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


[computer-go] UCT finds the right answer, but...

2006-11-07 Thread Peter Drake
Consider this position:...wBww.wB...wBBBBw..wBw...w..wBw.w.w.wwBw...This is black to play, no komi.As I read it (correct me if I'm wrong!), the white groups at upper left and lower right can't be killed (assuming white defends them). Black can kill either of the other groups, and white can respond by saving the remaining one. Since killing the upper right white group is not big enough, black's only winning move is to kill the lower left group by playing at b2.Orego (now using UCT) quickly finds the correct answer, but the estimates of the probability of winning are strange. Here's a graph:The probability of winning by starting at b2 is greater than the probability starting elsewhere, but shouldn't it approach 1.0, since b2 is a winning move? Do others get this same behavior? Does anyone have an explanation?For what it's worth, here are the probabilities and  /  through each move:B1 (0.262654 = 1510/5749):G1 (0.269305 = 2504/9298):H1 (0.276537 = 5200/18804):J1 (0.263229 = 1567/5953):*B2 (0.290454 = 134822/464177):C2 (0.288902 = 69762/241473):G2 (0.274577 = 4156/15136):J2 (0.276275 = 5034/18221):B3 (0.261835 = 1427/5450):C3 (0.269523 = 2554/9476):G3 (0.269982 = 2655/9834):H3 (0.27404 = 3927/14330):J3 (0.273359 = 3660/13389):F6 (0.25266 = 831/3289):G6 (0.268461 = 2334/8694):H6 (0.273485 = 3706/13551):J6 (0.247165 = 632/2557):A7 (0.269866 = 2632/9753):B7 (0.274571 = 4157/15140):C7 (0.268814 = 2404/8943):A8 (0.275441 = 4577/16617):C8 (0.277177 = 5617/20265):A9 (0.259601 = 1237/4765):B9 (0.27903 = 7180/25732):C9 (0.268422 = 2324/8658):G9 (0.257561 = 1090/4232):H9 (0.277021 = 5513/19901):J9 (0.262094 = 1452/5540):PASS (0.221808 = 238/1073): Peter DrakeAssistant Professor of Computer ScienceLewis & Clark Collegehttp://www.lclark.edu/~drake/ ___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] UCT finds the right answer, but...

2006-11-07 Thread Peter Drake

On Nov 7, 2006, at 11:10 AM, Magnus Persson wrote:


Quoting Peter Drake <[EMAIL PROTECTED]>:


The probability of winning by starting at b2 is greater than the   
probability starting elsewhere, but shouldn't it approach 1.0,  
since  b2 is a winning move? Do others get this same behavior?  
Does anyone  have an explanation?


The situation is still such that random play can mess things up.  
Even if black
is winning UCT search for white will pick those moves which allows  
black to

make bad moves deeper in the tree.


I've had similar experiences with other variants of Monte Carlo Go.  
Incidentally, I think this makes ladders particularly difficult.


Thanks, good to know it's not just my program that exhibits this  
behavior.


What you should do is to print out the winning percentage for the  
principle
variation and not only the top move. In valkyria the winning score  
do not
change much at the root but following the tree down a winning  
variation often
increase the winning percentage 5-10 % at each ply until it reache  
a point

where random play always lead to a win.


It doesn't always work out that way, but sometimes it does:

B2:0.292577
H9:0.291222
C2:0.29693
G2:0.292865
G6:0.312761
B1:0.35
J2:0.67
PASS

The important thing is that UCT (very!) quickly finds the correct move.

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/



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


[computer-go] Flummoxed with GTP

2006-11-14 Thread Peter Drake
Orego supports GTP, but for some reason today I can't get it to work  
with Goban, glGo, or GoGui. It runs fine and quickly from the command  
line, responding to GTP commands:


$ /Users/user/Documents/go/xcode/Orego/build/Release/Orego
name
= Orego

genmove black
= E5

quit
=

When I invoke the same program from any of the GTP front ends,  
though, it never responds to the name command and is apparently  
crunching away. I'm at a loss to imagine why the behavior of the  
program would change depending on whence it is invoked. Can anyone  
think of any sense in which sending a command like "name" from a  
front end is different from doing it manually?


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/



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


Re: [computer-go] Flummoxed with GTP

2006-11-14 Thread Peter Drake
As always, publicly announcing one's confusion generally causes a  
solution to appear.


The difference is that my program is being invoked from a different  
directory, which was causing confusion when the program went to look  
up the opening book file.


We apologies for the interruption and return you to your regularly  
scheduled programming.


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Nov 14, 2006, at 9:19 AM, Peter Drake wrote:

Orego supports GTP, but for some reason today I can't get it to  
work with Goban, glGo, or GoGui. It runs fine and quickly from the  
command line, responding to GTP commands:


$ /Users/user/Documents/go/xcode/Orego/build/Release/Orego
name
= Orego

genmove black
= E5

quit
=

When I invoke the same program from any of the GTP front ends,  
though, it never responds to the name command and is apparently  
crunching away. I'm at a loss to imagine why the behavior of the  
program would change depending on whence it is invoked. Can anyone  
think of any sense in which sending a command like "name" from a  
front end is different from doing it manually?


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/



___
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/


[computer-go] Testing against gnugo

2006-11-17 Thread Peter Drake
Orego speaks GTP, as does gnugo. I'd like to run a bunch of games  
(say, 50) between them to see how many Orego wins. Does anyone have a  
handy script (ideally bash or Python) for this?


Thanks,

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/



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


Re: [computer-go] Positions illustrative of computer stupidity ?

2006-11-22 Thread Peter Drake
One could use the heuristic that the outside is larger than the  
inside, but perhaps a situation can be created where this is not  
true. This might even be something beginning Go players could see/ 
understand.


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Nov 22, 2006, at 2:07 PM, Chrilly wrote:

Attached is a very simple position which adresses the problem of  
what is inside and what is outside. A seemingly logical definition  
of inside is that the point is enclosed by stones of one color and/ 
or the border. Or the fireman-algorithm. If one traverses along an  
own wall and/or the border in the same direction and comes back to  
the point. But in the given position a3 and all the other 257  
intersections are according this definition  also "inside". It  
would never come to the mind of a human player the the 3 black  
stones enclose the 257 intersections.
The message is: Tasks which are for a human completly trivial are  
hard to formalize.


Chrilly

___
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/


[computer-go] Orego 3.03 posted

2006-11-27 Thread Peter Drake

If anyone's interested in digging through our C++ code, here it is:

http://www.lclark.edu/~drake/go/

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/



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


[computer-go] Paper presents results on proximity heuristic

2006-11-28 Thread Peter Drake

Here it is:

https://webdisk.lclark.edu/xythoswfs/webui/_xy-2115826_1-t_OX34gnaB

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/



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


[computer-go] Making Java much faster

2006-11-28 Thread Peter Drake
Everyone here has offered me all kinds of useful advice on speeding  
up or otherwise improving Orego. In thanks, I offer a recent (to me)  
discovery about how to make Java programs run much faster. Instead of


java MyProgram

do

java -server MyProgram

It's not entirely clear what the difference between "server mode" and  
the default "client mode" is -- maybe just-in-time compilation? In  
any case, I found that it nearly doubled the speed of a small program.


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/



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


Re: [computer-go] Making Java much faster

2006-11-29 Thread Peter Drake
Orego version 3.03, described in the paper and available at the Orego  
web site, is in C++.


However, we are finding C++ an exceedingly frustrating language to  
work in. I won't go into the details here -- we don't need another  
language war -- but suffice it to say that it seems like we're  
spending a lot of time messing with details that aren't of interest  
for the research. Now that I've found that Java can have speed within  
a factor of 2 of C++, I'm thinking of going back to Java.


A student and I are challenging each other to make the program  
multithreaded -- he in C++, me in Java. If I can rewrite the program  
in Java AND multithread it before he can multithread the C++ version,  
it will be (weak) evidence that it might be worth trading some  
runtime speed for development time.


Your point (also raised by others) about testing against other  
opponents is, of course, valid. I would have done so in this paper  
were the submission deadline not pressing, and plan to do so for  
future papers. In defense of this paper, I can only say that  
(according to the self-play data in the paper) adding the proximity  
heuristic offered not just an improvement but a very large  
improvement -- 95% statistical confidence.


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Nov 29, 2006, at 3:22 AM, Chrilly wrote:



I am confused. In your paper you write "Orego is a Monte CarloGo  
programm written in C++". Is Orego now in C++ or in Java or both?


The paper mentions the relative comparison of 2 versions. This is  
common practice in the scientific literature, but it is a very poor  
choice if one wants to measure the effect of a new method. The  
effects of changes is much more pronounced than against another  
opponet. A method which is good against the twin-brother must not  
be good against other opponents at all. Even against other  
opponents it happens frequently that a method works quite well  
against opponent A but it fails against B. Its relative easy to  
make a version which crashes e.g. Rybka, but this version is poor  
against Fritz and Shredder. The really difficult task is to find a  
combination which plays good against all.
But its of course a good method for papers where the authors want  
to proove how good their idea is. But it demonstrates the lack of  
competence of the academic world for game-programming. Otherwise  
such experiments would not be accepted as a proof for a concept.  
There is also Vincent Diepeveens law: In a weak programm is every  
change an improvement. I do not know how good Orego is, but playing  
e.g. against the top-3 programms would be a much better experiment.


This remark is not against the Orego team which does a fine job to  
explain their work. I like to read the Orego project "news".
Its against a very common and bad practice in papers. One can even  
get an award for the best paper of the year and become a standard  
reference with this poor methodology. In my "Null-Move" paper I did  
the same. The Null-Move Version of Nimzo was running on a 386, the  
Non-Null-Move Version on a 486 and the result was about equal. My  
conclusion was: The Null-Move is worth one hardware generation. At  
that time I was not really aware of the problem and the bad  
comparision was not on purpose. But the reviewer/editor of the ICCA- 
Journal should have insisted on better experiments. The only  
"improvements" he made was changing the original title from  "Null  
move and deep search: Selective search heuristics for. stupid chess  
programs"   to "obtuse chess programms". I know what a stupid  
programm is, but I do not know till today the meaning of "obtuse".


Chrilly

___
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/


Re: [computer-go] Making Java much faster

2006-11-29 Thread Peter Drake
This is something we hope to do once we have Orego multithreaded:  
give each version the same amount of time, so the time costs of  
adding a heuristic are automatically taken into account.


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Nov 29, 2006, at 7:30 AM, Eduardo Sabbatella wrote:




Games are additionally hard-real-time problems. E.g.
in the Orego tests but
versions got the same amount of nodes. For a
realistic comparision one has
to give both sides the same time and not the same
node-budget.


What do you think about giving the same program
different player times?

Perhaps its found that ELOs/time grow log/lineal/exp.

Also, same program but with one feature disabled, same
time. Does make any sense?


__
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
¡Abrí tu cuenta ya! - http://correo.yahoo.com.ar
___
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/


Re: [computer-go] Making Java much faster

2006-11-29 Thread Peter Drake

On Nov 29, 2006, at 9:26 AM, Eduardo Sabbatella wrote:


I'm a full time worker. Before starting my engine (a
couple of months ago) by 3rd or 4th try. I concluded
this:

It will be impossible for me to do anything in C, C++
because I will have to focus on not having memory
leaks, range errors, etc.

My engine nowadays is winning agains gnugo on lower
levels. Without time constrait. Ok, gnugo takes 10
secs to play, my engine 90 seconds.

But, something I has sorted out in the beginning:

- I have to optimise  algoritms, not code.


I agree absolutely, and have seen this advice in many books. One went  
so far as to propose the two rules of optimization:


1. Don't to it.

2. (For advanced programmers only) Don't do it yet.

Algorithmic improvements are much more important than local  
efficiency improvements.



I think Drake follow the correct path, first optimise
algorithm on Java, then move it to C/C++.


Since computer Go algorithms are always, to some degree, in flux, I'm  
now leaning toward staying in Java. Yes, C/C++ allows fine control,  
but it also requires such fine control that it's hard to think about  
larger algorithmic issues.



Personally, I found that creating objects in Java is
reay expensive. My engine use a lot arrays of
ints, longs, big linked arrays by reference numbers.
(yes, a'la C... sometimes I have to resize arrays, its
costy, but I found that its a lot cheaper on overall
perfomance than creating objects).


Yes, in both time and space. I intend to go to some lengths to avoid  
dynamic object creation, e.g., creating all of the objects at startup  
time and just clearing them out when I need "new" ones. For the most  
memory-intensive part of the program (the enormous search tree), I  
intend to use a big array of raw ints. Yes, this will be just as ugly  
as doing it in C/C++, but at least I'll be able to confine the  
ugliness to that part of the program.


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] language choices

2006-12-03 Thread Peter Drake
A note: we're working on converting Orego back from C++ to Java, and  
we're getting 5,000 (totally random at this point) simulated games  
per second. We'll probably continue in this direction.


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/

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


Re: [computer-go] How to improve Orego

2006-12-04 Thread Peter Drake
It's not clear whether this is faster. Determining that a move is  
illegal because the point is occupied is very fast; determining that  
a move IS legal (i.e., not a suicide or ko violation) is the slow  
part, and I avoid that by taking the first legal move I find. (Of  
course, once all moves have been tried from a given move, UCT takes  
over.)


In any case, my profiling data indicates that choosing the random  
move per se is not the expensive part; playing the move is.


Thanks for the suggestion,

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Dec 4, 2006, at 7:52 AM, Chrilly wrote:

In the Orego paper the problem of selecting a move when the board  
is filled with stones is mentioned. Orego uses a sort of double- 
hashing scheme.

But isn't it trivial to keep a list of empty intersections?
Before the MC-run is started, one builds up this list. If a stone  
is placed now on the board, the entry is removed from the list and  
the last entry is copied into this slot. In this way the list is  
always dense. One can of course not run linearly trough the list to  
find the entry which should be removed. Instead one builds at the  
beginning another array which is indexed by the board-point and  
which contains the index of the point in the empy-point-list. This  
second array has to be changed too when the last entry is copied  
into the removed slot. With a few operations one gets the big  
advantage to sample all the time only the empty points.
I think this solution is much simpler and more efficient than the  
double-hashing scheme of Orego.


Chrilly
___
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/


Re: [computer-go] language choices

2006-12-04 Thread Peter Drake

The three most important things seem to be:

1) Run java in -server mode. This appears to double speed for no effort.

2) As you say, avoid creating objects. For example, instead of  
creating a new array each time a method is invoked, make the array a  
field and just clear it out when you need a "new" one. Similarly,  
instead of


Foo x = y.clone();

do something like

x.copyDataFrom(y);

where of course you have to write copyDataFrom().

3) Algorithmic improvements are always more important that fine-tuning.

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Dec 4, 2006, at 2:40 AM, Eduardo Sabbatella wrote:


Would you like to share some experiences on tunning up
Java code ?

Yesterday I left my machine profilling the code.
(takes ages with TPTP).

I didn't research too much the results, but as far I
could see, creating objects is almost FORBIDDEN.

The "clone" method on game class which is used for
create a copy of game object for every simulation is
the function that is taking the most of the time.
(implies a couple of inner clones...)

Also, a "getNear" method that returns a list of near
points (considering borders) is the second most
expensive. (even, being optimised ... The problem is
that is creating a new array of size 1|2|3|4 elements
for returning the result).

About game class, I think that I will change to simple
floodfill insteads of maintaining a list of liberties
and chains. Clonning that list is expensive.


--- Peter Drake <[EMAIL PROTECTED]> escribió:


A note: we're working on converting Orego back from
C++ to Java, and
we're getting 5,000 (totally random at this point)
simulated games
per second. We'll probably continue in this
direction.

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/

___
computer-go mailing list
computer-go@computer-go.org


http://www.computer-go.org/mailman/listinfo/computer-go/





__
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
¡Abrí tu cuenta ya! - http://correo.yahoo.com.ar
___
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/


[computer-go] Proposed UCT / transposition table implementation

2006-12-04 Thread Peter Drake
I've noticed that Orego has done very poorly in the last couple of  
competitions. This is partly due to the improvements in others'  
programs, but I think the fact that Orego currently doesn't have a  
transposition table is crippling. Since I'm rewriting this stuff in  
Java, I'm thinking about how to handle this, and would like to offer  
up the following plan for all of you to poke holes in. I'm not sure  
if I'm reinventing the CrazyStone structure here, but I think this  
one is slightly different.


DATA STRUCTURE

The "tree" is a enormous, preallocated array of Node objects.  
(Because this array is also being used as a hash table, the size of  
the table should be a prime number.) This is really a directed  
acyclic graph (DAG) rather than a tree, because a Node may be a child  
of more than one parent.


Each Node contains the following information:

A+1 "pointers" (in some sense) to child Nodes, where A is the area of  
the board. (The extra pointer is for the pass move.) Some of these  
pointers (initially, all of them) may be the special value UNEXPLORED.


The number of runs through this Node so far.

The number black wins through this Node so far.

A Zobrist hash of the position represented by this Node. This must  
incorporate, in addition to the locations of stones on the board, the  
turn number (e.g., zero for the beginning of the game) and the number  
of consecutive passes.


The turn number, stored explicitly.

A forced leaf turn number, to be explained below.

(Note that, in contrast to the current Orego structure, we won't need  
tails or a free list for this one.)


GENERATING A MONTE CARLO RUN

I want to separate the process of generating a Monte Carlo run from  
the process of modifying the tree for two reasons. First, this will  
make multithreading easier. Second, I will be able to incorporate  
recorded games into the tree by pretending that the program had  
played them.


To generate a Monte Carlo run, I start at the root Node. Each move is  
chosen using UCT, based on UCB1-TUNED as described on p. 5 of the  
recent Gelly et al tech report on MoGo. As in the current Orego, this  
is done with a double-hashing scheme and in a way that always chooses  
an untried move if one exists.


There is one complication here. The number of runs through the  
children might exceed the number of runs through the parent because  
of transpositions. In Gelly's notation, this means Tj(n) may exceed  
n. I THINK I can ignore this, as it will just give "oversampled"  
moves unusually narrow confidence windows.


If we are not at a Node (because we're in an unexplored region of the  
search space), if the current Node has a forced leaf turn number  
greater than or equal to the root turn number, or if any child is  
found that is not at the correct turn number (because of a hash  
collision), the move is chosen randomly.


INCORPORATING A GAME INTO THE TREE

Again, we start at the root Node. We work down the tree, updating the  
run and black win count of each node encountered. If the child  
pointer we would be following is UNEXPLORED, we use the  
aforementioned Zobrist hash (modulo the table size) to find a Node to  
use as the child. This may be a Node that has already been  
initialized, a "fresh" Node (i.e., one that we can overwrite), or a  
Node that we can't overwrite.


If the child has the correct turn number, either we have been down  
this path before or we have found a transposition. In either case,  
continue down the tree.


If the child has a turn number that is lower than that of the root,  
it is an old node and can be overwritten. We reinitialize this one  
node, update its run and black win counts, and stop. Thus, every run  
adds at most one node to the tree.


If the offending child is not so old that it can be overwritten, we  
must leave it alone lest it mess up another part of the tree. At this  
point, the parent's forced leaf turn number is set to the child's  
turn number; all moves from that parent will be random until a later  
point in the game when it is safe to overwrite the offending child.



I welcome your input,

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/



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


Re: [computer-go] KGS Computer Go Tournaments

2006-12-06 Thread Peter Drake
Only 28 bytes? What's in your nodes? That doesn't seem like enough  
room for 82 pointers to children. If you don't have pointers to  
children, how do you find the children's statistics for UCT? Play  
each move and examine the resulting hash code?


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Dec 6, 2006, at 2:04 AM, Magnus Persson wrote:


Quoting Chrilly <[EMAIL PROTECTED]>:
Maybe there is a logical flaw in my calculation. In this case it  
would be nice if one of the UCT-programmers explains were all this  
memory is used.




Valkyria currently preallocate 2 million records for the nodes of  
28 bytes
each which is about 50 MB. I could allocate more memory than that  
but at some
point I had a problem with severe memory thrashing (*) so I decided  
to try
using as little as possible. I also only have access to computer  
with are a

little outdated.

I think the huge factor here is that for every terminal node  
reached I add all
children for that node, although only one of them is actually  
played. The
reason is that then there is a lot of code (pattern matching) that  
thus only
have to run once. I used to to only expand nodes that were selected  
to be
played, but the overhead of the recomputing stuff and some  
nightmare bugs,
made me sacrifice memory for simplicity and a 30% speedup. With old  
code I had
no memory problems as you correctly predicted although my numbers  
differs

somewhat from what you assumed.

When I run out of nodes I simply delete all subtrees that has been  
visited less

times than a threshold.

---

I just ran a test having it think for one hour on the empty 9x9 board.
It played on average 2500 simulations per second, but added 3
Nodes/second. This means that it fills memory in one minute. This  
is not an
accident of course I designed it such that it should never need  
garbage
collection the first minute it thinks. It played 222000 moves per  
second

including all overhead.

The principle variation was 7 ply deep. And here I limit the depth  
to nodes
which has been visited at least 2000 times, the UCT tree goes much  
deeper than
that but with this restricition the moves in the principle  
variation is always

reasonable.

The second best variation was searchd to 5 ply, and the remaining 4  
was searched
to 3 ply. Thanks to symmetry pruning Valkyria only searches 6 moves  
in the

opening position.

The first time garbage collection was done 1.9 Mnodes were freed  
which is close
to 100%, so most of the initial tree is really unimportant nodes.  
The last time
it freed only 0.7 MNodes which means that more than half of the  
nodes is
actually is used for nodes that I do not dare to prune. I guess if  
I allocate 5
times more memory then I could play up to 10 hours without a  
serious problem but
after 20 hours perhaps the program would do garbage collection all  
the time.


-Magnus

(*) In reality it turned out that my laptop easily overheats and  
shuts down
all systems that generated heat, so I can probably allocate 5-10  
times more

memory without problems on my machines.
___
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/


Re: [computer-go] language choices

2006-12-06 Thread Peter Drake

9x9, 2 GHz Intel Core Duo iMac.

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Dec 6, 2006, at 2:59 PM, Don Dailey wrote:



On Sun, 2006-12-03 at 19:53 -0800, Peter Drake wrote:

A note: we're working on converting Orego back from C++ to Java, and
we're getting 5,000 (totally random at this point) simulated games
per second. We'll probably continue in this direction.



Hi Peter,

Which hardware is this on and what board size?

- Don



Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/

___
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/

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


Re: [computer-go] language choices

2006-12-06 Thread Peter Drake
I'm getting about 98.2 for purely random games, but Orego has a turn  
limit that prevents a game from taking more than 162 moves on 9x9.


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Dec 6, 2006, at 3:48 PM, Don Dailey wrote:



When playing 9x9 games from the opening position,  what is the average
number of moves
per game?

Lazaurs reports about 107.3 but I'm porting over to the D programming
language and I'm getting about 101.4.  I think there is a bug.

What are others getting here?  I think most of us use the same eye  
rule.


I only count fully legal moves and I also do not count pass moves.   I
doubled checked, I'm not counting pass move with either program.

- Don



On Wed, 2006-12-06 at 15:05 -0800, Peter Drake wrote:

9x9, 2 GHz Intel Core Duo iMac.

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Dec 6, 2006, at 2:59 PM, Don Dailey wrote:



On Sun, 2006-12-03 at 19:53 -0800, Peter Drake wrote:
A note: we're working on converting Orego back from C++ to Java,  
and

we're getting 5,000 (totally random at this point) simulated games
per second. We'll probably continue in this direction.



Hi Peter,

Which hardware is this on and what board size?

- Don



Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/

___
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/

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


Re: [computer-go] experiments with D programming

2006-12-07 Thread Peter Drake

On Dec 6, 2006, at 9:36 PM, Don Dailey wrote:


The equivalent C version (after I took out some optimizations) is
doing 13,745.70 games per second on an old pentium 4.


I'd really love to know what I'm doing wrong. I was never able to get  
more than about 6,000 games per second on a 2 GHz machine, even in C++.


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Threads (was Re: [computer-go] experiments with D programming)

2006-12-07 Thread Peter Drake

On Dec 7, 2006, at 9:05 AM, Don Dailey wrote:


Are you trying to keep a lot of information updated?   Mine only tries
to play random games as fast as possible.   It does not have the  
ability

to undo moves - this is easily handled by copying state when you need
this feature.


I do have the undo ability, but I think it's done in (I think) a very  
efficient way. For example, when I want to undo a bunch of move at  
once (e.g., after a MC run) I just reduce a stack pointer.


There is also about a 2 to 1 slowdown if you are not finding the  
random
legal moves properly.   I don't know if you are or not, but look at  
the

recent emails on this, one of mine and one by Lex Luthor - or was it
Lukasz Lew?


I think my technique here is faster than those recently described,  
because I don't bother building a data structure.


In related news, I've just multithreaded my program and ... it's  
slower than the single-thread version! I'm pretty sure that this  
happened because I threaded it at too fine a scale; I'm incurring the  
overhead of thread creation for each MC run. I'll have to do some  
thinking about how to reorganize this.


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: Threads (was Re: [computer-go] experiments with D programming)

2006-12-07 Thread Peter Drake
Those of you with multithreaded UCT programs -- how do you do it?  
Doesn't UCT pretty much require updating a common data structure  
after each MC run?


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/



On Dec 7, 2006, at 9:17 AM, Peter Drake wrote:

In related news, I've just multithreaded my program and ... it's  
slower than the single-thread version! I'm pretty sure that this  
happened because I threaded it at too fine a scale; I'm incurring  
the overhead of thread creation for each MC run. I'll have to do  
some thinking about how to reorganize this.


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/

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


Re: Threads (was Re: [computer-go] experiments with D programming)

2006-12-07 Thread Peter Drake
I'm afraid I don't follow you. I THINK I'm doing what you describe.  
My Player object creates several threads, each of which plays a game.  
After all of the games are completed, the main thread incorporates  
them into the search tree.  Here's the Java:


timer.schedule(interrupt, MSEC_PER_MOVE);
while (!currentThread().isInterrupted()) {
// Create and start the threads
for (int i = 0; i < NUMBER_OF_THREADS; i++) {
runnables[i].prepareForLongUndo();
		threads[i] = new Thread(runnables[i]); // I suspect this is the  
expensive part

threads[i].start();
}
// Wait for all of the threads to finish (code omitted)
// Incorporate games
for (int i = 0; i < NUMBER_OF_THREADS; i++) {
incorporateRun(runnables[i].getBoard());
runnables[i].longUndo();
}
}

The problem is that a single MC run takes about 1/5 of a millisecond,  
so it's not worth the overhead of putting it off into another thread.  
I need some way to tell a thread to do many runs, then somehow  
incorporate the multiple runs back into my search tree. I believe  
others are already doing this and I'm curious how.


Remi? Sylvain?

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Dec 7, 2006, at 9:41 AM, steve uurtamo wrote:


Those of you with multithreaded UCT programs -- how
do you do it?
Doesn't UCT pretty much require updating a common
data structure
after each MC run?


you could hand a job (starting position) to each
thread and have the thread manager update a shared
memory segment that they all can read from (but not
write to).

or are you talking about networked threads?

s.



__ 
__

Have a burning question?
Go to www.Answers.yahoo.com and get answers from real people who know.
___
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/


Re: Threads (was Re: [computer-go] experiments with D programming)

2006-12-07 Thread Peter Drake

On Dec 7, 2006, at 9:42 AM, [EMAIL PROTECTED] wrote:


Hello,

Those of you with multithreaded UCT programs -- how do you do it?
Doesn't UCT pretty much require updating a common data structure
after each MC run?
in MoGo we simply protect the tree access using a mutex, so only  
the MC
simulations are run in parallel. The tree update is done by only  
one thread

at a time.
I think this not so efficient, but at least it is very simple, and  
efficient

enough comparing to other challenges :).


Is that access to the entire tree, or to each node? (The latter seems  
like an awful lot of mutexes (mutices?).)


It would have to be set up so that any number of threads can read  
from the tree at once, but only one can write to it, and nobody can  
read while someone is writing.


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/

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


Re: Threads (was Re: [computer-go] experiments with D programming)

2006-12-07 Thread Peter Drake
Aha! Now I get it. You only have to look at the tree during the  
opening part of the run. Once you've fallen off and are making purely  
random moves, you can let someone else use the tree.


Thanks!

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Dec 7, 2006, at 9:59 AM, [EMAIL PROTECTED] wrote:


The problem is that a single MC run takes about 1/5 of a millisecond,
so it's not worth the overhead of putting it off into another thread.

Creating a thread for each MC simulation is clearly very costy.


I need some way to tell a thread to do many runs, then somehow
incorporate the multiple runs back into my search tree. I believe
others are already doing this and I'm curious how.

Yes we do that in MoGo.

I try to explain the algorithm here:

3 methods:
DescendTheTreeUsingUCT
MCSimulation
UpdateTheTree

At the beginning of a genmove, we create n threads  
(n==nbProcessors), then

each thread calls the method "think" which is:

think {
while (time left) {
mutex.lock()
DescendTheTreeUsingUCT
mutex.unlock()
MCSimulation
mutex.lock()
UpdateTheTree
mutex.unlock()
}
}

Each thread has his own data for all except tree (for exemple we  
keep the

current sequence, ...).

Is it cleared that way ?

___
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/


Re: Threads (was Re: [computer-go] experiments with D programming)

2006-12-07 Thread Peter Drake

Got it -- now I'm getting just under 10,000 games per second!  Whee!

(FWIW, I actually don't have the UCT part in there yet -- these are  
purely random games.)


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Dec 7, 2006, at 10:07 AM, Peter Drake wrote:

Aha! Now I get it. You only have to look at the tree during the  
opening part of the run. Once you've fallen off and are making  
purely random moves, you can let someone else use the tree.


Thanks!

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Dec 7, 2006, at 9:59 AM, [EMAIL PROTECTED] wrote:

The problem is that a single MC run takes about 1/5 of a  
millisecond,
so it's not worth the overhead of putting it off into another  
thread.

Creating a thread for each MC simulation is clearly very costy.


I need some way to tell a thread to do many runs, then somehow
incorporate the multiple runs back into my search tree. I believe
others are already doing this and I'm curious how.

Yes we do that in MoGo.

I try to explain the algorithm here:

3 methods:
DescendTheTreeUsingUCT
MCSimulation
UpdateTheTree

At the beginning of a genmove, we create n threads  
(n==nbProcessors), then

each thread calls the method "think" which is:

think {
while (time left) {
mutex.lock()
DescendTheTreeUsingUCT
mutex.unlock()
MCSimulation
mutex.lock()
UpdateTheTree
mutex.unlock()
}
}

Each thread has his own data for all except tree (for exemple we  
keep the

current sequence, ...).

Is it cleared that way ?

___
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/

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


[computer-go] The Two Rules of Monte Carlo Optimization

2006-12-07 Thread Peter Drake

Let me propose the following rules for comment:

1) The vast majority of your time is spent making RANDOM moves  
(beyond the leaves of your tree).


2) Almost none of your nodes have more than one child.

These, along with the KISS principle, seem to point to a lot of  
optimizations in both time and space. For example, that latter  
suggests that the first child / next sibling tree representation  
mentioned here recently is a much better idea than the array-of- 
children representation I'm currently using.


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/



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


Re: Threads (was Re: [computer-go] experiments with D programming)

2006-12-07 Thread Peter Drake

Precisely: I'm getting almost optimal use of my dual-core processor.

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Dec 7, 2006, at 10:47 AM, Don Dailey wrote:


On Thu, 2006-12-07 at 10:24 -0800, Peter Drake wrote:

Got it -- now I'm getting just under 10,000 games per second!  Whee!


Hold on, I thought the non-threaded version was doing 5,000?   What
exactly did you change?   Or are you just using 2 processors more
efficiently to get 10,000 games?

- Don




(FWIW, I actually don't have the UCT part in there yet -- these are
purely random games.)

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Dec 7, 2006, at 10:07 AM, Peter Drake wrote:


Aha! Now I get it. You only have to look at the tree during the
opening part of the run. Once you've fallen off and are making
purely random moves, you can let someone else use the tree.

Thanks!

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Dec 7, 2006, at 9:59 AM, [EMAIL PROTECTED] wrote:


The problem is that a single MC run takes about 1/5 of a
millisecond,
so it's not worth the overhead of putting it off into another
thread.

Creating a thread for each MC simulation is clearly very costy.


I need some way to tell a thread to do many runs, then somehow
incorporate the multiple runs back into my search tree. I believe
others are already doing this and I'm curious how.

Yes we do that in MoGo.

I try to explain the algorithm here:

3 methods:
DescendTheTreeUsingUCT
MCSimulation
UpdateTheTree

At the beginning of a genmove, we create n threads
(n==nbProcessors), then
each thread calls the method "think" which is:

think {
while (time left) {
mutex.lock()
DescendTheTreeUsingUCT
mutex.unlock()
MCSimulation
mutex.lock()
UpdateTheTree
mutex.unlock()
}
}

Each thread has his own data for all except tree (for exemple we
keep the
current sequence, ...).

Is it cleared that way ?

___
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/

___
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/

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


Re: Threads (was Re: [computer-go] experiments with D programming)

2006-12-07 Thread Peter Drake

On Dec 7, 2006, at 11:08 AM, Don Dailey wrote:


On Thu, 2006-12-07 at 09:17 -0800, Peter Drake wrote:

I do have the undo ability, but I think it's done in (I think) a
very
efficient way. For example, when I want to undo a bunch of move at
once (e.g., after a MC run) I just reduce a stack pointer.


BINGO!   I'm pretty sure that is your problem.

My program does this too, but not during the random games.   I make
single copy of the current state then play a random game from that  
copy.


Obviously, it's faster to place a single stone on an existing board -
than to make a copy and then place a stone on the copy.


I'm not sure that would be true for Orego; playing moves involves a  
bunch of operations on bit vectors, so there's plenty of writing to  
memory anyway. The amount of copying I'm doing is pretty trivial; I'm  
copying the 9 (or 19) ints that represent the board, but I'm not  
copying a HashSet or anything silly like that.


In the search tree part of the game,  (not the random simulation  
part) I

make state copies, do Zobrist hashing and full repetition checks and
other stuff - the tree part is cheap.


Agreed -- the playing of moves is the expensive part.


No matter how you implement undo - it will cost you dearly whether by
state copy or keeping stacks of information updated.


Are you one of those who advocates ignoring the ko rule during MC  
searches?


I'm actually pretty happy with 10,000 runs/second (9x9). I'm not so  
happy with my tree data structure, so I'm going to go mess with that...


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/


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


[computer-go] firstChild/nextSibling in a DAG

2006-12-07 Thread Peter Drake

(This is all within the context of Monte Carlo.)

Is anyone storing a search DAG (as opposed to a tree) and using the  
firstChild/nextSibling representation? I'm having trouble seeing how  
this would work, since when you traverse children (e.g., in UCT) you  
have to know which move is associated with which child node. If a  
node might have more than one parent, the node can't store its last  
move.


Any clever solutions?

If not, any opinions (or better yet, evidence) as to whether the  
space savings or the DAG transposition table is more valuable?


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/



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


Re: [computer-go] firstChild/nextSibling in a DAG

2006-12-07 Thread Peter Drake
I can avoid the ko problem by storing the depth of each node and  
never creating a link from a node at depth d except to a node at  
depth d+1. This prevents any cycles, at the (minimal, in my opinion)  
cost of omitting transpositions of different lengths.


I need the move for two reasons:

1) In performing UCT, I need to traverse my children, find the value  
and confidence bound for each one, and then choose the move leading  
to the "best" one. This requires knowing which move leads to which  
child node.


2) In testing, I like to be able to print out the tree.

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Dec 7, 2006, at 2:58 PM, House, Jason J. wrote:


DAG's have a problem with graph history, especially with super ko
considerations.  Do you need the parent play for more than ko
considerations?

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Peter Drake
Sent: Thursday, December 07, 2006 5:47 PM
To: Computer Go
Subject: [computer-go] firstChild/nextSibling in a DAG

(This is all within the context of Monte Carlo.)

Is anyone storing a search DAG (as opposed to a tree) and using the
firstChild/nextSibling representation? I'm having trouble seeing how
this would work, since when you traverse children (e.g., in UCT) you
have to know which move is associated with which child node. If a
node might have more than one parent, the node can't store its last
move.

Any clever solutions?

If not, any opinions (or better yet, evidence) as to whether the
space savings or the DAG transposition table is more valuable?

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/



___
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/

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


Re: Threads (was Re: [computer-go] experiments with D programming)

2006-12-07 Thread Peter Drake
I see. I only recently had this realization that the within-tree and  
purely-random parts of the search were deeply different. I'll take a  
shot at this.


Thanks,

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Dec 7, 2006, at 3:21 PM, Don Dailey wrote:


Peter,

I also want to point out that I DO do full KO testing,  but it's  
just in

the tree search - it's the Monte/Carlo part that's a waste of time.

I say that because monte/carlo is a RANDOM search,  it's not going to
deal with any positional finesses and such.   It's too expensive  
even to
maintain the incremental hash key - so I have 2 move make  
routines,  one

that maintains it and one that doesn't.

- Don



On Thu, 2006-12-07 at 18:13 -0500, Don Dailey wrote:

On Thu, 2006-12-07 at 14:09 -0800, Peter Drake wrote:

In the search tree part of the game,  (not the random simulation
part) I
make state copies, do Zobrist hashing and full repetition checks  
and

other stuff - the tree part is cheap.


Agreed -- the playing of moves is the expensive part.


No matter how you implement undo - it will cost you dearly whether

by

state copy or keeping stacks of information updated.


Are you one of those who advocates ignoring the ko rule during MC
searches?


Not simple KO, but more than simple KO is a waste of valuable  
processor

time.

Whatever you are doing or not doing,  you probably could be 3X  
faster.
I don't know why you are happy with 10,000, especially when most  
of the

programs get more with 1 processor.

Unless of course you are getting something for it, such as valuable
information that can be used to improve the monte carlo part of the
search.

- Don




___
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/

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


Re: Threads (was Re: [computer-go] experiments with D programming)

2006-12-07 Thread Peter Drake
Okay, so I created a FastSloppyBoard class that works like a Board  
but doesn't maintain ko or Zobrist information. Not all the wires are  
plugged in yet (e.g., I'm not incorporating the results into the  
tree), but this got me about a 20% improvement in run per second. For  
those of you keeping track, that's about 12,000 pure MC runs per  
second with the dual-core processor.


I seem to have reached the point of diminishing returns here.

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Dec 7, 2006, at 3:21 PM, Don Dailey wrote:


Peter,

I also want to point out that I DO do full KO testing,  but it's  
just in

the tree search - it's the Monte/Carlo part that's a waste of time.

I say that because monte/carlo is a RANDOM search,  it's not going to
deal with any positional finesses and such.   It's too expensive  
even to
maintain the incremental hash key - so I have 2 move make  
routines,  one

that maintains it and one that doesn't.

- Don



On Thu, 2006-12-07 at 18:13 -0500, Don Dailey wrote:

On Thu, 2006-12-07 at 14:09 -0800, Peter Drake wrote:

In the search tree part of the game,  (not the random simulation
part) I
make state copies, do Zobrist hashing and full repetition checks  
and

other stuff - the tree part is cheap.


Agreed -- the playing of moves is the expensive part.


No matter how you implement undo - it will cost you dearly whether

by

state copy or keeping stacks of information updated.


Are you one of those who advocates ignoring the ko rule during MC
searches?


Not simple KO, but more than simple KO is a waste of valuable  
processor

time.

Whatever you are doing or not doing,  you probably could be 3X  
faster.
I don't know why you are happy with 10,000, especially when most  
of the

programs get more with 1 processor.

Unless of course you are getting something for it, such as valuable
information that can be used to improve the monte carlo part of the
search.

- Don




___
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/

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


Re: [computer-go] firstChild/nextSibling in a DAG

2006-12-07 Thread Peter Drake
I was also hoping to use my DAG as a transposition table, so I could  
use the Zobrist hash of the current position to find where the child  
node would be if it existed. If the space was already occupied (by a  
node at the right depth), I would have a transposition.


If each "node" might really require several nodes, this trick won't  
work. Oh, well. I guess I was trying to kill too many birds with the  
same stone.


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Dec 7, 2006, at 3:46 PM, Anders Kierulf wrote:


Is anyone storing a search DAG (as opposed to a tree) and
using the firstChild/nextSibling representation?
When you traverse children (e.g., in UCT) you have to
know which move is associated with which child node. If a
node might have more than one parent, the node can't store
its last move.


SmartGo uses a DAG for tactical proof number search, and is using the
firstChild/nextSibling representation. Different moves leading to  
the same
position are given their own node (a twin node), and that node then  
points
to the base node on the same level. Any information about the  
position is

stored in the base node; any information related to the move played is
stored in the twin nodes.

For tactical search, a DAG is a clear benefit; the extra space is  
certainly
worth it. In my current implementation, each node contains pointers  
to the
base node and to the next twin node, but that could be reduced to a  
single
pointer linking the twin nodes in a circular list plus a bit to  
indicate the

designated base node.

Anders Kierulf
www.smartgo.com

___
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/


Re: [computer-go] firstChild/nextSibling in a DAG

2006-12-08 Thread Peter Drake

Crikey -- it worked!

Incorporating moves into the tree with a transposition table, I'm  
still getting 10,000 games per second with the dual cores. The games  
are still purely random -- UCT is tomorrow's job.


I went ahead and (*shudder*) created the TwinNode objects on the fly,  
rather than maintaining a pool of them, since they're much rarer than  
true Nodes. It looks like I create about one transposition in every  
ten runs using purely random games, but I expect this will drop off  
precipitously under UCT. If I'm wrong, I can always add a node pool.


Orego is hugely faster and uses an order of magnitude less memory  
than it did 24 hours ago. Thanks, everyone!


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Dec 7, 2006, at 10:07 PM, Anders Kierulf wrote:


I was also hoping to use my DAG as a transposition table,
so I could use the Zobrist hash of the current position
to find where the child node would be if it existed. If
the space was already occupied (by a node at the right
depth), I would have a transposition.

If each "node" might really require several nodes, this
trick won't work. Oh, well. I guess I was trying to kill
too many birds with the same stone.


I'm solving that by using a separate hash table that points to the  
base node

for each position. But it seems like you should be able to use the DAG
directly as a transposition table too, with the twin nodes  
implemented as an

overflow list.

Anders Kierulf
www.smartgo.com

___
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/


[computer-go] When to pass in random games?

2006-12-08 Thread Peter Drake
I had been including pass as one of the possible random moves, just  
as likely as any other. I reasoned that, if there is a seki on the  
board, passing might be the best move.


On further thought, it's almost certainly more important to avoid  
leaving dead stones on the board. I changed this and took a big  
performance hit because the games run longer now. I'm down to 3400  
games / sec with one thread, roughly 6000 with two. I think it's  
worth it, though, because the random games will be more accurate.


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/



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


[computer-go] Unsigned random numbers in Java

2006-12-20 Thread Peter Drake

I tried creating a random number generator

java.util.Random rand = new java.util.Random()

and then asking it for a random int

rand.nextInt()

which I would then take modulo the board size to choose a random  
point. Since ints in Java are signed, I would have to take the  
absolute value of this int before the modulo operaton. (As in C/C++,  
Java's % operator does not behave as modulo, in the mathematical  
sense, when the first argument is negative. It might more accurately  
be called "remainder".)


This almost always works, but once in a very great while I would get  
a negative result anyway. I eventually hunted down the problem, which  
is explained in the API for the java.lang.Math.abs() method:


"Note that if the argument is equal to the value of  
Integer.MIN_VALUE, the most negative representable int value, the  
result is that same value, which is negative."


Yikes!

So, I'll have to check the sign of my result and try again in those  
rare (but not ignorably rare) instances where it is negative.


I hope this saves some time for the next person to encounter this  
problem.


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/



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


Re: [computer-go] Slow KGS computer Go Tournament idea

2006-12-20 Thread Peter Drake

Ah. Orego will have the "ponder" feature soon.

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Dec 20, 2006, at 3:11 PM, Don Dailey wrote:


ponder means to "use the opponents time to think"

- Don

On Wed, 2006-12-20 at 23:56 +0100, Ephrim Khong wrote:

hi,

steve uurtamo wrote:

this might be a counterproductive idea,
but does anyone who mc's also ponder?


a quick question from a non-nativ english speaker: what does "ponder"
mean here?

thanks
eph

___
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/

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


Time Zones (was Re: [computer-go] KGS Slow tournament)

2007-01-01 Thread Peter Drake

An interesting report.

I have a question about a line near the end where you address the two  
meanings of "UCT":


"UCT as applied to times stands for Universal Coordinate Time. It is  
the same, for most practical purposes including ours, as GMT,  
Greenwich Mean Time, the time zone based on London, England."


I had an experience where I set a Mac OS X "Dashboard Widget" clock  
to London time, and it was an hour off from UCT. I could only get the  
correct time by using Dakar as the city. Does London use something  
like Daylight Savings Time, making London time the same as GMT/UCT  
only part of the year?


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/


On Dec 23, 2006, at 10:58 AM, Nick Wedd wrote:

I have written up the week's Slow KGS bot tournament. My report,  
which is fuller than usual, is at

http://www.weddslist.com/kgs/past/s1/index.html

I think that, despite various accidents, the event was a success. I  
plan to hold another one, but only after the next release of the  
KGS server fixes the "five minute rule" bug.


Congratulations to the winner, MoGoBot19!

Nick
--
Nick Wedd[EMAIL PROTECTED]
___
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/


[computer-go] Allocating remaining time

2007-01-04 Thread Peter Drake

How much time should a program spend on each move?

If my program has t milliseconds left to use in a game, and there are  
an estimated m moves left on the board (e.g., this many vacant  
spaces), one reasonable choice is t / m.


In practice, this seems to spend too much time on early moves, which  
(under UCT/MC) is largely wasted time. Would it be better to use  
something like t / m**k, for some constant k? (Looking at graphs of  
such functions, k = 1.5 seems reasonable.)


It would also be interesting to look at the graphs of how much time  
humans spend on each move; is it usually less for the opening moves  
than for middle / endgame moves? Is there a smooth curve, or is there  
a relatively abrupt shift from joseki to analysis?


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/


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


Re: [computer-go] Testing against gnugo

2007-01-12 Thread Peter Drake
I used the Python version and it worked almost perfectly on the first  
try -- thanks!  Here's the command I used:


python /Applications/gnugo-3.6/interface/gtp_examples/twogtp.py -- 
black '' --white '/usr/local/bin/gnugo -- 
mode gtp --quiet --level 1 --never-resign --chinese-rules --capture- 
all-dead' --verbose 2 --komi 7.5 --size 9


It played out the game, but at the end this happened:

Black passes
   A B C D E F G H J
9 O O . O . O O O . 9
8 O O O O O O . O O 8
7 . O O . O O O . O 7
6 O O O O O . O O . 6
5 O O O O O O . O O 5
4 . O O . O . O O . 4
3 O O + O . O O . O 3
2 O . O O O O O O . 2 WHITE (O) has captured 51 stones
1 . O . O . O . O O 1 BLACK (X) has captured 0 stones
   A B C D E F G H J

Game 1: W+88.5 ERROR: GTP Command failed: unknown command
Game 1: ERROR: GTP Command failed: unknown command W+88.5
White: 3.400s CPU time

I interpret this to mean that the script sent "W+88.5" as a GTP  
command to my program, which of course didn't understand it. Is this  
standard GTP or something specific to GNU Go? Would a reasonable  
response be to silently acknowledge any command whose second  
character is "+"?


(Lest Orego's honor be besmirched, I should clarify that I was only  
allowing Orego one second per move while testing out the protocol.  
Hopefully it won't get wiped off the board by GNU Go level 1 if I  
give Orego more time.)


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Nov 20, 2006, at 3:44 AM, alain Baeckeroot wrote:


Le vendredi 17 novembre 2006 18:41, Peter Drake a écrit :

Orego speaks GTP, as does gnugo. I'd like to run a bunch of games
(say, 50) between them to see how many Orego wins. Does anyone have a
handy script (ideally bash or Python) for this?

Thanks,

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/


 Hi
In GNU Go package you have tools interface/gtp_examples/twogtp.xyz  
in various

languages.

my 2 cents
Alain
___
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/


Re: [computer-go] Can Go be solved???... PLEASE help!

2007-01-12 Thread Peter Drake
There are a number of definitions of solved, ranging from "a program  
exists that can beat any human" to "we can quickly determine, for any  
position, the best move and the result under optimal play". In the  
latter strong sense, I believe Go has only been solved up to 5x5,  
maybe 6x6.


There are some games, such as Hex, for which we know who wins from  
the starting position given optimal play, but we don't know how to  
figure out the best move.


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Jan 12, 2007, at 8:45 AM, terry mcintyre wrote:


From http://senseis.xmp.net/?7x7BestPlay it looks like 7x7 Go
may already have been solved. 5x5 was solved in 2002, according
to http://erikvanderwerf.tengen.nl/5x5/5x5solved.html

AFAIK, 9x9 Go has not been solved yet. 19x19 Go will surely exceed  
the capabilities of computers in my lifetime, I suspect.


 -- Terry McIntyre


- Original Message 
From: Chris Fant <[EMAIL PROTECTED]>
To: computer-go 
Sent: Friday, January 12, 2007 8:16:35 AM
Subject: Re: [computer-go] Can Go be solved???... PLEASE help!

Seems like a silly title.  Any game of perfect information that has a
clear rule set can be solved.  Plus, some would argue that any Go
already is solved (write simple algorithm and wait 1 billion years
while it runs).  A better question is, "Can Computer Go Surpass Human
Go?"  But again, clearly it will.  It's just a question of how long
until it occurs.


On 1/12/07, Mehdi Ahmadi <[EMAIL PROTECTED]> wrote:
> Hello & thank in advance for any interests/ responses.
>
> I'm unfortunately (or not) doing a dissertation as part of my  
final year
> project (undergraduate) on the game of Go. The exact title is:  
"Can the game
> of go be solved? Analysis of computational methodologies for go."  
And I have

> included my overall objectives below.
>
> I have many works from different people on different aspects of  
Computer Go
> which would make for great inclusion at different parts - but  
overall I am
> still gravely struggling. In reviewing some of these my greatest  
difficulty
> is in understanding exactly how say Monte-Carlo-UCT or even Alpha- 
Beta
> testing (pruning, etc) occur so as to be able to give a  
simplified depiction
> (illustrated or otherwise) of the process. Can this be done  
without having

> to go through the source code of say something like GNU Go?
>
> Also another difficulty I've had is in trying to get further  
information on
> the commonly referred top ranking packages, Handtalk, Go++, Many  
Faces of
> Go, etc due to their commercial nature? (the only thing I've been  
able to

> find which is a bit outdated:
> http://www.inventivity.com/OpenGo/Papers/EditedGoPapers.html).
>
> Lastly can any general categorisation - distinction be made of  
current
> approach/ implementations in trying to 'solve' Go. in comparison  
to say
> traditional disciplines used in trying to solve games (complex or  
otherwise)
> via computer? To put simply I am trying to have some core root  
comparison in

> current methodologies (if there is any?).
>
> If anyone has any suggestions/ guidance on anything mentioned - I  
would be

> eternally indebted.
>
> ==
> 5.1 OBJECTIVES
> . To concisely review all game playing aspects of Go (rules,  
openings,
> middle game, etc) and its relevance to the complication of  
meaningful

> measurements of interest.
> . To evaluate, gain and develop further understanding of specific  
game

> aspects including (eg):
>   - Representation:
> . Eyes
> . life-and-death
> . territory estimates and weakness
>   - Move Evaluation:
> . Territorial and strategic affluence.
> . Address specific and current implementation methodologies  
including:

>   - Search algorithms (Alpha-Beta - local/global, Monte-Carlo -UCT)
>   - Move Generation
>   - Positional Evaluation (Patterns, Neural Networks)
> . To detail inadequacies in research and reasons for shortfalls  
where

> applicable.
>
>
>
> ___
> 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/


We won't tell. Get more on shows you hate to love
(and love to hate): Yahoo! TV's Guilty Pleasures list.
___
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/


Re: [computer-go] Testing against gnugo

2007-01-12 Thread Peter Drake
Now there's an additional curiosity. The log of moves printed out by  
the GNU Go twogtp.py script seems to sometimes insert gratuitous  
passes or allow one player to play more than once in a row:


Black plays c9
White plays B9
Black plays d7
White plays D6
Black plays h6
White plays D4
White passes
White plays D8
Black plays c8
White plays D9
Black plays d5

Later, the script sent my program "genmove black" twice in a row,  
which of course confused it.


What's going on here? Has anyone else run into these problems?

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Jan 12, 2007, at 9:05 AM, Peter Drake wrote:

D'oh! I turns out this was the result of my program not handling  
the final_score command. It works fine now.


I hope this helps others,

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Jan 12, 2007, at 8:47 AM, Peter Drake wrote:

I used the Python version and it worked almost perfectly on the  
first try -- thanks!  Here's the command I used:


python /Applications/gnugo-3.6/interface/gtp_examples/twogtp.py -- 
black '' --white '/usr/local/bin/gnugo -- 
mode gtp --quiet --level 1 --never-resign --chinese-rules -- 
capture-all-dead' --verbose 2 --komi 7.5 --size 9


It played out the game, but at the end this happened:

Black passes
   A B C D E F G H J
9 O O . O . O O O . 9
8 O O O O O O . O O 8
7 . O O . O O O . O 7
6 O O O O O . O O . 6
5 O O O O O O . O O 5
4 . O O . O . O O . 4
3 O O + O . O O . O 3
2 O . O O O O O O . 2 WHITE (O) has captured 51 stones
1 . O . O . O . O O 1 BLACK (X) has captured 0 stones
   A B C D E F G H J

Game 1: W+88.5 ERROR: GTP Command failed: unknown command
Game 1: ERROR: GTP Command failed: unknown command W+88.5
White: 3.400s CPU time

I interpret this to mean that the script sent "W+88.5" as a GTP  
command to my program, which of course didn't understand it. Is  
this standard GTP or something specific to GNU Go? Would a  
reasonable response be to silently acknowledge any command whose  
second character is "+"?


(Lest Orego's honor be besmirched, I should clarify that I was  
only allowing Orego one second per move while testing out the  
protocol. Hopefully it won't get wiped off the board by GNU Go  
level 1 if I give Orego more time.)


Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/




On Nov 20, 2006, at 3:44 AM, alain Baeckeroot wrote:


Le vendredi 17 novembre 2006 18:41, Peter Drake a écrit :

Orego speaks GTP, as does gnugo. I'd like to run a bunch of games
(say, 50) between them to see how many Orego wins. Does anyone  
have a

handy script (ideally bash or Python) for this?

Thanks,

Peter Drake
Assistant Professor of Computer Science
Lewis & Clark College
http://www.lclark.edu/~drake/


 Hi
In GNU Go package you have tools interface/gtp_examples/ 
twogtp.xyz in various

languages.

my 2 cents
Alain
___
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/


[computer-go] Computer Go tournament at US Go Congress

2008-03-18 Thread Peter Drake
I'm still trying to set up a Computer Go tournament at the US Go  
Congress, August 2-9 here in Portland, Oregon.


We finally heard back from the where we're holding the Congress, and  
their policy on using their computer labs appears to be completely  
unworkable:


Begin forwarded message:

Also, these computer are pretty locked down, security-wise, meaning
that anything needing to be installed has to be done through the
User Support Office, with a minimum of four weeks notice.


Any thoughts on what to do now? I can't think of anything better than  
having people bring their own machines. (Since there will be prize  
money involved, we can't reasonably allow remote connections.)


I'm also trying to get some funding from industry, but I'm not  
holding my breath on that one.


Peter Drake
http://www.lclark.edu/~drake/




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

Re: [computer-go] Computer Go tournament at US Go Congress

2008-03-18 Thread Peter Drake

Can you expand on that? I'm not familiar with VMWare.

I suspect many programmers here would be concerned about the  
performance hit of working on a virtual machine.


Peter Drake
http://www.lclark.edu/~drake/



On Mar 18, 2008, at 7:46 PM, Michael Williams wrote:


If they install VMWare, would the virtual machines be as locked down?


Peter Drake wrote:
I'm still trying to set up a Computer Go tournament at the US Go  
Congress, August 2-9 here in Portland, Oregon.
We finally heard back from the where we're holding the Congress,  
and their policy on using their computer labs appears to be  
completely unworkable:

Begin forwarded message:

Also, these computer are pretty locked down, security-wise, meaning
that anything needing to be installed has to be done through the
User Support Office, with a minimum of four weeks notice.
Any thoughts on what to do now? I can't think of anything better  
than having people bring their own machines. (Since there will be  
prize money involved, we can't reasonably allow remote connections.)
I'm also trying to get some funding from industry, but I'm not  
holding my breath on that one.

Peter Drake
http://www.lclark.edu/~drake/
- 
---

___
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/


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

Re: [computer-go] Computer Go tournament at US Go Congress

2008-03-19 Thread Peter Drake

Thanks to everyone for all the comments.

Another question: Should the tournament be 9x9, 19x19, or both?

Peter Drake
http://www.lclark.edu/~drake/

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


[computer-go] BGA adopts AGA rules

2008-04-08 Thread Peter Drake

From the American Go Association e-journal:

THIS JUST IN: BRITS ADOPT U.S. RULES: The British Go Association  
officially adopted AGA rules of go at last weekend's British Go  
Congress at Hastings, reports BGA President Ron Bell, who was re- 
elected for another term. "AGA rules have two major benefits," Bell  
tells the E-Journal, "First, they neatly allow either the Japanese or  
Chinese styles of counting the score to be used. Second, the use of  
pass stones allows any disagreement between the players to be  
resolved by simply resuming play. Since the BGA Council adopted AGA  
rules last October, they've been used successfully in about half a  
dozen tournaments. We do have some members who wanted to keep the  
previous Japanese rule set - but the motion at the AGM to approve the  
change was passed with no opposition."


I'm not saying we should adjust our programs just yet, but we may be  
getting closer to an international standard. Of course, it's  
irrelevant until Japan, China, and Korea get on board.


You can find the rules in question here:

http://www.cs.cmu.edu/~wjh/go/rules/AGA.html


Peter Drake
http://www.lclark.edu/~drake/




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


Re: [computer-go] Some beginner's questions concerning go bots

2008-05-10 Thread Peter Drake

On May 10, 2008, at 7:01 AM, Carter Cheng wrote:

Thanks everyone for the responses. My go skills are somewhat  
limited (only 6-7kyu on KGS) so hopefully I am not belaboring the  
obvious.


I have a few followup questions-

1) What mathematically is a seki? I know this is a local draw but  
can it be determined statically at some point in all cases using  
some sort definition without placing stones on the board (i.e.  
searching). I only know of three cases here- the 1 eye each case  
with one shared liberty. two shared liberties and the half eye  
situation.


How about "a situation where there are neutral points yet the best  
move is to pass"?


3) GTP and time management and scoring after two passes. Are these  
issues discussed anywhere? Do libraries like Orego and Libgo  
contain code that already does this which can be used as a reference?


Yes, Orego contains some code for this. If you plan to work in Java,  
the Orego code is intended to be relatively easy to read, so you  
might start there.


BTW, Orego has moved to:

http://www.lclark.edu/~drake/Orego.html

Peter Drake
http://www.lclark.edu/~drake/

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

Re: [computer-go] Another beginner question: string management

2008-05-16 Thread Peter Drake

Carter:

It might help to look at the Orego code. In the doc directory,  
there's a file called Board-data-structures-explained.pdf.


Orego's current board-handling data structures are basically a Java  
"translation" of Lukasz Lew's Library of Effective Go Routines (EGO),  
although I've gone to somewhat greater length to explain them. If you  
find C++ easier to read than Java, by all means use Lew's code.


Orego is here (you'll have to download and unpack the latest .jar):

http://www.lclark.edu/~drake/Orego.html

Peter Drake
http://www.lclark.edu/~drake/



On May 16, 2008, at 4:29 PM, Carter Cheng wrote:

I am having some difficulties deciding on a string management  
scheme which copes gracefully with merging groups. A first glance  
for me this seems like it is quite a slow operation akin to  
capture. The problem is how to have each stone vertex know which  
chain record to look up for information. I am curious how this is  
done in the current generation of MC bots.


Is the naive way the best i.e. going through each stone and  
updating the pointer to the record?


Regards,

Carter.



___
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/

Re: [computer-go] Another beginner question: string management

2008-05-17 Thread Peter Drake

On May 16, 2008, at 5:41 PM, Carter Cheng wrote:

Thanks for pointing to the existence of this document. It clarifies  
some things about a conventional light playout UCT design(It also  
answered a question about pseudo-liberties I guess they are  
equivalent to what I term |multi set liberty|). From the code I  
gather Orego (thus libEgo) does update all the pointers to the  
chain record.


When two chains are merged, the chainIds for the stones in only one  
of them (ideally, the smaller one) have to be changed. This takes  
time proportional to the size of the smaller chain. Also the two  
circular linked lists have to be appended, which takes constant time.


See orego.core.Board.mergeChains().

There are still a few design tradeoffs I dont quite understand such  
as caching adjacent vertex properties in the vertex. How much and  
why does this result in a speedup?


Do you mean neighborCounts? This has a number of uses. It allows you  
to immediately:


1) Eliminate most points from being "eyelike". See isEyelike().

2) Determine the initial pseudoliberty count of a newly-placed stone  
(before merging with neighboring chains). See placeStone().


3) Tell whether you need to check for single-stone suicide or simple  
ko violation. See playNonPassUnoccupied().


4) Tell whether a point is surrounded when counting the score at the  
end of a playout. See playoutScore().


Lukasz could say more -- he spent a lot of time optimizing the heck  
out of this stuff.


Peter Drake
http://www.lclark.edu/~drake/

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


[computer-go] Tournament at US Go Congress

2008-06-03 Thread Peter Drake
Please find below preliminary rules for the computer Go tournament to  
be held at this year's US Go Congress in Portland, Oregon. Obviously,  
some details are being finalized.


If you can think of anything here (or not here) that could cause  
trouble, please let me know ASAP. I'd like the tournament to run as  
smoothly as possible.


Peter Drake
http://www.lclark.edu/~drake/


Tournament Director
Peter Drake (AND CO-DIRECTOR?)

Description
This 19x19 tournament is for computer programs only. While there have  
been notable breakthroughs in recent years, computer Go remains an  
open problem in artificial intelligence research.


Location
NEED LOCATION

Schedule
Round 1 1:00 PM, Sunday, August 3
Round 2 3:30 PM, Sunday, August 3
Round 3 7:00 PM, Sunday, August 3
Round 4 1:00 PM, Monday, August 4
Round 5 3:30 PM, Monday, August 4
Round 6 7:00 PM, Monday, August 4
Round 7 1:00 PM, Tuesday, August 5
Round 8 3:30 PM, Tuesday, August 5
Round 9 7:00 PM, Tuesday, August 5

Time Limits
60 minutes per player, no byo-yomi.

Rules
To give programmers as much time as possible to work out networking  
bugs, we will use the same rules as the monthly KGS computer go  
tournaments. These rules can be found at http://www.weddslist.com/ 
kgs/. Of particular note are that programs must implement GTP and  
that Chinese (area) scoring is used.


All hardware must be physically present in the competition room.  
Programmers may bring their own hardware; we will also provide some  
machines (NEED DESCRIPTION).


This is a formal tournament, meaning that people may not, for  
example, enter a-modified version of a public-domain program such as  
GNU Go. (See the web page above for a more detailed description.)  
Programmers who cannot attend the Congress may send alternate operators.


Prizes
Prize money has been donated by Hierarchical Systems Research  
Foundation and OTHER DONORS:


1st place   $500
2nd place   $300
3rd place   $150
4th place   $50



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

Re: [computer-go] Tournament at US Go Congress

2008-06-04 Thread Peter Drake

On Jun 3, 2008, at 6:41 PM, David Fotland wrote:
You need to specify how pairings will be made and how ties will be  
broken, etc.  I attached the announcement from one of the US  
computer go tournaments I ran at the go congress as an example.


The short story is "as in the monthly KGS tournaments". Nick W. or  
Bill S., can you provide more info here?


Will the games be played on KGS using network connections from the  
contest site, or will you provide a referee program?  If the games  
are played on KGS, why do people have to drag their computers to  
Portland?




We will use KGS. There are three reasons for having competitors  
present in person:


1) As an anti-cheating measure. Since there is money at stake, we  
don't want to make it trivial for a strong human player to masquerade  
as a program.


2) As a sort of scientific conference, giving Go programmers an  
opportunity to network in a way that is not possible over email.


3) To create an event on which the media can report.


Peter Drake
http://www.lclark.edu/~drake/

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

Re: [computer-go] Tournament at US Go Congress

2008-06-04 Thread Peter Drake

On Jun 4, 2008, at 7:07 PM, David Doshay wrote:

I would like to strongly suggest that enough rounds be run that  
every program plays every other program twice, once as B and once  
as W.


This seems like a good idea, but I have two concerns:

1) Can the KGS tournament system support this? Nick, Bill?

2) If we get, say, a dozen programs, each program will have to play  
22 games, right? That's conceivably 44 hours.


I was at first mystified by David Fotland's comment that "A round  
robin can get many more rounds in the same time." Are you pointing  
out that, if programs resign, other rounds can begin? Do a lot of the  
KGS monthly tournament games end in resignation with a lot of time  
left on the clock? Monte Carlo players tend to use almost all of  
their time.


Perhaps I should say something like, "Time permitting, we will run a  
double round-robin tournament."


As set, the schedule does not have breaks for meals, and I think  
that for the health and happiness of the programmers, such breaks  
would be a good idea. I know that 3 days in a row without a proper  
dinner break will be very hard on my stomach.


For what it's worth, the current schedule has dinner from 5:30-7:00.

Peter Drake
http://www.lclark.edu/~drake/


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


[computer-go] US Go Congress Computer Tournament: Who's Playing

2008-06-09 Thread Peter Drake
We'd like to get an estimate of numbers. Who's planning to enter the  
US Go Congress Computer Go Tournament?


Here is the latest version of the info on the tournament:

Computer Go Tournament

Tournament Director
Peter Drake (AND CO-DIRECTOR?)

Description
This 19x19 tournament is for computer programs only. While there have  
been notable breakthroughs in recent years, computer Go remains an  
open problem in artificial intelligence research.


Location
NEED LOCATION (at US Go Congress in Portland, Oregon)

Schedule
Rounds will be played as games are completed, beginning at 1:00 PM,  
Sunday, August 3. Time permitting, we hope to run a double round- 
robin tournament.


Time Limits
60 minutes per player, no byo-yomi. If there are many entrants, we  
may reduce this to 45 minutes per player.


Rules
To give programmers as much time as possible to work out networking  
bugs, we will use the same rules as the monthly KGS computer go  
tournaments. These rules can be found at http://www.weddslist.com/ 
kgs/. Of particular note are that programs must implement GTP and  
that Chinese (area) scoring is used.


All hardware must be physically present in the competition room.  
Programs may not rely on any remote resources. Programmers must be  
able to roughly explain and demonstrate the program’s “thought  
process”, e.g., by showing logging output as the program responds to  
an arbitrary position. Programmers may bring their own hardware; we  
will also provide some machines (NEED DESCRIPTION).


Programs must be entered by the authors, although authors who cannot  
attend the Congress may sent alternate operators. If a program is  
based on another program (e.g., GNU Go or MoGo), it must contain a  
significant amount of new code. The tournament director has final say  
over what constitutes a "significant amount"; as a guideline, a  
radically different search algorithm or life-and-death evaluator  
would be significant, but tweaking some parameters or adding new  
patterns to a database would not.  Such derivative entries must  
include written permission from the authors of the original program.  
If you have any doubts about the eligibility of your program, contact  
the TD before buying an airline ticket!


Prizes
Prize money has been donated by Hierarchical Systems Research  
Foundation and other anonymous donors. At a minimum, the following  
prizes will be awarded:


1st place   $400
2nd place   $200
3rd place   $100
4th place   $50



Peter Drake
http://www.lclark.edu/~drake/



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

[computer-go] Re: US Go Congress Computer Tournament: Who's Playing

2008-06-12 Thread Peter Drake

So far we've had two entries, both with caveats.

Could others please sound off on whether you're coming, and if not,  
why not?


1) Can't afford the time
2) Can't afford the money
3) Don't feel my program is strong enough to compete
4) Have a conflicting event
5) Other (please explain)

Thanks,

Peter Drake
http://www.lclark.edu/~drake/



On Jun 9, 2008, at 10:25 AM, Peter Drake wrote:

We'd like to get an estimate of numbers. Who's planning to enter  
the US Go Congress Computer Go Tournament?


Here is the latest version of the info on the tournament:

Computer Go Tournament

Tournament Director
Peter Drake (AND CO-DIRECTOR?)

Description
This 19x19 tournament is for computer programs only. While there  
have been notable breakthroughs in recent years, computer Go  
remains an open problem in artificial intelligence research.


Location
NEED LOCATION (at US Go Congress in Portland, Oregon)

Schedule
Rounds will be played as games are completed, beginning at 1:00 PM,  
Sunday, August 3. Time permitting, we hope to run a double round- 
robin tournament.


Time Limits
60 minutes per player, no byo-yomi. If there are many entrants, we  
may reduce this to 45 minutes per player.


Rules
To give programmers as much time as possible to work out networking  
bugs, we will use the same rules as the monthly KGS computer go  
tournaments. These rules can be found at http://www.weddslist.com/ 
kgs/. Of particular note are that programs must implement GTP and  
that Chinese (area) scoring is used.


All hardware must be physically present in the competition room.  
Programs may not rely on any remote resources. Programmers must be  
able to roughly explain and demonstrate the program’s “thought  
process”, e.g., by showing logging output as the program responds  
to an arbitrary position. Programmers may bring their own hardware;  
we will also provide some machines (NEED DESCRIPTION).


Programs must be entered by the authors, although authors who  
cannot attend the Congress may sent alternate operators. If a  
program is based on another program (e.g., GNU Go or MoGo), it must  
contain a significant amount of new code. The tournament director  
has final say over what constitutes a "significant amount"; as a  
guideline, a radically different search algorithm or life-and-death  
evaluator would be significant, but tweaking some parameters or  
adding new patterns to a database would not.  Such derivative  
entries must include written permission from the authors of the  
original program. If you have any doubts about the eligibility of  
your program, contact the TD before buying an airline ticket!


Prizes
Prize money has been donated by Hierarchical Systems Research  
Foundation and other anonymous donors. At a minimum, the following  
prizes will be awarded:


1st place   $400
2nd place   $200
3rd place   $100
4th place   $50



Peter Drake
http://www.lclark.edu/~drake/





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

[computer-go] Ladders and UCT

2008-06-16 Thread Peter Drake
In Sunday's tournament, Orego lost a game embarrassingly by playing  
out a lost ladder. I know how to write a ladder checker in general,  
but I'm not sure how to incorporate such a thing into UCT. What are  
other people doing?


Peter Drake
http://www.lclark.edu/~drake/




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


Re: [computer-go] Ladders and UCT

2008-06-16 Thread Peter Drake

Mark:

Can you say more? Do you mean ALWAYS play such moves first if they  
are available, do so with some probability, or what?


Peter Drake
http://www.lclark.edu/~drake/



On Jun 16, 2008, at 4:09 PM, Mark Boon wrote:


play ladder-capturing and ladder-escaping moves during playout


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

Re: [computer-go] Ladders and UCT

2008-06-17 Thread Peter Drake
Without the 10% random moves, would every playout from a given leaf  
be identical?


Peter Drake
http://www.lclark.edu/~drake/



On Jun 17, 2008, at 3:14 AM, Magnus Persson wrote:

Valkyria plays uniformily the highest ranked move. Ladders as a  
response to the last move are almost always ranked above all else.  
But it has a parameter that makes it play any move with 10%  
probability no matter what the tactical situation is on the board.  
I have not tested if these really is beneficial. If it is it is  
probably really a small change to winning rate.


Magnus

Quoting Carter Cheng <[EMAIL PROTECTED]>:

I hope you don't mind me chiming in here. I think I asked this   
question quite recently on the mailing list and the reply I  
received  from Magnus Persson (I hope I am not misquoting him) was  
that  Valkyria adjusts the probability distribution based on a  
simple  ladder readout which is a function which returns either  
success fail  or unknown in order to feed this information into  
the playout process.



--- On Mon, 6/16/08, Peter Drake <[EMAIL PROTECTED]> wrote:


From: Peter Drake <[EMAIL PROTECTED]>
Subject: Re: [computer-go] Ladders and UCT
To: "computer-go" 
Date: Monday, June 16, 2008, 10:13 PM
Mark:

Can you say more? Do you mean ALWAYS play such moves first
if they
are available, do so with some probability, or what?

Peter Drake
http://www.lclark.edu/~drake/



On Jun 16, 2008, at 4:09 PM, Mark Boon wrote:

> play ladder-capturing and ladder-escaping moves during
playout___
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/





--
Magnus Persson
Berlin, Germany
___
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/

[computer-go] Congress tournament: you can send a proxy

2008-06-18 Thread Peter Drake

For the tournament at the US Go Congress:

Please remember that you can send someone else to run your program if  
you can't attend yourself. You might consider finding someone who is  
attending anyway and would be willing to run your program.


Is there anyone attending the Congress who does NOT have a program and  
would be willing to stand in for someone else? (I have some research  
assistants who may be able to help with this.)


On a related note, please consider entering even if your program is  
weak. You don't have to come out on top to win something, and I  
haven't yet heard from MoGo, CrazyStone, or any other programs known  
to be very strong. You might do better than you think!


Peter Drake
http://www.lclark.edu/~drake/



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


[computer-go] List of contestants for US Go Congress tournament

2008-06-22 Thread Peter Drake
Here's the info I have so far. Please appraise me of any errors or  
omissions.



Program Primary Author  Notes

SlugGo		David Doshay	As the author is involved in organizing the  
tournament,

this program will not be eligible for prize 
money

Orego   Peter Drake Same as above

FirstGo Edward de Grijs Needs operator, will borrow hardware

ManyFaces   David Fotland

Argus   Sam Gross

HouseBotJason House Needs operator, will borrow hardware


Any others? None of the very strong UCT programs are here, so who  
knows who will win the $400 first prize?


Peter Drake
http://www.lclark.edu/~drake/



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

Re: [computer-go] List of contestants for US Go Congress tournament

2008-06-23 Thread Peter Drake

Terry -- thanks for the offer! We'll likely take you up on it.

We're looking at starting after lunch on Sunday and finishing up by  
dinner on Tuesday. Hopefully things will be automated enough that, if  
necessary, games can continue overnight.


Peter Drake
http://www.lclark.edu/~drake/



On Jun 23, 2008, at 10:50 AM, terry mcintyre wrote:

What is the schedule for this computer tournament? If it does not  
conflict with the main tournament, I could operate a program for  
somebody. It looks like the US open games begin at 9 AM, and  
there's 90 minutes on each clock, so it's reasonable to expect that  
game would finish by noon.


Terry McIntyre <[EMAIL PROTECTED]>

“Wherever is found what is called a paternal government, there is  
found state education. It has been discovered that the best way to  
insure implicit obedience is to commence tyranny in the nursery.”



Benjamin Disraeli, Speech in the House of Commons [June 15, 1874]


- Original Message 
From: Peter Drake <[EMAIL PROTECTED]>
To: Computer Go 
Sent: Sunday, June 22, 2008 10:41:33 PM
Subject: [computer-go] List of contestants for US Go Congress  
tournament


Here's the info I have so far. Please appraise me of any errors or  
omissions.



Program Primary Author  Notes

SlugGo		David Doshay	As the author is involved in organizing the  
tournament,

this program will not be eligible for prize 
money

Orego   Peter Drake Same as above

FirstGo Edward de Grijs Needs operator, will borrow hardware

ManyFaces   David Fotland

Argus   Sam Gross

HouseBotJason House Needs operator, will borrow hardware


Any others? None of the very strong UCT programs are here, so who  
knows who will win the $400 first prize?


Peter Drake
http://www.lclark.edu/~drake/




___
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/

[computer-go] 9x9 server

2008-06-24 Thread Peter Drake
It looks like the server is running, but the standings page is not  
being updated:


http://cgos.boardspace.net/9x9/standings.html

Peter Drake
http://www.lclark.edu/~drake/



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

[computer-go] UCB/UCT and moving targets

2008-06-25 Thread Peter Drake
UCB (and hence UCT) would treat the following sequences of wins (1)  
and losses (0) the same:


01010101010101010101010101010101



Clearly, it would be better to favor the second sequence, because that  
move has done more for us lately. Because the tree is growing, the  
values of the moves are moving targets.


Has anyone done any work dealing with this phenomenon, e.g., somehow  
giving more weight to more recent playouts?


Peter Drake
http://www.lclark.edu/~drake/



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


[computer-go] New paper on genetic algorithms for Go

2008-06-25 Thread Peter Drake
Drake, P. & Chen, Y.-P. (2008) “Coevolving Partial Strategies for the  
Game of Go”. In Proceedings of the 2008 International Conference on  
Genetic and Evolutionary Methods, CSREA Press.


URL:

http://webdisk.lclark.edu/drake/publications/drake-gem2008-final.pdf

We've made some considerable improvements since the results reported  
here. It's not as strong as UCT yet, but one of our genetic player  
(Orego-genetic2) has a rating of 967 on the 9x9 CGOS. Expect more in  
the coming weeks...


Peter Drake
http://www.lclark.edu/~drake/




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


Re: [computer-go] UCB/UCT and moving targets

2008-06-26 Thread Peter Drake

On Jun 26, 2008, at 1:35 AM, Magnus Persson wrote:


Quoting Peter Drake <[EMAIL PROTECTED]>:

UCB (and hence UCT) would treat the following sequences of wins  
(1) and

losses (0) the same:

01010101010101010101010101010101




I have two comments. Isn't the problem here that UCT will not  
search the second sequence at all because it is so bad initially?


Well, UCT never really discards a branch, just samples it less and  
less often. It would eventually go back to sequence 2 and discover  
that it had become good.


So will there ever be a situation like this? UCT will more likely  
continue to sample the first and third sequenc settling for the  
first if their are no change again. And when it finally discovers  
that sequene 2 is good it will quickly choose it.


The second thing is that in practice you will rarely get any clear  
patterns like this so how would you be able to detect any recency?


I'm thinking of a situation where move A looks good when we're  
assuming a random response from the opponent, but once the child node  
starts using UCB, it is discovered that the opponent has a very good  
response, so now runs through A start losing. Later, runs through A  
start winning again because we discover a good counterresponse...


One simple trick is to always replay a move in the tree if it won  
the last time the position was visited, and only use UCT for  
positions where the last played moved lost. Should'nt this work  
like a dream if sequence 2 truly goes to 100% winrate directly  
after the wirst win is scored?


Probably, but we rarely get such pure victory branches. I have a  
number of schemes in mind, though.


Has anyone tried this empirically?

Peter Drake
http://www.lclark.edu/~drake/



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


Re: [computer-go] UCB/UCT and moving targets

2008-06-26 Thread Peter Drake

Can anyone point me to a thread, or at least some buzzwords?

I'm having little luck googling for words like "recent" and "forget".

Thanks,

Peter Drake
http://www.lclark.edu/~drake/



On Jun 26, 2008, at 11:40 AM, Ivan Dubois wrote:


This same topic already occured on the list some time ago.
I think the idea is to "forget" older results. For exemple you can  
compute the win rate based only on the last 500 simulations. Older  
information may not be up to date and will not help much because 500  
simulations is enough to compute an accurate winrate.
The problem is that you have to store the result of 500 simulations  
at each node. I think some people reported that it does indeed  
increase the strength of their program.


- Original Message - From: "Peter Drake" <[EMAIL PROTECTED]>
To: "Computer Go" 
Sent: Wednesday, June 25, 2008 5:48 PM
Subject: [computer-go] UCB/UCT and moving targets


UCB (and hence UCT) would treat the following sequences of wins  
(1)  and losses (0) the same:


01010101010101010101010101010101



Clearly, it would be better to favor the second sequence, because  
that move has done more for us lately. Because the tree is growing,  
the  values of the moves are moving targets.


Has anyone done any work dealing with this phenomenon, e.g.,  
somehow giving more weight to more recent playouts?


Peter Drake
http://www.lclark.edu/~drake/



___
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/






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


Re: [computer-go] UCB/UCT and moving targets

2008-06-26 Thread Peter Drake

Just what I was looking for -- thanks!

On Jun 26, 2008, at 12:04 PM, Rémi Coulom wrote:


Peter Drake wrote:

Can anyone point me to a thread, or at least some buzzwords?

I'm having little luck googling for words like "recent" and "forget".

Thanks,

Peter Drake
http://www.lclark.edu/~drake/


Try "discounted UCB":

http://computer-go.org/pipermail/computer-go/2007-March/009033.html
http://www.lri.fr/~sebag/Slides/Venice/Kocsis.pdf

Rémi
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Peter Drake
http://www.lclark.edu/~drake/



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


[computer-go] Hardware at US Go Congress tournament

2008-07-01 Thread Peter Drake
Since a few people have asked, the stats on the machines we have to  
loan for the tournament are given below.


Peter Drake
http://www.lclark.edu/~drake/


Begin forwarded message:


You bet.  The boxes we have are currently running Linux, but
can be made to dual-boot Windows if we need that for the
event.  Attached please find some statistics.  I *think* the
two "processors" are actually two-way hyperthreading, but
I'd have to check.

Bart Massey

#

$ uname -a
Linux astor.cs.pdx.edu 2.6.22-14-generic #1 SMP Tue Feb 12 07:42:25  
UTC 2008 i686 GNU/Linux

$ astor @ cat /proc/cpuinfo
processor   : 0
vendor_id   : GenuineIntel
cpu family  : 15
model   : 4
model name  : Intel(R) Pentium(R) 4 CPU 3.20GHz
stepping: 1
cpu MHz : 3200.188
cache size  : 1024 KB
physical id : 0
siblings: 2
core id : 0
cpu cores   : 1
fdiv_bug: no
hlt_bug : no
f00f_bug: no
coma_bug: no
fpu : yes
fpu_exception   : yes
cpuid level : 5
wp  : yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca  
cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx  
constant_tsc pni monitor ds_cpl cid xtpr

bogomips: 6405.84
clflush size: 64

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 15
model   : 4
model name  : Intel(R) Pentium(R) 4 CPU 3.20GHz
stepping: 1
cpu MHz : 3200.188
cache size  : 1024 KB
physical id : 0
siblings: 2
core id : 0
cpu cores   : 1
fdiv_bug: no
hlt_bug : no
f00f_bug: no
coma_bug: no
fpu : yes
fpu_exception   : yes
cpuid level : 5
wp  : yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca  
cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx  
constant_tsc pni monitor ds_cpl cid xtpr

bogomips: 6400.46
clflush size: 64

$ cat /proc/meminfo
MemTotal:  1026684 kB
MemFree: 17664 kB
Buffers:232732 kB
Cached: 553628 kB
SwapCached:816 kB
Active: 817204 kB
Inactive:79160 kB
HighTotal:  122044 kB
HighFree:  244 kB
LowTotal:   904640 kB
LowFree: 17420 kB
SwapTotal:  995988 kB
SwapFree:   957912 kB
Dirty:   4 kB
Writeback:   0 kB
AnonPages:  109188 kB
Mapped:  30208 kB
Slab:38032 kB
SReclaimable:27016 kB
SUnreclaim:  11016 kB
PageTables:   1680 kB
NFS_Unstable:0 kB
Bounce:  0 kB
CommitLimit:   1509328 kB
Committed_AS:   233196 kB
VmallocTotal:   114680 kB
VmallocUsed:  6500 kB
VmallocChunk:   107852 kB
$


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

Re: [computer-go] Graph history interaction

2008-07-11 Thread Peter Drake
My sense is that most programs ignore superko except for checking  
right before a "real" move (as opposed to a playout move) is played.


The way out of the infinite loop is to set a maximum number of moves  
in a playout; abort the playout if you reach this threshold.


On Jul 11, 2008, at 9:03 AM, Jason House wrote:

I tracked down a rare hang/crash in my bot and I'm curious how  
others handle this.


I use simple ko state as part of my hash lookup, but I don't use  
super ko. I can't store the whole graph history because then there  
would be no transpositions at all. I can't really update legal moves  
to exclude super ko because the super ko legality changes based on  
how a node is reached.


In particular, a deterministic algorithm like UCT can get caught in  
an infinite loop. My random playouts may take a bit longer from  
super ko, but it gets quickly resolved.


Sent from my iPhone
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Peter Drake
http://www.lclark.edu/~drake/



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


Re: [computer-go] Graph history interaction

2008-07-11 Thread Peter Drake
Since the tree is of finite size, you will eventually get to the  
nondeterministic part of the playout. The moves here will probably  
finish the playout (one way or another) before hitting the maximum  
move threshold, so the playout will not be aborted but will update the  
tree.


On Jul 11, 2008, at 9:39 AM, Jason House wrote:

The way out of the infinite loop is to set a maximum number of  
moves in a playout; abort the playout if you reach this threshold.


That trick only works when your playout is non-deterministic.  
Outside the search tree, things are non-deterministic and cycles are  
easy to break or ignore. Inside the search tree it isn't that easy.  
If no cached data is updated from an aborted search, UCT will walk  
the tree the same way it did for the last playout.


When the cycle is *inside* the search tree, this means another  
infinite/aborted playout. The abortted playout trick would cause the  
bot to cycle uselessly until the game takes another path.


Peter Drake
http://www.lclark.edu/~drake/



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


Re: [computer-go] Graph history interaction

2008-07-11 Thread Peter Drake
Ah, I forgot that you had a transposition table. (Orego currently does  
not.)


I, too, will be interested to hear the solution to this problem.

Peter Drake
http://www.lclark.edu/~drake/


On Jul 11, 2008, at 10:49 AM, Jason House wrote:


On Jul 11, 2008, at 12:43 PM, Peter Drake <[EMAIL PROTECTED]> wrote:

Since the tree is of finite size, you will eventually get to the  
nondeterministic part of the playout.


Unforunately, no. A graph cycle has finite size, in the case I  
debugged yesterday, it took only 4 nodes. I'm not sure how big the  
whole tree was, but it was at least 20 ply



The moves here will probably finish the playout (one way or  
another) before hitting the maximum move threshold, so the playout  
will not be aborted but will update the tree.



On Jul 11, 2008, at 9:39 AM, Jason House wrote:

The way out of the infinite loop is to set a maximum number of  
moves in a playout; abort the playout if you reach this threshold.


That trick only works when your playout is non-deterministic.  
Outside the search tree, things are non-deterministic and cycles  
are easy to break or ignore. Inside the search tree it isn't that  
easy. If no cached data is updated from an aborted search, UCT  
will walk the tree the same way it did for the last playout.


When the cycle is *inside* the search tree, this means another  
infinite/aborted playout. The abortted playout trick would cause  
the bot to cycle uselessly until the game takes another path.


Peter Drake
http://www.lclark.edu/~drake/



___
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/





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


Re: [computer-go] Graph history interaction

2008-07-11 Thread Peter Drake
Another possibility would be to keep a list of nodes visited in the  
"tree" on each playout. In the rare event where the length of this  
list exceeds some max game length threshold, go back through the list  
looking for repetitions. Mark the first move that led to a repetition  
as a loss for the player that made that move. This should eventually  
cause the move to be rated so poorly by UCB that it will not be  
explored further.


On Jul 11, 2008, at 11:12 AM, Sanghyeon Seo wrote:


2008/7/12 Jason House <[EMAIL PROTECTED]>:
I tracked down a rare hang/crash in my bot and I'm curious how  
others handle

this.

I use simple ko state as part of my hash lookup, but I don't use  
super ko. I

can't store the whole graph history because then there would be no
transpositions at all. I can't really update legal moves to exclude  
super ko

because the super ko legality changes based on how a node is reached.


Fuego source has this interesting comment:

Capture History

As a heuristic fix to the Graph-History-Interaction (GHI) problem,
the hash code also includes a component, that depends on the order, in
which stones were captured.

The idea is to eliminate hashing problems caused by the same
position reached at different level in the search, or recapture
is legal in one branch and illegal in another.

It is not a complete solution to the GHI problem.

--
Seo Sanghyeon
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Peter Drake
http://www.lclark.edu/~drake/



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


Re: [computer-go] Graph history interaction

2008-07-11 Thread Peter Drake
Do you always check it? Would it be faster to hold off on this check  
until you realize that you're in a cycle?


On Jul 11, 2008, at 12:06 PM, John Fan wrote:


I guess you missed my message.

I solved this by comparing the current node with its ancestors in  
the  path. On each walking down the tree, I pass the list of nodes  
in the same path. Then I check whether the current node already  
appear in the path. If yes, I assign a loss there. To speed it up, I  
only check the current node against 6 nodes before it.


It is not perfect or accurate solution for the issue, but it solves  
the problem at hand.




On Fri, Jul 11, 2008 at 12:23 PM, John Fan <[EMAIL PROTECTED]> wrote:
 I had the same issue in UCT tree. What I did is to check if the  
current node is a ko move, then compare it with its latest 6  
ancestors. If any match is found, then consider the move is a loss.  
So it cuts off the infinite loop.



On Fri, Jul 11, 2008 at 12:08 PM, Peter Drake <[EMAIL PROTECTED]>  
wrote:
My sense is that most programs ignore superko except for checking  
right before a "real" move (as opposed to a playout move) is played.


The way out of the infinite loop is to set a maximum number of moves  
in a playout; abort the playout if you reach this threshold.



On Jul 11, 2008, at 9:03 AM, Jason House wrote:

I tracked down a rare hang/crash in my bot and I'm curious how  
others handle this.


I use simple ko state as part of my hash lookup, but I don't use  
super ko. I can't store the whole graph history because then there  
would be no transpositions at all. I can't really update legal moves  
to exclude super ko because the super ko legality changes based on  
how a node is reached.


In particular, a deterministic algorithm like UCT can get caught in  
an infinite loop. My random playouts may take a bit longer from  
super ko, but it gets quickly resolved.


Sent from my iPhone
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Peter Drake
http://www.lclark.edu/~drake/




___
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/


Peter Drake
http://www.lclark.edu/~drake/



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

Re: [computer-go] US Congress - computer go operator volunteer

2008-07-12 Thread Peter Drake
I believe all of the programs that need operators (FirstGo, HouseBot,  
and Leela) all run on Windows. I hope someone will take Terry up on  
his generous offer!


Peter Drake
http://www.lclark.edu/~drake/



On Jul 11, 2008, at 12:30 PM, terry mcintyre wrote:

I will be attending the US Congress in Portland, OR from Aug 2-10.  
Will be bringing a core 2 duo laptop running Linux.


Intel(R) Core(TM)2 Duo CPU T7300  @ 2.00GHz
MemTotal:  2034016 kB

If anyone needs an operator for the Computer Go tournament, let me  
know. Can use my laptop or (if you arrange availability) other  
equipment.


If your program can utilize a quadcore, I might be persuaded to  
shlep my HP desktop along, but it's easier for me to travel light;  
will be sharing a car with two others for a 14 hour drive.


Unix systems administration is my day job; can deal with most of  
the usual setup hassles. ;)


 Terry McIntyre <[EMAIL PROTECTED]>


“Wherever is found what is called a paternal government, there is  
found state education. It has been discovered that the best way to  
insure implicit obedience is to commence tyranny in the nursery.”


Benjamin Disraeli, Speech in the House of Commons [June 15, 1874]




___
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/

[computer-go] Human-computer showdown

2008-07-21 Thread Peter Drake

(This is from the US Go Congress to be held in Portland, Oregon.)

On Thursday, August 7, at 1:00 PM, Kim MyungWan 8p will take on MoGo,  
the world’s strongest computer Go program. MoGo will connect remotely  
from France, where it will be running on a supercomputer boasting  
over 3,000 processor cores. The game will be broadcast on KGS.


Peter Drake
http://www.lclark.edu/~drake/



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


Re: [computer-go] Human-computer showdown

2008-07-21 Thread Peter Drake
19x19. There will be a handicap. We're currently planning on five  
blitz games to adjust the handicap, then one "real" game.


On Jul 21, 2008, at 2:07 PM, Eric Pettersen wrote:


9x9 or 19x19?

On Jul 21, 2008, at 2:04 PM, Peter Drake wrote:


(This is from the US Go Congress to be held in Portland, Oregon.)

On Thursday, August 7, at 1:00 PM, Kim MyungWan 8p will take on  
MoGo, the world’s strongest computer Go program. MoGo will connect  
remotely from France, where it will be running on a supercomputer  
boasting over 3,000 processor cores. The game will be broadcast on  
KGS.


Peter Drake
http://www.lclark.edu/~drake/



___
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/


Peter Drake
http://www.lclark.edu/~drake/



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


Re: [computer-go] Human-computer showdown

2008-07-21 Thread Peter Drake

Pacific time.

We'll do this in the Computer Go room. We'll announce the usernames  
when the time comes.


On Jul 21, 2008, at 2:28 PM, Jason House wrote:


1pm in which timezone? Which room & user name(s) will be used on KGS?

Sent from my iPhone

On Jul 21, 2008, at 5:04 PM, Peter Drake <[EMAIL PROTECTED]> wrote:


(This is from the US Go Congress to be held in Portland, Oregon.)

On Thursday, August 7, at 1:00 PM, Kim MyungWan 8p will take on  
MoGo, the world’s strongest computer Go program. MoGo will connect  
remotely from France, where it will be running on a supercomputer  
boasting over 3,000 processor cores. The game will be broadcast on  
KGS.


Peter Drake
http://www.lclark.edu/~drake/

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


Peter Drake
http://www.lclark.edu/~drake/



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


Re: [computer-go] What Do You Need Most?

2008-07-30 Thread Peter Drake

More hardware would help, of course.

More data would be good. Particularly useful would be game records  
(for training) and sets of whole-board positions (9x9 and 19x19).  
Pattern libraries and opening libraries would be good, too, but  
incorporating them into existing programs may be difficult.


I think the interesting algorithmic area is somehow localizing the  
search. My team is working on it...


The community is quite good. I wonder if a 13x13 CGOS would help,  
because many of us are doing well at 9x9, but 19x19 is MUCH harder.


Peter Drake
http://www.lclark.edu/~drake/


On Jul 27, 2008, at 6:23 PM, Darren Cook wrote:


I have a strong interest in seeing a 19x19 computer go program that is
at least 3-dan by 2010. The recent jump in strength on the 9x9 board  
has
given me new hope and I want to ask people here, especially the  
authors
of strong programs, what you now need to make the next jump in  
strength.

There seem to be four broad categories:

* More hardware (CPU cycles? Memory? Faster networking? Do you just
need that hardware for offline tuning, or for playing too?)

* More data

* New algorithms (if so, to solve exactly what? evaluation? search?  
other?)


* More community

By community I mean things like this mailing list, CGOS, open source
projects, etc.

By data I mean things like: game records, or board positions, marked  
up
with correct/incorrect moves; game records generally; pattern  
libraries;

test suites; opening libraries.

Darren

--
Darren Cook, Software Researcher/Developer
http://dcook.org/mlsn/ (English-Japanese-German-Chinese-Arabic
   open source dictionary/semantic network)
http://dcook.org/work/ (About me and my work)
http://darrendev.blogspot.com/ (blog on php, flash, i18n, linux, ...)
___
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/


[computer-go] Re: IMPORTANT: US Go Congress Computer Go Tournament

2008-07-30 Thread Peter Drake
There are a number of important updates regarding the Computer Go  
tournament next week at the US Go Congress in Portland, OR.


First, timing: due to unforeseen circumstances, we won't be able to  
start the tournament (or get into the lab) until Monday, August 4. I  
plan to open the lab at 9:00 AM, allow an hour for setup, fitting  
SlugGo through the door, etc., then start the first round at 10:00.  
There MAY also be some media present to talk with all of you; the  
match later in the week pitting MoGo on a supercomputer vs an 8-dan  
professional looks like it might draw some attention.


Second, participants. Here's my current list:

Program Primary Author  Notes

SlugGo		David Doshay		As the author is involved in organizing the  
tournament,

this program will not be eligible for 
prize money

Orego   Peter Drake Same as above
Operated by Andrew Hubbard, will borrow 
hardware

FirstGo		Edward de Grijs		Operated by Seth Pellegrino, will borrow  
hardware


ManyFaces   David Fotland

Argus   Sam Gross

HouseBotJason House Operated by Terry McIntyre

Leela		Gian-Carlo Pascutto	Operated by Kevin Imber, will borrow  
hardware (Windows)


ButterBot	Metascopic, Inc		Operated by Jason Galbraith, will borrow  
hardware


IT IS YOUR RESPONSIBILITY to contact your operator in advance of the  
tournament. Operators' email addresses are CCed above. Make sure they  
have your software and know how to run it!


Please let me know immediately if there are any changes to the list of  
participating programs.


Finally, I need to know the KGS USERNAME each of your programs will be  
using.


Here's hoping for a good tournament!

Peter Drake
http://www.lclark.edu/~drake/



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

Re: [computer-go] What Do You Need Most?

2008-07-30 Thread Peter Drake
Indeed! That's part of the motivation of organizing the tournament at  
the US Go Congress.


Perhaps we (or the subset of us within a given country) could just  
pick an existing conference (something on machine learning or games)  
and all go there...


Peter Drake
http://www.lclark.edu/~drake/


On Jul 30, 2008, at 2:36 PM, Łukasz Lew wrote:


It would be nice to have a workshop from time to time where we could
share our skills.
Lukasz

On Mon, Jul 28, 2008 at 03:23, Darren Cook <[EMAIL PROTECTED]> wrote:
I have a strong interest in seeing a 19x19 computer go program that  
is
at least 3-dan by 2010. The recent jump in strength on the 9x9  
board has
given me new hope and I want to ask people here, especially the  
authors
of strong programs, what you now need to make the next jump in  
strength.

There seem to be four broad categories:

* More hardware (CPU cycles? Memory? Faster networking? Do you just
need that hardware for offline tuning, or for playing too?)

* More data

* New algorithms (if so, to solve exactly what? evaluation? search?  
other?)


* More community

By community I mean things like this mailing list, CGOS, open source
projects, etc.

By data I mean things like: game records, or board positions,  
marked up
with correct/incorrect moves; game records generally; pattern  
libraries;

test suites; opening libraries.

Darren

--
Darren Cook, Software Researcher/Developer
http://dcook.org/mlsn/ (English-Japanese-German-Chinese-Arabic
  open source dictionary/semantic network)
http://dcook.org/work/ (About me and my work)
http://darrendev.blogspot.com/ (blog on php, flash, i18n, linux, ...)
___
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/






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


[computer-go] Ladders and UCT again

2008-07-31 Thread Peter Drake
I know we had this conversation recently, but I just can't seem to get  
my head around writing a ladder reader. What, exactly, does the ladder  
reader do?


Our approach was to read out ladders involving the last stone played.  
In the playout (beyond the tree), if the attacker can capture by  
continuing a ladder, the attacker plays that move. If the defender can  
escape by running, the defender plays that move. Otherwise, a random  
move is played.


The trouble seems to be that, once the attacker plays, there's nothing  
more for the ladder reader to say. At this point, it's 50-50 whether  
the attacker or defender will play on the defender's last liberty.  
Thus, the ladder reader doesn't give any pressure to stop running when  
caught in a ladder.


What am I missing?

Peter Drake
http://www.lclark.edu/~drake/



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


Re: [computer-go] Ladders and UCT again

2008-07-31 Thread Peter Drake

On Jul 31, 2008, at 4:24 PM, Mark Boon wrote:



On 31-jul-08, at 19:50, Peter Drake wrote:

I know we had this conversation recently, but I just can't seem to  
get my head around writing a ladder reader. What, exactly, does the  
ladder reader do?


Our approach was to read out ladders involving the last stone  
played. In the playout (beyond the tree), if the attacker can  
capture by continuing a ladder, the attacker plays that move. If  
the defender can escape by running, the defender plays that move.  
Otherwise, a random move is played.


The trouble seems to be that, once the attacker plays, there's  
nothing more for the ladder reader to say. At this point, it's  
50-50 whether the attacker or defender will play on the defender's  
last liberty. Thus, the ladder reader doesn't give any pressure to  
stop running when caught in a ladder.


What am I missing?



What you're missing (or so it seems to me) is that it's not to  
prevent from running a ladder that is caught.


Really? My motivation has been to prevent my program from  
embarrassingly running in just those situations. Is there something  
other than a ladder reader used for this?


It is to ensure to escape when you can or capture when necessary to  
prevent an escape. And not only the last stone played of course, it  
could be the neighbour of the last stone played as well.


The neighbor point is useful. Of course, as Don pointed out in another  
message, there are always additional complexities to add -- what if  
one of the attacking groups is in atari, or can be put in atari?


I'm more interested in the bigger issue: exactly what question is the  
ladder reader trying to answer? When does it suggest a move and when  
doesn't it?


Peter Drake
http://www.lclark.edu/~drake/



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


Re: [computer-go] Ladders and UCT again

2008-07-31 Thread Peter Drake

Okay, let me see if I can sum this all up.

Let <2, capture, attacker> stand for "defending chain has 2  
liberties, it will be captured if the ladder is played out, and it is  
the attacker's turn".


Use the following rules to suggest moves:

<1, capture, defender> => defender plays ladder breaker, then  
attacker captures

<1, capture, attacker> => no suggestion
<1, escape, defender> =>  run (play out ladder), no suggestion for  
attacker's follow-up

<1, escape, attacker> => capture
<2, capture, defender> => run (to gain a 3rd liberty, escaping the  
ladder)
<2, capture, attacker> => chase (play out ladder), no suggestion for  
defender's follow-up

<2, escape, defender> => no suggestion
<2, escape, attacker> => ladder breaker

Which chains are considered? All of them with few enough liberties?  
If we only consider the last stone and its neighbors, moves elsewhere  
on the board will look disproportionately bad because they "disable"  
the ladder searcher.


Peter Drake
http://www.lclark.edu/~drake/



On Jul 31, 2008, at 5:06 PM, terry mcintyre wrote:


From: Peter Drake <[EMAIL PROTECTED]>


Our approach was to read out ladders involving the last stone played.
In the playout (beyond the tree), if the attacker can capture by
continuing a ladder, the attacker plays that move. If the defender  
can

escape by running, the defender plays that move. Otherwise, a random
move is played.


A human player would not play "a random move;" the likelihood of a  
playing
a ladder-breaker would be high. The opponent would then have to  
consider whether to

capture the ladder or respond to the ladder-breaker in some other way.

Higher-level players and those with experience programming Go can  
surely offer improvements.




___
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/

Re: [computer-go] Ladders and UCT again

2008-08-01 Thread Peter Drake

On Aug 1, 2008, at 8:08 AM, Mark Boon wrote:

The neighbours of the last move come in the picture because usually  
it's only the last stone played that can be escaping a ladder and  
it's the neighbours of the last move that could have been put into  
atari. Nothing to do with the additional complexities Don mentioned.



Let me give a specific example. Suppose that, during a playout, the  
tree leads us to this position, with O to play:


.
...OO
..O##a...
...Ob
c
.
.
.
.

Having reached the frontier of the tree, we now finish the game using  
Monte Carlo with a ladder reader. The last stone played, to the left  
of a, is trapped in a ladder, but can escape if not chased. Our ladder  
reader therefore suggests O play at a.


For the next move in the playout, if # only reads ladders from the  
last move played, it will see that the O stone at a is not in a  
ladder, so move is suggested. The playout now turns completely random,  
and it's a coin toss as to whether the group will escape.


If we also search stones next to the last stone played, things only  
get slightly better. # sees that its stones are in a ladder from which  
they cannot escape, so it doesn't suggest b. If we tell it to play a  
ladder breaker in such situations, it might play c, which is fine.  
However, on O's next turn, c is not in a ladder, nor is any stone next  
to c, so no move is suggested. Specifically, O does not make the vital  
capture at b.


It seems too expensive to search every point on the board for ladders.  
What to do?


Peter Drake
http://www.lclark.edu/~drake/



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

[computer-go] Re: US Go Congress Computer Go Tournament

2008-08-01 Thread Peter Drake

I had a look at the room where we'll be playing; it looks good.

For those of you borrowing software, the tech support people would be  
extremely happy if you could send them your program in advance so  
that they can install it. If not, we'll do the best we can on Monday  
morning. If you have any special needs regarding libraries, etc.,  
please let them know ASAP. The address is:


[EMAIL PROTECTED]

Peter Drake
http://www.lclark.edu/~drake/


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

Re: [computer-go] CGOS server boardsize

2008-08-01 Thread Peter Drake
I prefer consistent 13x13 on the third server, since I use CGOS to  
determine if some change to the program is an improvement.


Peter Drake
http://www.lclark.edu/~drake/___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] Ladders and UCT again

2008-08-02 Thread Peter Drake
Depending on your implementation, it may be faster to re-derive the  
liberty list when you need it. For example, if your playout move  
suggester only suggests capturing the last stone played, you don't  
need to do all of the work to update liberty counts for any other  
chains.


Thanks a lot for everyone's help here. I think I have my ladder- 
reader working, although my program was still playing out ladders.  
The solution turned out to be something completely different: turn up  
the "exploration" coefficient in the UCT formula. If it's too low,  
the program commits to a particular move too early, builds up a lot  
of playouts through that move, and keeps playing the move even though  
it has read a sequence of follow-ups that lead to a bad result.


Peter Drake
http://www.lclark.edu/~drake/



On Aug 2, 2008, at 7:06 AM, Álvaro Begué wrote:

On Sat, Aug 2, 2008 at 9:43 AM, Jason House  
<[EMAIL PROTECTED]> wrote:
On Aug 2, 2008, at 4:31 AM, Gunnar Farnebäck  
<[EMAIL PROTECTED]> wrote:



It's often a good idea to bias capturing moves in the playouts,
regardless whether it's a ladder or not. This would result in those
stones being captured in most simulations.


What method do people use for finding capture moves in playouts?  
Pseudo
liberties can miss simple stuff like open triangles and one-eyed  
groups.
Additionally, some literature discusses captures to add group  
liberties.

What's the preferred method to detect
that?___


When we wrote dimwit, John Tromp found a fast method that I described
here: http://computer-go.org/pipermail/computer-go/2007-November/ 
012342.html


However, my current thinking is that it's probably best to just keep a
real liberty count and a list of liberties for each chain. This way
you can also find atari moves, which would be very hard to do if you
only keep pseudo-liberties.
___
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/

[computer-go] Computer tournament at US Go Congress

2008-08-02 Thread Peter Drake

For your information.

Peter Drake
http://www.lclark.edu/~drake/



Begin forwarded message:


From: Aaron Fellin <[EMAIL PROTECTED]>
Date: August 2, 2008 1:04:26 PM PDT
To: Barton C Massey <[EMAIL PROTECTED]>, Peter Drake <[EMAIL PROTECTED]>
Cc: [EMAIL PROTECTED]
Subject: Re: Go Tourney next week
Reply-To: [EMAIL PROTECTED]

Wow, I didn't realize this email was going to be so long when I  
started. That's
probably a result of me attempting to err on the side of  
completeness wherever
possible. The first section is a recap of where we stand from a  
technical
standpoint; the second section is a mix of things that will be  
important on
Monday morning (or before). The last part of this is a rundown of  
different ways

to get ahold of MCECS Support (aka, TheCAT).

- Aaron

Technical stuff:
  It looks like we've got everything set up for the connection to  
the go server
and I've tested with the one go computer program that we've  
received. There is
a wrapper installed as /usr/bin/kgsGtp on the linux lab computers  
that they can
use to start the program. It sounds like the people running the go  
bots know how
to connect using a config file for this program, so all should be  
well on that

front (if all else fails, try /usr/bin/kgsGtp -help).

  I was able to connect to the kgs go server with the one go  
computer we've got.
As far as I know, it was working correctly, but I never got it to  
play a game
against me. The program to watch the games is just a java web start  
link, so
that will work on all our linux and windows computers. In addition,  
the web site

has an applet version of it that will work.

  The last I've heard from the Wintel team is that they will have a  
minimally
loaded windows computer available in the lab. I made sure to tell  
them that you
will need java and java web start for the tournament, so that'll be  
installed
on it (the things they don't install will likely be Adobe Acrobat,  
Office, et

cetera).

On the day of:
  There is to be no food and drink in the lab. There is a table  
near the door of
the lab to hold food and drink. In order to keep the door from  
being propped open
and our campus security folks getting paged, we've moved the table  
into the lab;
our no food and drink policy is being stretched to its limit for  
the tournament.


  Users with their own hardware will need to register their  
hardware as laptops
on our network. The url is https://intranet.cecs.pdx.edu/network/ 
laptops . They
should log in with the guest accounts. Once the "laptops" are  
registered, any
laptop jack in the lab (there are 5 or 6) will work within about 20  
minutes. Two
of those jacks are the ones next to where we decided the mac mini  
cluster will
probably fit best. The url for laptop registration is written on  
the whiteboard

in the lab.

  There are three tables set up for laptops/other hardware near the  
back of the
room. One of them has a plugged in surge strip mounted to the  
underside so you
won't have to climb under the table to plug hardware in.  
Unfortunately, under and
behind the table is where the laptop jacks are, so networking  
cables will still
require some spelunking. I'm guessing those cables will be  
unplugged from the

wall less often than power cables, though.

  The last I've heard is that there will be a CAT with sufficient  
access to
install libraries on the linux boxes and tweak the networking  
should anything
fail on Monday morning (I make no guarantee against faulty cables  
in the wiring
closet). I do not believe that anyone from the windows team with  
sufficient
access will be available on site first thing Monday morning. There  
is a general
user support person scheduled on the front desk at 8am as well;  
they may be able

to assist with some general troubleshooting.

Ways to get ahold of user support (in the middle of the night):

  From online, probably the most efficient way to contact us is  
over IRC.
irc.cat.pdx.edu is our IRC server and #support is our general user  
support
channel. If things break in the middle of the night, this is  
probably one of the
fastest ways to get ahold of people if there happens to be any one  
staying up

late.

  [EMAIL PROTECTED] will email the entire support staff. Because  
of the delay
in email, this is probably not as ideal for urgent troubleshooting,  
but is not a

bad way to contact us by any means.

  FAB 60-06 is our main front desk. I don't think we actually went  
there on
Friday, but Bart at least should know where this is. It can be a  
bit of a hike
from the lab, unfortunately. The desk is generally staffed from 9am  
to 6pm; hours
are at http://www.cat.pdx.edu/fab_60-06_schedule.html . While I  
won't guarantee
that cell phones will work near the lab, the desk phone is (503)  
725-5420. The
CS tutors are available just down the hall from the lab from 11am  
to 6pm daily;
if you g

[computer-go] Location for US Go Congress computer tournament

2008-08-03 Thread Peter Drake
The Linux lab is in the Fourth Avenue Building, room 81-03. Leave  
some time to find it; the building is rather labyrinthine.


I'll be there by 8:30 AM Monday, possibly a bit earlier, so hopefully  
people can set up and then go play in the US Open.


Peter Drake
http://www.lclark.edu/~drake/

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

[computer-go] Re: Computer tournament at US Go Congress

2008-08-05 Thread Peter Drake
To anyone who's here at the Congress:

The American Go Association (most likely the board thereof) is having a meeting
about "Computer / Internet Development" in Smith 229 at 4:00 PM. Since
decisions are made by people who happen to be in the room at the time, it might
be a good idea for us to be there to advocate for computer tournament funding,
rated games for computers, etc.


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


[computer-go] Kim vs MoGo match Thursday -- NEW LOCATION

2008-08-05 Thread Peter Drake
(Please propagate this information widely. I will make some posters and put them
up around Smith.)

Thursday, August 7, 1 PM PDT, Kim MyungWan 8p will play against MoGo, the
world's strongest computer Go program. MoGo will be connecting remotely,
running on a European supercomputer using hundreds if not thousands of
processor cores. Mr. Kim, some computer Go programmers, and a crowd of rapt
observers will be in Smith 338 (next to the ballroom).

I'll bring a projector to project the game on the wall. The game will also be
broadcast on KGS in the Computer Go room (one of the "social" rooms).

We'll have a few blitz matches to adjust the handicap, then play a "real" game
with an hour per side.
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] komi for 13x13 and 19x19

2008-08-06 Thread Peter Drake

I would be in favor of 7.5 everywhere.

We used 7.5 at the US Go Congress computer tournament and got 23/42  
wins for white. Of course, every game but one ended in resignation...


Peter Drake
http://www.lclark.edu/~drake/



On Aug 6, 2008, at 5:57 AM, Don Dailey wrote:

I'm wondering if I should have set 7.5 for 19x19.Someone posted  
that

6.5 for Japanese, 7.5 for Chinese.I currently have it set for 6.5
but that can easily be changed.   I would rather be consistent with  
7.5

unless it's clear that this is incorrect.

- Don



On Wed, 2008-08-06 at 18:13 +0900, Darren Cook wrote:
Does it make sense to use a komi of 7.5 for 13x13 and 19x19 under  
CGOS

rules?


I see you went with 7.5 for 13x13. I was about to suggest 8.5 but
changed my mind while writing this email. First evidence for 8.5 is
Robert Jasiek's comments (e.g. "I have observed that 8.5 komi for  
13x13

... frequently lead to strategically demanding 0.5 games") here:
 http://senseis.xmp.net/?HandicapForSmallerBoardSizes

Second, Little Golem has used 8.5 for a few years, and this top
tournament has exactly 50-50 for black/white wins:
http://www.littlegolem.net/jsp/tournament/tournament.jsp? 
trnid=go13.ch.10.1.1


However, the tournament after has 15 to black, 21 to white here:
http://www.littlegolem.net/jsp/tournament/tournament.jsp? 
trnid=go13.ch.11.1.1


And the tournament before has 13 to black, 23 to white:
http://www.littlegolem.net/jsp/tournament/tournament.jsp? 
trnid=go13.ch.9.1.1


So, it seems 8.5 komi may favour white.

Darren




___
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/

Re: [computer-go] Re: mogo beats pro!

2008-08-08 Thread Peter Drake
Yes, MoGo gained much more from the longer time setting than Mr. Kim  
did. Note that Mr. Kim used very little of his time in the one-hour  
game. He said after the match that using more time would not have  
helped him.


This is an interesting property of Monte Carlo Go. At the risk of  
overgeneralizing, it may be that digital computers have an advantage  
over brains in terms of fast and accurate short-term memory (dare we  
call it "concentration"?). A human pro has better lightning instincts  
(fuzzy long-term memory?), but some time for MC sampling allows the  
program to develop that instinct (or something analogous) over the  
course of the game. If we could only decide what to store (and how to  
store it) between games, we could get good blitz performance and  
superhuman long game performance.


Peter Drake
http://www.lclark.edu/~drake/



On Aug 7, 2008, at 10:26 PM, Dave Dyer wrote:


My take-away from watching the match is that blitz performance wasn't
at all representative.   A human playing blitz games might do 90% as
well as at a full length game, whereas mogo's performance looked like
it scaled more linearly.


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

Re: [computer-go] Re: mogo beats pro!

2008-08-08 Thread Peter Drake

On Aug 8, 2008, at 7:13 AM, Robert Waite wrote:

I was in the KGS room for a couple of hours before the match and a  
couple after. I was very surprised by the result as many were.


There still is a lack of clear information about the event. For  
example, when Kim said that the computer plays at maybe 2 or 3  
dan... does he mean professional or amateur pro?


I believe he meant amateur.

One person who seemed to be in the room with Kim said that he was  
laughing and clapping at some of the computer's moves.


This was only at one moment during the second blitz game when MoGo cut  
off one of Kim's groups. He was definitely concentrating on his games.


One person in this list, but not the AGA eJournal, mentioned that  
Kim used about 11 minutes time.. where the computer used around 50.  
This was surprising to me... Kim is reported to say that he felt  
having extra time would not have helped.


Correct.

To me... this seems a little odd. He may have used it as a tactic to  
give the computer less thinking time (if Mogo was indeed thinking  
during Kim's turn).


I don't know about this; he may not have been aware that MoGo  
pondered. Many of the audience were surprised that MoGo was capable of  
resigning.


Peter Drake
http://www.lclark.edu/~drake/



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


  1   2   3   4   >