I did a bit of investigation over the weekend:  I get an average of
110.7turns, using the usual eye avoidance rule, counting pass moves,
disallowing
all suicide, and disallowing "simple ko" repetitions.  I believe that the
107.3 number is for the same simulations, but excluding passes from the
count.  Does this sound correct?

Incidentally, Łukasz, if it is _your_ code, then you may do whatever you
like with it, regardless of how you have licensed that code to other
people.  The only issue that I can see would be whether or not you are
permitted to use chages, etc., that have been contributed by other people.

Weston

On 12/11/06, Łukasz Lew <[EMAIL PROTECTED]> wrote:

On 12/8/06, Don Dailey <[EMAIL PROTECTED]> wrote:
>
> 112 moves on average in a 9x9 game?   You are doing something a little
> different than I am and others have reported the same number I get,
> about 107.3 - 107.4
>
> What is your eye avoid rule?

Normal, i.e. local on 8 intersections, updated incrementally.
The games are longer, because I allow ko recaptures (i.e. any board
repetition).


>
> - Don
>
> P.S.  30K on 1.4 Celeron is almost too good to be true.   If this is
> correct that's very impressive and I am interested in looking at the
> code.   I can
> believe it it's possible with a few tricks I haven't thought of - but I
> want
> to see for myself!

Soon I will publish the code on my web page.
But I don't have a web page yet. :)

The second issue is a licence.
Can I use my Go Board implementation in commercial program if I
publish it on Gnu?
If no, then can I change the licence when I want to?

But If You want to take look at the code, I will send it to You.
Here I give all tricks:

Efficient board summary:

Board:
- all objects (color, intersection) are int s
- one dimensional board with guards (9x9 => 121 ints)
- pseudo liberties at top of union-set tree
- very lightweight set-union with lightweight path compression
- no explicit liberties
- next_stone array
- black, white, empty, neighbour counters on one int for eye checking

Monte-Carlo:
- memcopy before playout with pointer correction (union-set currently
on pointers)
- randomized array of empty intersections
- (NEW! :) ) non-legal intersections moved to "rejected" array, used
at the end of the playout
- no ko handling
- only single-stone suicide forbidden (detected after play => try again)
- limit on playout length

Technical:
- all functions inlined
- assertions everywhere
- consistency function on assert
- precise profiling with oprofile and rdtsc
- no assembler :)

The most important are:
- pseudo liberties at top of union-set tree
- very lightweight set-union with lightweight path compression

Hope this help :)
Lukasz

>
> I wonder if it is the random list selection tricks you are using?

Not any more :)

Rejected array (the NEW one) improved speed to 33pps (distribution
slightly non uniform)

>
>
>
>
> On Fri, 2006-12-08 at 11:26 +0100, Łukasz Lew wrote:
> > Hi!
> >
> > Many people are spending a lot of effort on creating fast board
implementation.
> >
> > I am considering releasing the one written by me.
> > I get 30 k playouts / s (112 moves on avg) on Celeron M 1.4Ghz. So I
> > consider it quite good.
> > If there is an interest in joint development, then I will do it.
> >
> > What say You ? :)
> >
> > Łukasz Lew
> > _______________________________________________
> > 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/

Reply via email to