Here is another MC speedup trick. I think it may have been mentioned
before but it's worth repeating.
This applies to the case where my program is going to run N playout games
and then select the most visited node as its move for that turn (which will not
always be the node with the
You just can try few, and look whether the percentage of playout wins
doesn't change too much. You probably need more that one starting
position to test the rule.
Lukasz
On 1/15/07, George Dahl <[EMAIL PROTECTED]> wrote:
What should the mercy threshold be for other board sizes than 9 by 9,
part
>-Original Message-
>From: [EMAIL PROTECTED]
>To: computer-go@computer-go.org
>Sent: Sun, 14 Jan 2007 11:08 PM
>Subject: Re: [computer-go] Fast Board implementation
>
>What should the mercy threshold be for other board sizes than 9 by 9,
>particularly 1
What should the mercy threshold be for other board sizes than 9 by 9,
particularly 19 by 19?
- George Dahl
>
> Here are a few speedup tricks that have helped me.
>
> 1. The mercy rule. Since I'm incrementally keeping track of a list of empty
> points, it's no real extra pain to keep track of the
ad the value from the array again -- another memory
> reference.
>
> Edmund.
>
> > -Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] Behalf Of Don Dailey
> > Sent: 19 December 2006 13:13
> > To: House, Jason J.
> &g
On 12/11/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
Hello all.
I've been lurking on the list for a few years now. In amongst the usual
musings on the meaning of AI and social justice, etc., there's been a sharp
increase in the amount of useful information posted here of late. I'll try
to
On Tue, 2006-12-19 at 02:21 -0500, House, Jason J. wrote:
> The const keyword has been completely removed from the language and
> makes it hard to force such restrictions on "library users".
I use const all the time in my C code but only for myself - almost like
a comment in the source code sayi
On Tue, 2006-12-19 at 02:21 -0500, House, Jason J. wrote:
> On the down side, I noticed a significant lack of documentation and
> difficult to find get it at my fingertips.
Yes, I had this problem too - you do have to do a lot of digging to
figure
out some things.
I actually had quite a bit o
library was up to date, I probably
would have kept playing around. For now I decided to stop... :(
-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Don Dailey
Sent: Friday, December 15, 2006 9:17 PM
To: Łukasz Lew
Cc: computer-go
Subject: Re: [computer-go] Fast
On Fri, 2006-12-15 at 16:28 -0800, steve uurtamo wrote:
> > I should be able to get close to
> > 25,000 games per
> > second if
> > I get the 1.5 X improvement going to C. This is
> > only about 3K of code
> > that will
> > have to be written in C, where much of the code is
> > identical to C
>
> missing that simplifies things?
> > > >
> > > > By the way, stone count field is helpful but not necessary. But it's
> > > > trivial to keep updated and it's convenient.
> > > >
> > > > Using the compact representa
n
> >
> >
> >
> >
> >
> >
> >
> > On Mon, 2006-12-11 at 20:00 +0100, Łukasz Lew wrote:
> >> At the time of Your post I've had it already implemented and regarded
> >> it like "my sweet secret" :) , so I was expecting tha
> I should be able to get close to
> 25,000 games per
> second if
> I get the 1.5 X improvement going to C. This is
> only about 3K of code
> that will
> have to be written in C, where much of the code is
> identical to C
> anyway.
is this that much easier than just starting and
finishing in C?
e:
> >> At the time of Your post I've had it already implemented and regarded
> >> it like "my sweet secret" :) , so I was expecting that when You
> >> published it everybody will appreciate, and start using. But I guess
> >> it wasn't eas
> Oh, sorry I forgot.
>
> static bool is_player (t color) { return (color &
> (~1)) == 0; }
>
> This is 1 CC so I don't think so. :)
:)
i guess that since the entries of color_at
had to be looked up for each v (presumably),
the pred_br_eq (or whatever the x86 version
is called) instruction coul
On 12/15/06, steve uurtamo <[EMAIL PROTECTED]> wrote:
> if (is_player (color_at[v]))
> chain_at[v].find_root ()->inc_lib_cnt ();
>
> I removed the if
>
> chain_at[v].find_root ()->inc_lib_cnt ();
>
> And added some code elsewhere to make it correct.
so it wasn't the "is_player"?
Oh, sorry I
> if (is_player (color_at[v]))
> chain_at[v].find_root ()->inc_lib_cnt ();
>
> I removed the if
>
> chain_at[v].find_root ()->inc_lib_cnt ();
>
> And added some code elsewhere to make it correct.
so it wasn't the "is_player"?
s.
__
Do You Yaho
if (is_player (color_at[v]))
chain_at[v].find_root ()->inc_lib_cnt ();
I removed the if
chain_at[v].find_root ()->inc_lib_cnt ();
And added some code elsewhere to make it correct.
this code is executed for every neighbour intersection (v) of
intersection that just turned into empty (was captu
> I confirm branches are most costly.
> Removing 1 not needed "if" gave me speedup of 5%.
do you mean that the 'if' was never evaluated,
or that it always evaluated the same way, or
that it was handled elsewhere? i'm stunned
that a single 'if' was 5% of the execution time
of your code. it might
Thanks :)
I will stick to GPL and use Bazar model (The Cathedral and the Bazaar).
I will provide tarball and darcs repository :)
Best regards,
Lukasz Lew
On 12/15/06, Urban Hafner <[EMAIL PROTECTED]> wrote:
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1
On Dec 11, 2006, at 19:22 , Łukasz Lew w
how many really good ideas came through this list unnoticed.
>>
>> Best Regards,
>> Lukasz
>>
>>
>> On 12/11/06, House, Jason J. <[EMAIL PROTECTED]> wrote:
>> > Wow. Did some of my early posts on liberties/chains actually get used
>>
rties at the time of my post.
> >
> > -Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] On Behalf Of Lukasz Lew
> > Sent: Monday, December 11, 2006 1:31 PM
> > To: [EMAIL PROTECTED]
> > Cc: computer-go
> > Subject
I could pack all of the information into a single array. Here is one
possible scheme which fits in 32 bits and accommodates all board sizes:
3 bits to identify white/black/empty/off-board
9 bits for the hash key (the reference stone)
9 bits for pseudo liberty count
9 bits for stone count
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1
On Dec 11, 2006, at 19:22 , Łukasz Lew wrote:
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,
uot; :) , so I was expecting that when You
> >> published it everybody will appreciate, and start using. But I guess
> >> it wasn't easy to see benefits.
> >> I wonder how many really good ideas came through this list unnoticed.
> >>
> >> Best Regar
Handtalk has a clever trick. He uses the LSB of the string number as the
color of the string. Even strings are black and odd strings are white. So
he only needs one array for the board which has both color and string
number.
David
> > 1. A 10x11 board (actually 10x11 plus 1 for diagonal
gt; >
> >
> >
> >
> > On Mon, 2006-12-11 at 20:00 +0100, Łukasz Lew wrote:
> >> At the time of Your post I've had it already implemented and regarded
> >> it like "my sweet secret" :) , so I was expecting that when You
> >> published it everybody will
st(s) on the topic? I remember a lot of negative feedback
> on pseudo-liberties at the time of my post.
>
> -Original Message-
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Lukasz Lew
> Sent: Monday, December 11, 2006 1:31 PM
> To: [EMAIL PROTECTED]
st
> > before my post(s) on the topic? I remember a lot of negative feedback
> > on pseudo-liberties at the time of my post.
> >
> > -Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] On Behalf Of Lukasz Lew
> > Sent: Mo
Big thanks for claryfying that.
Łukasz
On 12/11/06, Antoine de Maricourt <[EMAIL PROTECTED]> wrote:
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
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.
Maricourt
Sent: Monday, December 11, 2006 3:20 PM
To: computer-go
Subject: Re: [computer-go] Fast Board implementation
When was your first post? The pseudo-liberty principle has been
described perhaps 15 years ago on this list. Possibly before, but I
wasn't there...
Antoine.
Wow.
On 12/11/06, House, Jason J. <[EMAIL PROTECTED]> wrote:
It certainly pre-dates me then! My post was within the last 2 years.
Our of curiosity, did it have the name pseudo-liberties back then too?
I call them liberty-edges, since in graph theoretic terms, you're counting
the edges between a s
: computer-go
Subject: Re: [computer-go] Fast Board implementation
When was your first post? The pseudo-liberty principle has been
described perhaps 15 years ago on this list. Possibly before, but I
wasn't there...
Antoine.
> Wow. Did some of my early posts on liberties/chains actually
When was your first post? The pseudo-liberty principle has been
described perhaps 15 years ago on this list. Possibly before, but I
wasn't there...
Antoine.
Wow. Did some of my early posts on liberties/chains actually get used
by someone? Or did the idea of pseudo-liberties and union set
I should clarify here
//4. At every move, I update the pseudo liberties, group membership, stone
counts,
//and empty spaces list. When a stone is removed due to capture, I place that
position
//at the end of the empty spaces list. When a stone is added, the space it's
about to
// occupy is
Hello all.
I've been lurking on the list for a few years now. In amongst the usual musings
on the meaning of AI and social justice, etc., there's been a sharp increase in
the amount of useful information posted here of late. I'll try to contribute.
My engine is AntIgo. It's been a speed bump
a lot of negative feedback
on pseudo-liberties at the time of my post.
-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Lukasz Lew
Sent: Monday, December 11, 2006 1:31 PM
To: [EMAIL PROTECTED]
Cc: computer-go
Subject: Re: [computer-go] Fast Board implementat
ukasz Lew
> Sent: Monday, December 11, 2006 1:31 PM
> To: [EMAIL PROTECTED]
> Cc: computer-go
> Subject: Re: [computer-go] Fast Board implementation
>
> Pseudo liberties of a group is a sum of liberties of each stone,
> example:
>
> O
> OXXXO
> OX.XO
> OXXX
On 12/11/06, House, Jason J. <[EMAIL PROTECTED]> wrote:
Wow. Did some of my early posts on liberties/chains actually
get used
by someone? Or did the idea of pseudo-liberties and union sets
exist
before my post(s) on the topic? I remember a lot of negative
feedback
On 12/11/06, House, Jason J. <[EMAIL PROTECTED]> wrote:
Wow. Did some of my early posts on liberties/chains actually get used
by someone? Or did the idea of pseudo-liberties and union sets exist
before my post(s) on the topic? I remember a lot of negative feedback
on pseudo-liberties at the t
PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Lukasz Lew
Sent: Monday, December 11, 2006 1:31 PM
To: [EMAIL PROTECTED]
Cc: computer-go
Subject: Re: [computer-go] Fast Board implementation
Pseudo liberties of a group is a sum of liberties of each stone,
example:
O
OXXXO
OX.XO
OXXXO
O
&q
On 12/11/06, Weston Markham <[EMAIL PROTECTED]> wrote:
I did a bit of investigation over the weekend: I get an average of 110.7
turns, 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 fo
Pseudo liberties of a group is a sum of liberties of each stone,
example:
O
OXXXO
OX.XO
OXXXO
O
"X" group have 4 pseudo liberties.
If You merge two groups just add pseudo liberties.
If PL = 0 then group should be removed.
This is simple and sufficient :)
Lukasz
On 12/11/06, Don Dailey
On Mon, 2006-12-11 at 18:22 +0100, Łukasz Lew wrote:
> - pseudo liberties at top of union-set tree
Refresh my memory on this. I remember talking about this a long time
ago. A psuedo liberty is an upper bound on how many liberties there are
for a given string, correct? Sometimes a liberty g
On Mon, 2006-12-11 at 12:56 -0500, Weston Markham wrote:
> I did a bit of investigation over the weekend: I get an average of
> 110.7 turns, using the usual eye avoidance rule, counting pass moves,
> disallowing all suicide, and disallowing "simple ko" repetitions. I
> believe that the 107.3 numb
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
cou
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 incremen
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?
- Don
P.S. 30K on 1.4 Celeron is almost too good to be true. If this is
correct that's very impressive a
I found myself doing not simple or obvious elections
on the board/game implementation.
I found a couple of places where different approaches
would impact on perfomance:
- Liberties: maintain a list of chains, and liberties.
"Union set" when a stone is placed in the board.
Floodfill is another ap
50 matches
Mail list logo