[computer-go] Michael Williams enhancement

2008-10-28 Thread Don Dailey
I have empirical evidence that mwRefbot level 4096 (the Michael Williams
enhanced reference bot at 4096 playouts) is stronger than the reference
bot at the same (and even higher levels.)


Rank Name  Elo+- games score oppo. draws 
   1 mwRefbot-004096  2684   23   22  1529   78%  21400% 
   2 refbot-0081922670   21   21  1532   73%  22740% 
   3 refbot-0040962645   21   21  1528   71%  22510% 
   4 refbot-0020482555   21   21  1530   63%  22370% 
   5 refbot-0010242431   23   23  1529   54%  21780% 
   6 refbot-0005122253   27   28  1531   47%  20660% 
   7 refbot-0002562000   34   35  1529   42%  19320% 
   8 refbot-0001281646   42   42  1529   45%  16550% 
   9 refbot-641290   40   40  1529   50%  13210% 
  10 refbot-32 970   40   40  1531   52%  10410% 
  11 refbot-16 621   33   32  1529   55%   7800% 
  12 refbot-08 370   25   25  1529   47%   6490% 
  13 refbot-04 250   23   22  1529   43%   5510% 
  14 refbot-02 145   22   22  1529   35%   5000% 
  15 refbot-01   5   22   23  1528   22%   4750% 
  16 refbot-00   0   22   23  1531   22%   4840% 

- Don




signature.asc
Description: This is a digitally signed message part
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] OT: Harder than go?

2008-10-28 Thread Don Dailey
On Mon, 2008-10-27 at 23:23 -0400, Luke Gustafson wrote:
> Computer Scrabble significantly exceeds humans.  A basic monte carlo search 
> and an endgame solver is very effective.  There is probably still much 
> strength to be gained (very little opponent modeling is done), but it's 
> already so strong I don't think it's getting much attention.

I haven't kept up with the state of the art in scrabble but I know that
MC techniques work well.

I build a scrabble player years ago for my mother (who loves scrabble)
and all it did was play the highest scoring move.   To my surprise, she
was able to beat it some significant percentage of the time and she is
not a tournament or serious player.   

Computers have a real advantage having direct access to the entire
dictionary, but still it requires more than that.I assume the best
computer players are better than the best humans.

- Don

> Looks like there's about 700 elo between the top Arimaa bot and human.  I 
> suppose for go it is quite a bit more?
> 
> For single player games, there are definitely many types of puzzles that 
> computers struggle with.  Sokoban is a puzzle I saw a while ago that is 
> still difficult for computers.  I don't think I'd say it's harder than go, 
> though.
> http://www.grappa.univ-lille3.fr/icga/phpBB3/viewtopic.php?f=2&t=35
> 
> 
> - Original Message - 
> From: "Darren Cook" <[EMAIL PROTECTED]>
> To: 
> Sent: Monday, October 27, 2008 8:54 PM
> Subject: Re: [computer-go] OT: Harder than go?
> 
> 
> >>> Where "harder" means the gap between top programs and top human players
> >>> is bigger, are there any games harder than go? Including games of
> >>> imperfect information, multi-player games, single-player puzzle games.
> >>
> >> Poetry contests?
> >
> > I caught the smiley, but if you can define the rules (such that a
> > mechanical referee can decide the winner, as in all games from go to
> > poker to scrabble) then I guess the computer would be strong [1].
> >
> > Thanks for the Arimaa and Havannah suggestions; I'd not heard of
> > Havannah before. I see both have bets by humans that they'll not be
> > beaten any time soon.
> >
> > David, is MCTS likely to be useful for Arimaa?
> >
> > Darren
> >
> > [1]: Though http://en.wikipedia.org/wiki/Scrabble#Computer_players is
> > ambiguous about if computer scrabble players are stronger than human
> > players or not.
> >
> > -- 
> > 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://dcook.org/blogs.html (My blogs and articles)
> > ___
> > 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/


signature.asc
Description: This is a digitally signed message part
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] Michael Williams enhancement

2008-10-28 Thread Mark Boon
What do those number mean exactly? Are those winning percentages  
against your ref-bot with 1,000 playouts?


I'm not getting the same results as Michael does. I see some  
improvement, but not nearly as much.


I had to make a few changes however, as I was adding up the results  
in a different way than your ref-bot. So what I did was implement  
tracking the AMAF statistics exactly the same way as in your ref-bot.  
Next I ran a few hundred games, comparing the win/hit ratio of the  
newly implemented method with my old one to make sure I got the same  
result. When that checked out I made the modifications as described  
by Michael. It seems rather straightforward, but after 200 games I  
only get a win-rate of ~55% with 2,000 playouts instead of the 63% he  
has. That's a considerable difference.


Possibly I introduced a little bug somewhere...  Or I need a larger  
test-sample.


I do agree with Michael that this idea is more logical and simpler. I  
had implemented a different way to check which side moved at which  
location first. I believe it's more efficient but it doesn't lend  
itself for Michael's method. However, your way of checking seems  
rather costly as it's a loop of 1/4 N^2 iterations, where N is the  
number of moves (which we know is 111 in the beginning). With  
Michael's method this is reduced to 1/2N iterations.


My ref-bot on CGOS is still going. It seems to be always within a few  
ELO points of your Jref and Cref bots. So I'm going to stop it as I  
don't see much point in populating CGOS with identical bots. It has  
played over 500 games, which I think is enough empirical evidence  
that the implementation is 'good enough'.


Mark


On 28-okt-08, at 10:54, Don Dailey wrote:

I have empirical evidence that mwRefbot level 4096 (the Michael  
Williams
enhanced reference bot at 4096 playouts) is stronger than the  
reference

bot at the same (and even higher levels.)


Rank Name  Elo+- games score oppo. draws
   1 mwRefbot-004096  2684   23   22  1529   78%  21400%
   2 refbot-0081922670   21   21  1532   73%  22740%
   3 refbot-0040962645   21   21  1528   71%  22510%
   4 refbot-0020482555   21   21  1530   63%  22370%
   5 refbot-0010242431   23   23  1529   54%  21780%
   6 refbot-0005122253   27   28  1531   47%  20660%
   7 refbot-0002562000   34   35  1529   42%  19320%
   8 refbot-0001281646   42   42  1529   45%  16550%
   9 refbot-641290   40   40  1529   50%  13210%
  10 refbot-32 970   40   40  1531   52%  10410%
  11 refbot-16 621   33   32  1529   55%   7800%
  12 refbot-08 370   25   25  1529   47%   6490%
  13 refbot-04 250   23   22  1529   43%   5510%
  14 refbot-02 145   22   22  1529   35%   5000%
  15 refbot-01   5   22   23  1528   22%   4750%
  16 refbot-00   0   22   23  1531   22%   4840%

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


Re: [computer-go] OT: Harder than go? - MCTS for Arimaa

2008-10-28 Thread Janzert
David Fotland wrote:
> I've thought about using mcts for Arimaa, and it might be better than
> alpha-beta.  Arimaa has a huge branching factor, and since the pieces move
> slowly, human long-term planning works well against computers.  Mcts prunes
> better, so it should get deeper PVs.  AMAF might help too, since in a long
> plan it is often not critical what order the moves are in.
> 
> Someone should give it a try.
> 
>> David, is MCTS likely to be useful for Arimaa?
>>
>> Darren
>>

Jeff Bacher author of Clueless gave UCT w/light playouts a try a few
years ago but without much success. If I'm remembering correctly it
played fairly decent in the end game, but for most of the game was much
to prone to advancing rabbits on the off chance that they could sneak
through.

I also gave UCT a bit of a try but never got it playing much better than
a 1 ply static evaluation. If I can get my alpha-beta program up to the
same level as yours I would like to go explore MCTS and other search
methods some more.

There have been a number of new programs in development this year but
I'm not aware of any of the ones that have made it to the stage of
actually playing games being anything other than alpha-beta.

Janzert

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


Re: [computer-go] Michael Williams enhancement

2008-10-28 Thread Michael Williams
My original chart of numbers was created before it occurred to me that maybe the check whether the move has been played before is not needed.  It is of course 
possible that the check IS needed.  I ran a new test after removing that check and the numbers don't look as good:


At1 playouts per move, the modified version wins 47.8% of the time (±2.2%) 
after 500 games.
At2 playouts per move, the modified version wins 52.2% of the time (±2.2%) 
after 500 games.
At4 playouts per move, the modified version wins 56.3% of the time (±2.9%) 
after 300 games.
At8 playouts per move, the modified version wins 60.3% of the time (±2.8%) 
after 300 games.
At   16 playouts per move, the modified version wins 58.3% of the time (±2.8%) 
after 300 games.
At   32 playouts per move, the modified version wins 57.3% of the time (±2.9%) 
after 300 games.
At   64 playouts per move, the modified version wins 54.3% of the time (±2.9%) 
after 300 games.
At  128 playouts per move, the modified version wins 51.3% of the time (±2.9%) 
after 300 games.
At  256 playouts per move, the modified version wins 57.0% of the time (±2.9%) 
after 300 games.
At  512 playouts per move, the modified version wins 52.7% of the time (±2.9%) 
after 300 games.
At 1024 playouts per move, the modified version wins 46.0% of the time (±2.9%) 
after 300 games.
At 2048 playouts per move, the modified version wins 54.3% of the time (±2.9%) 
after 300 games.
At 4096 playouts per move, the modified version wins 57.7% of the time (±2.9%) 
after 300 games.

Don, did you retain the check in your version that has the weighted AMAF?
What ever you did, could you also add a version to the study that does the 
opposite?


Mark Boon wrote:
What do those number mean exactly? Are those winning percentages against 
your ref-bot with 1,000 playouts?


I'm not getting the same results as Michael does. I see some 
improvement, but not nearly as much.


I had to make a few changes however, as I was adding up the results in a 
different way than your ref-bot. So what I did was implement tracking 
the AMAF statistics exactly the same way as in your ref-bot. Next I ran 
a few hundred games, comparing the win/hit ratio of the newly 
implemented method with my old one to make sure I got the same result. 
When that checked out I made the modifications as described by Michael. 
It seems rather straightforward, but after 200 games I only get a 
win-rate of ~55% with 2,000 playouts instead of the 63% he has. That's a 
considerable difference.


Possibly I introduced a little bug somewhere...  Or I need a larger 
test-sample.


I do agree with Michael that this idea is more logical and simpler. I 
had implemented a different way to check which side moved at which 
location first. I believe it's more efficient but it doesn't lend itself 
for Michael's method. However, your way of checking seems rather costly 
as it's a loop of 1/4 N^2 iterations, where N is the number of moves 
(which we know is 111 in the beginning). With Michael's method this is 
reduced to 1/2N iterations.


My ref-bot on CGOS is still going. It seems to be always within a few 
ELO points of your Jref and Cref bots. So I'm going to stop it as I 
don't see much point in populating CGOS with identical bots. It has 
played over 500 games, which I think is enough empirical evidence that 
the implementation is 'good enough'.


Mark


On 28-okt-08, at 10:54, Don Dailey wrote:


I have empirical evidence that mwRefbot level 4096 (the Michael Williams
enhanced reference bot at 4096 playouts) is stronger than the reference
bot at the same (and even higher levels.)


Rank Name  Elo+- games score oppo. draws
   1 mwRefbot-004096  2684   23   22  1529   78%  21400%
   2 refbot-0081922670   21   21  1532   73%  22740%
   3 refbot-0040962645   21   21  1528   71%  22510%
   4 refbot-0020482555   21   21  1530   63%  22370%
   5 refbot-0010242431   23   23  1529   54%  21780%
   6 refbot-0005122253   27   28  1531   47%  20660%
   7 refbot-0002562000   34   35  1529   42%  19320%
   8 refbot-0001281646   42   42  1529   45%  16550%
   9 refbot-641290   40   40  1529   50%  13210%
  10 refbot-32 970   40   40  1531   52%  10410%
  11 refbot-16 621   33   32  1529   55%   7800%
  12 refbot-08 370   25   25  1529   47%   6490%
  13 refbot-04 250   23   22  1529   43%   5510%
  14 refbot-02 145   22   22  1529   35%   5000%
  15 refbot-01   5   22   23  1528   22%   4750%
  16 refbot-00   0   22   23  1531   22%   4840%

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



___

Re: [computer-go] Michael Williams enhancement

2008-10-28 Thread Don Dailey
On Tue, 2008-10-28 at 12:48 -0200, Mark Boon wrote:
> What do those number mean exactly? Are those winning percentages  
> against your ref-bot with 1,000 playouts?

No, it is a massive tournament where each player is scheduled in a
manner similar to CGOS.The number of playouts is identified by the
name of the program,  i.e. refbot-08192 is 8192 playouts.   

So what I see in the table is that mwRefbot at 4096 playouts is stronger
than refbot-08192.  mwRefbot is the mark williams enhanced bot.

refbot-0 has ZERO playouts - it plays a move randomly.

refbot-1 has 1 playout and of course is almost but not quite random.

I define 0 or random play to be ELO 0


- Don

 

> 
> I'm not getting the same results as Michael does. I see some  
> improvement, but not nearly as much.
> 
> I had to make a few changes however, as I was adding up the results  
> in a different way than your ref-bot. So what I did was implement  
> tracking the AMAF statistics exactly the same way as in your ref-bot.  
> Next I ran a few hundred games, comparing the win/hit ratio of the  
> newly implemented method with my old one to make sure I got the same  
> result. When that checked out I made the modifications as described  
> by Michael. It seems rather straightforward, but after 200 games I  
> only get a win-rate of ~55% with 2,000 playouts instead of the 63% he  
> has. That's a considerable difference.
> 
> Possibly I introduced a little bug somewhere...  Or I need a larger  
> test-sample.
> 
> I do agree with Michael that this idea is more logical and simpler. I  
> had implemented a different way to check which side moved at which  
> location first. I believe it's more efficient but it doesn't lend  
> itself for Michael's method. However, your way of checking seems  
> rather costly as it's a loop of 1/4 N^2 iterations, where N is the  
> number of moves (which we know is 111 in the beginning). With  
> Michael's method this is reduced to 1/2N iterations.
> 
> My ref-bot on CGOS is still going. It seems to be always within a few  
> ELO points of your Jref and Cref bots. So I'm going to stop it as I  
> don't see much point in populating CGOS with identical bots. It has  
> played over 500 games, which I think is enough empirical evidence  
> that the implementation is 'good enough'.
> 
>   Mark
> 
> 
> On 28-okt-08, at 10:54, Don Dailey wrote:
> 
> > I have empirical evidence that mwRefbot level 4096 (the Michael  
> > Williams
> > enhanced reference bot at 4096 playouts) is stronger than the  
> > reference
> > bot at the same (and even higher levels.)
> >
> >
> > Rank Name  Elo+- games score oppo. draws
> >1 mwRefbot-004096  2684   23   22  1529   78%  21400%
> >2 refbot-0081922670   21   21  1532   73%  22740%
> >3 refbot-0040962645   21   21  1528   71%  22510%
> >4 refbot-0020482555   21   21  1530   63%  22370%
> >5 refbot-0010242431   23   23  1529   54%  21780%
> >6 refbot-0005122253   27   28  1531   47%  20660%
> >7 refbot-0002562000   34   35  1529   42%  19320%
> >8 refbot-0001281646   42   42  1529   45%  16550%
> >9 refbot-641290   40   40  1529   50%  13210%
> >   10 refbot-32 970   40   40  1531   52%  10410%
> >   11 refbot-16 621   33   32  1529   55%   7800%
> >   12 refbot-08 370   25   25  1529   47%   6490%
> >   13 refbot-04 250   23   22  1529   43%   5510%
> >   14 refbot-02 145   22   22  1529   35%   5000%
> >   15 refbot-01   5   22   23  1528   22%   4750%
> >   16 refbot-00   0   22   23  1531   22%   4840%
> >
> > - Don
> >
> >
> > ___
> > computer-go mailing list
> > computer-go@computer-go.org
> > http://www.computer-go.org/mailman/listinfo/computer-go/
> 


signature.asc
Description: This is a digitally signed message part
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] Michael Williams enhancement

2008-10-28 Thread Mark Boon
Hehe, this reminds me of the title of a CNN program: 'Keeping them  
honest' ;-)


OK, let me add that check back in to see if I get better results.

Mark

On 28-okt-08, at 13:18, Michael Williams wrote:

My original chart of numbers was created before it occurred to me  
that maybe the check whether the move has been played before is not  
needed.  It is of course possible that the check IS needed.  I ran  
a new test after removing that check and the numbers don't look as  
good:


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

Re: [computer-go] Michael Williams enhancement

2008-10-28 Thread Michael Williams
If you look at my original email, I did not mention removing that until after I showed and discussed the numbers.  And even then, I said "... it is probably 
safe to remove...".  Probably being the operative word indicating that I had not yet tested that.



Mark Boon wrote:
Hehe, this reminds me of the title of a CNN program: 'Keeping them 
honest' ;-)


OK, let me add that check back in to see if I get better results.

Mark

On 28-okt-08, at 13:18, Michael Williams wrote:

My original chart of numbers was created before it occurred to me that 
maybe the check whether the move has been played before is not 
needed.  It is of course possible that the check IS needed.  I ran a 
new test after removing that check and the numbers don't look as good:







___
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] Michael Williams enhancement

2008-10-28 Thread Michael Williams

You can add the check back in and be more efficient than Don's nested loop by 
doing something like this (warning: untested code)...



for (int mv = 0; mv < NNN; mv++)
{
credit[mv] = true; // initial assumption is that credit is awarded 
for any move
}
double weight = 1.0;
double weightDelta = 2.0 / (ctm - savctm + 1);
for (int i = savctm; i < ctm; i += 2)
{
int mv = mvs[i] & MASK;

if (credit[mv])
{
wins[mv] += weight * sc;
hits[mv] += weight;
credit[mv] = false;  // do not award credit for this move again
}
weight -= weightDelta;

credit[mvs[i+1] & MASK] = false;  // do not award credit for the 
opponent's move
}




Mark Boon wrote:
Hehe, this reminds me of the title of a CNN program: 'Keeping them 
honest' ;-)


OK, let me add that check back in to see if I get better results.

Mark

On 28-okt-08, at 13:18, Michael Williams wrote:

My original chart of numbers was created before it occurred to me that 
maybe the check whether the move has been played before is not 
needed.  It is of course possible that the check IS needed.  I ran a 
new test after removing that check and the numbers don't look as good:







___
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] Michael Williams enhancement

2008-10-28 Thread Don Dailey
On Tue, 2008-10-28 at 12:48 -0200, Mark Boon wrote:
> What do those number mean exactly? Are those winning percentages  
> against your ref-bot with 1,000 playouts?
> 
> I'm not getting the same results as Michael does. I see some  
> improvement, but not nearly as much.
> 
> I had to make a few changes however, as I was adding up the results  
> in a different way than your ref-bot. So what I did was implement  
> tracking the AMAF statistics exactly the same way as in your ref-bot.  
> Next I ran a few hundred games, comparing the win/hit ratio of the  
> newly implemented method with my old one to make sure I got the same  
> result. When that checked out I made the modifications as described  
> by Michael. It seems rather straightforward, but after 200 games I  
> only get a win-rate of ~55% with 2,000 playouts instead of the 63% he  
> has. That's a considerable difference.
> 
> Possibly I introduced a little bug somewhere...  Or I need a larger  
> test-sample.
> 
> I do agree with Michael that this idea is more logical and simpler. 

It's simpler for sure, more logical I don't agree.   The simplest thing
is just to say test every move and don't worry about counting ko moves
multiple times or giving credit for moves the opponent plays first (in
which case you don't really deserve credit for that move.)   It's
clearly not very logical and it plays weaker too. Like I say, I had
to make a decision on this one way or the other so I went with what was
the more standard approach since I believed it to be more logical,
stronger playing, and more correct. 

However, with Michael what I was arguing against wasn't the update
style, but his progressive bias against later moves - clearly good, but
clearly a performance enhancement and a more complicated specification.
If I accepted that,  it would be difficult to refuse every other little
tweak and enhancement that others will be sending me.

For instance, this is not a new idea - Christoph Birk has used it in his
bot, but he uses a more sophisticated decaying weight that is not
linear.   Why should I use the Williams function instead of the Birk
function?   Or some other function?Do you see why you have to draw a
line in the sand somewhere?


> I  
> had implemented a different way to check which side moved at which  
> location first. I believe it's more efficient but it doesn't lend  
> itself for Michael's method. However, your way of checking seems  
> rather costly as it's a loop of 1/4 N^2 iterations, where N is the  
> number of moves (which we know is 111 in the beginning). With  
> Michael's method this is reduced to 1/2N iterations.

If you are worried about big-O characteristics, you don't have to
implement this in a loop like I do.  I did it that way to make it
crystal clear what I was doing.   A fast way is to use a perfect hash
table to track duplicates.  It's totally trivial.  In this case a
perfect hash table is a small array (large enough to encompass all the
legal intersections) where the move IS the index (or you could say the
move, which is an integer, IS the hash function.)

If there are 81 points, zero out 81 elements in an array before you
start gathering stats,  then set that to 1 when you first encounter that
move.  The test is a single array lookup instead of an expensive loop.

However, I didn't bother with all of that because I felt the code would
be somewhat less clear.There are number of optimization like this
that are in my own program that I didn't do here.

This optimization is probably not worth very much.  Compared to the cost
of playing an actual game, this is probably not that expensive but I
will test it for you.  Maybe I will be surprised. 

The one optimization that I DID do, I probably should not have.  The
uniform random move selection loop is too complicated to understand with
a quick glance at the code - but it's a huge performance gain over the
most naive correct method and at the time it seemed too good to leave
out.  Also, I wanted the reference bot to not be too slow since I
envision it being used to test other references against.


- Don




> 
> My ref-bot on CGOS is still going. It seems to be always within a few  
> ELO points of your Jref and Cref bots. So I'm going to stop it as I  
> don't see much point in populating CGOS with identical bots. It has  
> played over 500 games, which I think is enough empirical evidence  
> that the implementation is 'good enough'.
> 
>   Mark
> 
> 
> On 28-okt-08, at 10:54, Don Dailey wrote:
> 
> > I have empirical evidence that mwRefbot level 4096 (the Michael  
> > Williams
> > enhanced reference bot at 4096 playouts) is stronger than the  
> > reference
> > bot at the same (and even higher levels.)
> >
> >
> > Rank Name  Elo+- games score oppo. draws
> >1 mwRefbot-004096  2684   23   22  1529   78%  21400%
> >2 refbot-0081922670   21   21  1532   73%  22740%
> >3 refbot-0040962645   21   21  1528   71%  225

Re: [computer-go] OT: Harder than go? - MCTS for Arimaa

2008-10-28 Thread Don Dailey
MCTS seems to be not very useful for some games, but I think it needs a
lot more research.

I tried it will chess with really dismal results.   Even the mighty
Rybka team has a MC mode which is a curiosity, it plays much weaker than
the standard program.

I have this feeling that you ought to be able to at least approach the
same level of strength but it would require a lot of domain specific
enhancements appropriate to the particular game.In chess for
instance, a 1 ply search with a weak evaluation function and very little
effort gives you a better move that a million random simulations,  but
that is probably not true in GO.  

So one would have to determine what you can and cannot do well with the
different approaches and try to meld them in some way that makes sense.

- Don


On Tue, 2008-10-28 at 11:13 -0400, Janzert wrote:
> David Fotland wrote:
> > I've thought about using mcts for Arimaa, and it might be better than
> > alpha-beta.  Arimaa has a huge branching factor, and since the pieces move
> > slowly, human long-term planning works well against computers.  Mcts prunes
> > better, so it should get deeper PVs.  AMAF might help too, since in a long
> > plan it is often not critical what order the moves are in.
> > 
> > Someone should give it a try.
> > 
> >> David, is MCTS likely to be useful for Arimaa?
> >>
> >> Darren
> >>
> 
> Jeff Bacher author of Clueless gave UCT w/light playouts a try a few
> years ago but without much success. If I'm remembering correctly it
> played fairly decent in the end game, but for most of the game was much
> to prone to advancing rabbits on the off chance that they could sneak
> through.
> 
> I also gave UCT a bit of a try but never got it playing much better than
> a 1 ply static evaluation. If I can get my alpha-beta program up to the
> same level as yours I would like to go explore MCTS and other search
> methods some more.
> 
> There have been a number of new programs in development this year but
> I'm not aware of any of the ones that have made it to the stage of
> actually playing games being anything other than alpha-beta.
> 
> Janzert
> 
> ___
> computer-go mailing list
> computer-go@computer-go.org
> http://www.computer-go.org/mailman/listinfo/computer-go/


signature.asc
Description: This is a digitally signed message part
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] Michael Williams enhancement

2008-10-28 Thread Don Dailey
On Tue, 2008-10-28 at 11:18 -0400, Michael Williams wrote:
> Don, did you retain the check in your version that has the weighted
> AMAF?

No, I eliminated the check so that I could give an apples to apples
assessment of the idea exactly as Michael Williams suggested. 


> What ever you did, could you also add a version to the study that does
> the opposite?

I think the right way to do that is to first compute how many moves are
actually going to be used, then use the formula directly.   Right now,
if you use the test and his formula you would get uneven weightings,
gaps as it were.Probably no big deal.

Another idea is to weight as a function of how many points are on the
board.

So the question is do you compensate in any way for the missing moves or
do you simply have the check and ignore the gaps?

If you actually want to use something in a real program you should test
all reasonable ideas and just see what works. 

- Don



signature.asc
Description: This is a digitally signed message part
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] Michael Williams enhancement

2008-10-28 Thread Mark Boon

Don,

Don't get me wrong, I understand very well where you're coming from.  
It's very handy to have a concise defintion of a minimalist playing  
program that can be used to check correctness. The main reason I  
thought Michael's idea was worth considering was that it was both  
simpler AND played better AND scaled better. But if in order to get a  
meaningful boost in strength you have to maintain some sort of check  
whether a move was played by one side before, then I agree it may be  
better to leave his improvement out of the reference specification.


Mark

On 28-okt-08, at 13:49, Don Dailey wrote:


On Tue, 2008-10-28 at 12:48 -0200, Mark Boon wrote:

What do those number mean exactly? Are those winning percentages
against your ref-bot with 1,000 playouts?

I'm not getting the same results as Michael does. I see some
improvement, but not nearly as much.

I had to make a few changes however, as I was adding up the results
in a different way than your ref-bot. So what I did was implement
tracking the AMAF statistics exactly the same way as in your ref-bot.
Next I ran a few hundred games, comparing the win/hit ratio of the
newly implemented method with my old one to make sure I got the same
result. When that checked out I made the modifications as described
by Michael. It seems rather straightforward, but after 200 games I
only get a win-rate of ~55% with 2,000 playouts instead of the 63% he
has. That's a considerable difference.

Possibly I introduced a little bug somewhere...  Or I need a larger
test-sample.

I do agree with Michael that this idea is more logical and simpler.


It's simpler for sure, more logical I don't agree.   The simplest  
thing

is just to say test every move and don't worry about counting ko moves
multiple times or giving credit for moves the opponent plays first (in
which case you don't really deserve credit for that move.)   It's
clearly not very logical and it plays weaker too. Like I say, I  
had
to make a decision on this one way or the other so I went with what  
was

the more standard approach since I believed it to be more logical,
stronger playing, and more correct.

However, with Michael what I was arguing against wasn't the update
style, but his progressive bias against later moves - clearly good,  
but
clearly a performance enhancement and a more complicated  
specification.
If I accepted that,  it would be difficult to refuse every other  
little

tweak and enhancement that others will be sending me.

For instance, this is not a new idea - Christoph Birk has used it  
in his

bot, but he uses a more sophisticated decaying weight that is not
linear.   Why should I use the Williams function instead of the Birk
function?   Or some other function?Do you see why you have to  
draw a

line in the sand somewhere?



I
had implemented a different way to check which side moved at which
location first. I believe it's more efficient but it doesn't lend
itself for Michael's method. However, your way of checking seems
rather costly as it's a loop of 1/4 N^2 iterations, where N is the
number of moves (which we know is 111 in the beginning). With
Michael's method this is reduced to 1/2N iterations.


If you are worried about big-O characteristics, you don't have to
implement this in a loop like I do.  I did it that way to make it
crystal clear what I was doing.   A fast way is to use a perfect hash
table to track duplicates.  It's totally trivial.  In this case a
perfect hash table is a small array (large enough to encompass all the
legal intersections) where the move IS the index (or you could say the
move, which is an integer, IS the hash function.)

If there are 81 points, zero out 81 elements in an array before you
start gathering stats,  then set that to 1 when you first encounter  
that

move.  The test is a single array lookup instead of an expensive loop.

However, I didn't bother with all of that because I felt the code  
would

be somewhat less clear.There are number of optimization like this
that are in my own program that I didn't do here.

This optimization is probably not worth very much.  Compared to the  
cost

of playing an actual game, this is probably not that expensive but I
will test it for you.  Maybe I will be surprised.

The one optimization that I DID do, I probably should not have.  The
uniform random move selection loop is too complicated to understand  
with

a quick glance at the code - but it's a huge performance gain over the
most naive correct method and at the time it seemed too good to leave
out.  Also, I wanted the reference bot to not be too slow since I
envision it being used to test other references against.


- Don






My ref-bot on CGOS is still going. It seems to be always within a few
ELO points of your Jref and Cref bots. So I'm going to stop it as I
don't see much point in populating CGOS with identical bots. It has
played over 500 games, which I think is enough empirical evidence
that the implementation is 'go

Re: [computer-go] Michael Williams enhancement

2008-10-28 Thread Don Dailey
On Tue, 2008-10-28 at 11:40 -0400, Michael Williams wrote:
> If you look at my original email, I did not mention removing that
> until after I showed and discussed the numbers.  And even then, I said
> "... it is probably 
> safe to remove...".  Probably being the operative word indicating that
> I had not yet tested that.

I used your pseudo code, which didn't have the check in it.  

In tests I had done in the past, it didn't really make much difference.
I had to run a lot of game to conclude that having the test seemed to
make it slightly stronger and I don't think I ran enough to make this
very conclusive.   

In general, I stop testing when it becomes clear that something won't
make a big enough difference to worry too much about - then I use some
other criteria - my gut feeling, simplicity, aesthetics, etc.

But that is probably not good to do.  Imagine ignoring a dozen 10 ELO
enhancements because you were not willing to get enough data to prove
each was a tiny improvement.   You may have thrown away 100 ELO over
time.

- Don




signature.asc
Description: This is a digitally signed message part
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] Michael Williams enhancement

2008-10-28 Thread Don Dailey
On Tue, 2008-10-28 at 14:08 -0200, Mark Boon wrote:
> Don,
> 
> Don't get me wrong, I understand very well where you're coming from.  
> It's very handy to have a concise defintion of a minimalist playing  
> program that can be used to check correctness. The main reason I  
> thought Michael's idea was worth considering was that it was both  
> simpler AND played better AND scaled better. But if in order to get
> a  
> meaningful boost in strength you have to maintain some sort of check  
> whether a move was played by one side before, then I agree it may be  
> better to leave his improvement out of the reference specification.

The important idea here of course is the decaying weights, not whether
to do the "already played" check.   It's clearly simpler not to do the
check.   And with decaying weights ignoring the check would have less
impact anyway.   So don't get me wrong either,  I definitely like the
idea and find it a useful enhancement. 

I think we will accumulate a number of useful enhancement to the simple
reference bot and I want to track them on this web site (the web site
that doesn't yet exist :-)

- Don




> 
> Mark


signature.asc
Description: This is a digitally signed message part
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] Michael Williams enhancement

2008-10-28 Thread Don Dailey
Yes, this is the hash table idea I mentioned, although most people don't
view this as a hash table - it is.

The enhanced version has actually improved it's result over the past
couple of hours:

Rank Name  Elo+- games score oppo. draws 
   1 mwRefbot-004096  2691   22   21  1642   78%  21580% 
   2 refbot-0081922675   20   20  1642   73%  22770% 
   3 refbot-0040962650   20   20  1642   71%  22570% 
   4 refbot-0020482564   20   20  1642   63%  22420% 
   5 refbot-0010242440   22   22  1642   55%  21770% 
   6 refbot-0005122265   26   26  1642   48%  20670% 
   7 refbot-0002562006   33   34  1644   42%  19380% 
   8 refbot-0001281651   40   41  1643   45%  16570% 
   9 refbot-641293   39   39  1644   51%  13210% 
  10 refbot-32 975   38   38  1643   52%  10520% 
  11 refbot-16 630   32   31  1642   55%   7860% 
  12 refbot-08 375   24   24  1642   47%   6540% 
  13 refbot-04 256   22   22  1643   43%   5610% 
  14 refbot-02 148   21   21  1642   35%   5000% 
  15 refbot-01   6   22   22  1644   21%   4870% 
  16 refbot-00   0   21   22  1643   21%   4890% 

- Don



On Tue, 2008-10-28 at 11:41 -0400, Michael Williams wrote:
> You can add the check back in and be more efficient than Don's nested loop by 
> doing something like this (warning: untested code)...
> 
> 
> 
>  for (int mv = 0; mv < NNN; mv++)
>  {
>  credit[mv] = true; // initial assumption is that credit is 
> awarded for any move
>  }
>  double weight = 1.0;
>  double weightDelta = 2.0 / (ctm - savctm + 1);
>  for (int i = savctm; i < ctm; i += 2)
>  {
>  int mv = mvs[i] & MASK;
> 
>  if (credit[mv])
>  {
>  wins[mv] += weight * sc;
>  hits[mv] += weight;
>  credit[mv] = false;  // do not award credit for this move 
> again
>  }
>  weight -= weightDelta;
> 
>  credit[mvs[i+1] & MASK] = false;  // do not award credit for the 
> opponent's move
>  }
> 
> 
> 
> 
> Mark Boon wrote:
> > Hehe, this reminds me of the title of a CNN program: 'Keeping them 
> > honest' ;-)
> > 
> > OK, let me add that check back in to see if I get better results.
> > 
> > Mark
> > 
> > On 28-okt-08, at 13:18, Michael Williams wrote:
> > 
> >> My original chart of numbers was created before it occurred to me that 
> >> maybe the check whether the move has been played before is not 
> >> needed.  It is of course possible that the check IS needed.  I ran a 
> >> new test after removing that check and the numbers don't look as good:
> >>
> > 
> > 
> > 
> > 
> > ___
> > 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/


signature.asc
Description: This is a digitally signed message part
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] Michael Williams enhancement

2008-10-28 Thread Michael Williams

I ran a quick test of the check in question combined with the decaying 
playouts.  The one WITH the check won 70% at 2000 playouts over a 200 game 
match.


Don Dailey wrote:

On Tue, 2008-10-28 at 14:08 -0200, Mark Boon wrote:

Don,

Don't get me wrong, I understand very well where you're coming from.  
It's very handy to have a concise defintion of a minimalist playing  
program that can be used to check correctness. The main reason I  
thought Michael's idea was worth considering was that it was both  
simpler AND played better AND scaled better. But if in order to get
a  
meaningful boost in strength you have to maintain some sort of check  
whether a move was played by one side before, then I agree it may be  
better to leave his improvement out of the reference specification.


The important idea here of course is the decaying weights, not whether
to do the "already played" check.   It's clearly simpler not to do the
check.   And with decaying weights ignoring the check would have less
impact anyway.   So don't get me wrong either,  I definitely like the
idea and find it a useful enhancement. 


I think we will accumulate a number of useful enhancement to the simple
reference bot and I want to track them on this web site (the web site
that doesn't yet exist :-)

- Don





Mark



___
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] Michael Williams enhancement

2008-10-28 Thread Michael Williams

I shouldn't have gone on memory.  It was actually 65.9% over 183 games.

Michael Williams wrote:
I ran a quick test of the check in question combined with the decaying 
playouts.  The one WITH the check won 70% at 2000 playouts over a 200 
game match.



Don Dailey wrote:

On Tue, 2008-10-28 at 14:08 -0200, Mark Boon wrote:

Don,

Don't get me wrong, I understand very well where you're coming from.  
It's very handy to have a concise defintion of a minimalist playing  
program that can be used to check correctness. The main reason I  
thought Michael's idea was worth considering was that it was both  
simpler AND played better AND scaled better. But if in order to get
a  meaningful boost in strength you have to maintain some sort of 
check  whether a move was played by one side before, then I agree it 
may be  better to leave his improvement out of the reference 
specification.


The important idea here of course is the decaying weights, not whether
to do the "already played" check.   It's clearly simpler not to do the
check.   And with decaying weights ignoring the check would have less
impact anyway.   So don't get me wrong either,  I definitely like the
idea and find it a useful enhancement.
I think we will accumulate a number of useful enhancement to the simple
reference bot and I want to track them on this web site (the web site
that doesn't yet exist :-)

- Don





Mark



___
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] Michael Williams enhancement

2008-10-28 Thread Don Dailey
On Tue, 2008-10-28 at 12:22 -0400, Michael Williams wrote:
> I ran a quick test of the check in question combined with the decaying 
> playouts.  The one WITH the check won 70% at 2000 playouts over a 200 game 
> match.

I just queried my results at 4096 playouts and get very different
numbers.It has only played 257 games so far, but the stats are 56.4%
- far from 70%.  

It could be that:

  1.  I have a buggy implementation.
  2.  You have a buggy implementation of the non-enhanced version.
  3.  Diminishing returns (you played 2000, I played 4096
  4.  Statistical noise.  (you high, me low, etc.)

It could be some combination of the above or something else.

I'm going to try a specific test of 2000 playouts.

- Don



irb(main):004:0> 
irb(main):005:0* 145 / 257.0
=> 0.56420233463035
irb(main):006:0> 





> 
> Don Dailey wrote:
> > On Tue, 2008-10-28 at 14:08 -0200, Mark Boon wrote:
> >> Don,
> >>
> >> Don't get me wrong, I understand very well where you're coming from.  
> >> It's very handy to have a concise defintion of a minimalist playing  
> >> program that can be used to check correctness. The main reason I  
> >> thought Michael's idea was worth considering was that it was both  
> >> simpler AND played better AND scaled better. But if in order to get
> >> a  
> >> meaningful boost in strength you have to maintain some sort of check  
> >> whether a move was played by one side before, then I agree it may be  
> >> better to leave his improvement out of the reference specification.
> > 
> > The important idea here of course is the decaying weights, not whether
> > to do the "already played" check.   It's clearly simpler not to do the
> > check.   And with decaying weights ignoring the check would have less
> > impact anyway.   So don't get me wrong either,  I definitely like the
> > idea and find it a useful enhancement. 
> > 
> > I think we will accumulate a number of useful enhancement to the simple
> > reference bot and I want to track them on this web site (the web site
> > that doesn't yet exist :-)
> > 
> > - Don
> > 
> > 
> > 
> > 
> >> Mark
> >>
> >> 
> >>
> >> ___
> >> 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/


signature.asc
Description: This is a digitally signed message part
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] Michael Williams enhancement

2008-10-28 Thread Don Dailey

As promised I tested this on the C reference bot.  I get almost a 12%
speedup - 36.0 seconds versus 40.2

- Don




On Tue, 2008-10-28 at 11:41 -0400, Michael Williams wrote:
> You can add the check back in and be more efficient than Don's nested loop by 
> doing something like this (warning: untested code)...
> 
> 
> 
>  for (int mv = 0; mv < NNN; mv++)
>  {
>  credit[mv] = true; // initial assumption is that credit is 
> awarded for any move
>  }
>  double weight = 1.0;
>  double weightDelta = 2.0 / (ctm - savctm + 1);
>  for (int i = savctm; i < ctm; i += 2)
>  {
>  int mv = mvs[i] & MASK;
> 
>  if (credit[mv])
>  {
>  wins[mv] += weight * sc;
>  hits[mv] += weight;
>  credit[mv] = false;  // do not award credit for this move 
> again
>  }
>  weight -= weightDelta;
> 
>  credit[mvs[i+1] & MASK] = false;  // do not award credit for the 
> opponent's move
>  }
> 
> 
> 
> 
> Mark Boon wrote:
> > Hehe, this reminds me of the title of a CNN program: 'Keeping them 
> > honest' ;-)
> > 
> > OK, let me add that check back in to see if I get better results.
> > 
> > Mark
> > 
> > On 28-okt-08, at 13:18, Michael Williams wrote:
> > 
> >> My original chart of numbers was created before it occurred to me that 
> >> maybe the check whether the move has been played before is not 
> >> needed.  It is of course possible that the check IS needed.  I ran a 
> >> new test after removing that check and the numbers don't look as good:
> >>
> > 
> > 
> > 
> > 
> > ___
> > 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/


signature.asc
Description: This is a digitally signed message part
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

[computer-go] The Enemy's Key Point Is My Own

2008-10-28 Thread Richard Brown
"The enemy's key point is my own" is often invoked, for example,  as a
reason to occupy the central point of a _nakade_ shape, or to play a
double sente point, or to make an extension that would also be an
extension for the opponent.

I would like now to talk about it in the context of the potential
modification of program behavior, or "style", via opponent modeling.

There's another oft-repeated maxim which states that "there are as many
styles of play as there are go-players."  If true, this adage implies a
continuum along which each player may find himself or herself.

Or itself.

One measure of playing style is the degree to which the bulk of a given
player's selected behaviors display a concern with one's own position,
or a concern with the position of the enemy.

That is to say, or rather ask, of the moves in which a player most
often chooses to indulge, whether they exhibit what might be called
a "defensive" character, seeking to shore up or expand one's own
position, or do  they instead more often exhibit a "combative"
character, seeking to destroy or diminish that of the other?

Of course all players indulge in both types of behavior, but we all
know that there are some players who prefer to build, and some who
prefer to destroy, when they are given a choice.

Now, for each potential behavior on the board -- even those acts in
which we would never choose to indulge -- suppose that we already have
a pair of numbers, in this case percentages, where one represents the
likelihood (or our belief about the probability) that such a point is
advantageous for us to play, and where another such number represents,
conversely, the likelihood (or our belief) that the same point (were we
to pass and it be selected by the foe) would be advantageous for the foe.

How we have arrived at these "probabilities" may be important,
certainly, but it's beyond the scope of this message.  Let's
just say that we already have them.

Remembering that frequently-quoted  proverb, namely:  "The enemy's key
point is my own", we may wish to consider giving some weight to the
notion of playing on those points that we believe would be best for our
opponent to place a stone.

For example, suppose that it is our belief that a specific move has a
15% chance of being our best move, and say, a 35% chance of being best
for the foe.

If we give equal weight to these percentages, we may simply average
them, or "split the difference", arriving at a value of 25%, if we wish
to take advantage of the notion embodied in the proverb, as well the
notion of merely looking for plays that will be advantageous to our own
position.  Note that this average is given by:

( 0.5 * 0.15 ) + ( 0.5 * 0.35 ) = 0.25

where the weights are equal, that is, fifty-fifty.

However, IRL ("in real life") each go player in the world is not only
likely to -- but in practice _does_ -- give a different weight, either
more or less, to each notion, as his character, or even his whim, dictates.

At the one extreme we may have a player who is defensive, pacifistic,
self-obsessed, overly-concerned about his own stones, to the point of
ignoring the other entirely.  Such a player is oblivious to the foe's
plans and position, trying always to take one's own best point.  Such
a player completely disregards the proverb:  "The enemy's key point is
my own."

At the other extreme we have the player who is aggressive, combative,
entirely obsessed with the other, overly-concerned about the opponent's
stones, to the point of ignoring his own best interests entirely.  Such
a player is oblivious to his own plans and postion, trying always to
take the foe's best point.  This player has _pathologically_ taken to
heart the proverb:  "_Only_ the enemy's key point is my own."

Both styles are pathological, and somewhere between these two extremes,
lies _every_ go-player, it seems.

Thus, a moderately-defensive player might be likely, instead of as in
the above example, to give more weight to the 15% chance (his own) and
less to the the 35% chance (the foe's).

I use the term "chance" loosely here, as we all know that go, being a
game of perfect information, does not depend on chance.  [Whatever that is!]

Yet if a certain player were known to be, in general, say, about 63%
likely to be aggressive (and 37% defensive), we might then calculate
that his chance of selecting the above specific point is given by:

( 0.63 * 0.15 ) + ( 0.37 * 0.35 ) = 0.224

because such a player gives more weight (63%) to playing _our_ moves,
and less (37%) to playing his own.

In this particular example, there is not so much difference between our
original 50/50 estimate of the chance that this is a good move, and the
new, 63/37 estimate.

However, as the degree of aggressiveness of the player approaches one
or the other of the extremes, and also as our _a_priori_ beliefs vary
about the chances of a particular point being a good one for one or the
other of us, there are cases where the 

[computer-go] enhanced test

2008-10-28 Thread Don Dailey
It appears from testing 3 of us are doing, that the Mark Williams
enhancement is good,  and that testing to see if the move was played
before is VERY GOOD when combined with the enhancement.  

The enhancement without the checking is perhaps 40 ELO stronger but with
the testing it appears to be about 110 ELO stronger.   Of course these
numbers are rough estimates.I can give more precise numbers in a few
hours.  I'm round robin testing 3 versions against each other:

   1. standard ref bot

   2. mw enhanced  - no first move test.

   3. mw enhanced  - with first move test.


- Don




signature.asc
Description: This is a digitally signed message part
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] enhanced test

2008-10-28 Thread Michael Williams

It's worth noting that the standard ref bot also has the first move test.


Don Dailey wrote:

It appears from testing 3 of us are doing, that the Mark Williams
enhancement is good,  and that testing to see if the move was played
before is VERY GOOD when combined with the enhancement.  


The enhancement without the checking is perhaps 40 ELO stronger but with
the testing it appears to be about 110 ELO stronger.   Of course these
numbers are rough estimates.I can give more precise numbers in a few
hours.  I'm round robin testing 3 versions against each other:

   1. standard ref bot

   2. mw enhanced  - no first move test.

   3. mw enhanced  - with first move test.


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


Re: [computer-go] enhanced test

2008-10-28 Thread Don Dailey
On Tue, 2008-10-28 at 15:07 -0400, Michael Williams wrote:
> It's worth noting that the standard ref bot also has the first move test.

Yes, so presumably even the weakest version is doing it the "best" way,
i.e. doing the check.

- Don



> 
> 
> Don Dailey wrote:
> > It appears from testing 3 of us are doing, that the Mark Williams
> > enhancement is good,  and that testing to see if the move was played
> > before is VERY GOOD when combined with the enhancement.  
> > 
> > The enhancement without the checking is perhaps 40 ELO stronger but with
> > the testing it appears to be about 110 ELO stronger.   Of course these
> > numbers are rough estimates.I can give more precise numbers in a few
> > hours.  I'm round robin testing 3 versions against each other:
> > 
> >1. standard ref bot
> > 
> >2. mw enhanced  - no first move test.
> > 
> >3. mw enhanced  - with first move test.
> > 
> > 
> > - 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/


signature.asc
Description: This is a digitally signed message part
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] The Enemy's Key Point Is My Own

2008-10-28 Thread terry mcintyre
> From: Richard Brown <[EMAIL PROTECTED]>
> 
> "The enemy's key point is my own" is often invoked, for example,  as a
> reason to occupy the central point of a _nakade_ shape, or to play a
> double sente point, or to make an extension that would also be an
> extension for the opponent.


 
> Not only is the enemy's key point my own, but if I know _a_priori_ what
> sorts of behavior in which my _specific_ enemy is likely to indulge,
> perhaps I may be able to play, sometimes anyway, on the very points
> where he or she (or it) is likely to play!
> 
> The hypothesis outlined above, as of yet, has neither been confirmed
> nor falsified by experimentation, but it kinda gives a whole new
> meaning to the proverb, don't it?

Sluggo has ( or had ) a particularly nasty form of "the enemy's key point is my 
own" - the program actually ran the GnuGo engine, so Sluggo knew precisely 
where GnuGo was most likely to play, and ( using a large cluster ) could give 
GnuGo a five stone handicap and win "convincingly and consistently", according 
to David Doshay, the author of Sluggo - google "sluggo gnugo evil twin" for 
more information.

The downside of overfitting to a particular opponent is that little improvement 
versus other opponents was seen. 

I always wondered if it would be useful to exploit certain information which 
GnuGo knows how to calculate, but does not actually use in play - I suspect 
that life-and-death and semeai information which GnuGo knows how to discover 
may not actually be used, in some cases. 


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


Re: [computer-go] The Enemy's Key Point Is My Own

2008-10-28 Thread David Doshay

On 28, Oct 2008, at 11:23 AM, Richard Brown wrote:


... if there is someone who can explain to me why I have the
nagging suspicion that a differential equation is involved here, ...


I cannot tell why you have this nagging suspicion, but I can say that
if you wish to look into it deeper you can look up computer methods
for dealing with dif Eqs on a discrete lattice. It may give you a better
feeling one way or the other. Personally, in this case I do not see it,
I only see continuous parameters on a discrete lattice.

But I can add that SlugGo uses a modified version of the common
Go Proverb "The Enemy's Key Point Is My Own" as part of its evaluation
function. My experiments do show that this helps improve play in
many cases, and leads to amazing blunders in others.

It is worth pointing out that this proverb is too exact, and that it is
far better to realize that if implemented in a program as it is stated
you get the pathological behavior you mention. The truth is closer
to: "Look near your opponent's best move to find things that are
interesting" or possibly "when my good moves are near their good
moves, that area may be more urgent that a big play elsewhere."

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


Re: [computer-go] The Enemy's Key Point Is My Own

2008-10-28 Thread Don Dailey
On Tue, 2008-10-28 at 12:28 -0700, terry mcintyre wrote:

> The downside of overfitting to a particular opponent is that little
> improvement versus other opponents was seen. 

I wonder what would happen if Sluggo used a second player (with a style
much different from gnugo but still similar strength) as a source of
plausible moves in addition to gnugo?Specifically a player that had
different weaknesses and strengths.

- Don






signature.asc
Description: This is a digitally signed message part
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] enhanced test

2008-10-28 Thread Jason House
You should also test your 7/8 keep heuristic to see if it's reducing  
weight or avoiding the final moves that matters.


Sent from my iPhone

On Oct 28, 2008, at 3:03 PM, Don Dailey <[EMAIL PROTECTED]> wrote:


It appears from testing 3 of us are doing, that the Mark Williams
enhancement is good,  and that testing to see if the move was played
before is VERY GOOD when combined with the enhancement.

The enhancement without the checking is perhaps 40 ELO stronger but  
with

the testing it appears to be about 110 ELO stronger.   Of course these
numbers are rough estimates.I can give more precise numbers in a  
few

hours.  I'm round robin testing 3 versions against each other:

  1. standard ref bot

  2. mw enhanced  - no first move test.

  3. mw enhanced  - with first move test.


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


Re: [computer-go] The Enemy's Key Point Is My Own

2008-10-28 Thread David Doshay

On 28, Oct 2008, at 12:28 PM, terry mcintyre wrote:

Sluggo has ( or had ) a particularly nasty form of "the enemy's key  
point is my own" - the program actually ran the GnuGo engine, so  
Sluggo knew precisely where GnuGo was most likely to play, and  
( using a large cluster ) could give GnuGo a five stone handicap and  
win "convincingly and consistently", according to David Doshay, the  
author of Sluggo - google "sluggo gnugo evil twin" for more  
information.


While these things may be related, they are actually different code  
segments inside of SlugGo ... but the original post did mix the two  
somewhat as well.


The Evil Twin Effect comes from correct modeling of the opponent's  
play in look ahead sequences. The effect in SlugGo is strong enough in  
games against GNU Go that with proper parameter settings and enough  
look ahead SlugGo could beat GNU Go with 9 stones. But as Terry says,  
that apparent strength not only did not make SlugGo stronger against  
other programs, it made it weaker. Too much weight was placed upon  
long look ahead sequences which were virtually certain to happen in a  
game against GNU Go, and had virtually no probability of happening in  
a game against anyone else.


One nasty form of "The Enemy's Key Point Is My Own" was the "reverse  
monkey jump," where SlugGo would properly recognize that the  
opponent's best move against it was a monkey jump, and properly see  
that stopping that monkey jump was the best move, but it would then  
play the same exact point the opponent would have, thus playing way  
too far inside its own area. So, as I said in my earlier post, "near"  
is the right idea, not at the same point. There are other easy  
examples involving them extending towards our stones, where we should  
not take their extension as our move, but we should prevent their  
extension my moving into that area farther from our own stones than  
they would have approached.


Cheers,
David




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


Re: [computer-go] enhanced test

2008-10-28 Thread Don Dailey
On Tue, 2008-10-28 at 15:34 -0400, Jason House wrote:
> You should also test your 7/8 keep heuristic to see if it's reducing  
> weight or avoiding the final moves that matters.

I'm now also testing the reference bot that does NOT check for already
played moves and it's at least 100 ELO weaker than even the reference
bot.   

So it appears in all cases that checking for "already played" moves is
quite important.

Rank NameElo+- games score oppo. draws 
   1 mwNoDup-2000   2106   23   22   578   64%  20030% 
   2 mwRefbot-2000  2044   22   22   580   52%  20300% 
   3 refbot-20002000   22   22   581   43%  20500% 
   4 simple-20001858   41   44   199   25%  20500% 


These are 9x9, 7.5 komi round robin format.  

simple - reference bot without check for already played moves.
mwNoDup - does the test for already played moves.






- Don



signature.asc
Description: This is a digitally signed message part
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] The Enemy's Key Point Is My Own

2008-10-28 Thread Gunnar Farnebäck

David Doshay wrote:
> One nasty form of "The Enemy's Key Point Is My Own" was the "reverse
> monkey jump," where SlugGo would properly recognize that the opponent's
> best move against it was a monkey jump, and properly see that stopping
> that monkey jump was the best move, but it would then play the same
> exact point the opponent would have, thus playing way too far inside its
> own area. So, as I said in my earlier post, "near" is the right idea,
> not at the same point. There are other easy examples involving them
> extending towards our stones, where we should not take their extension
> as our move, but we should prevent their extension my moving into that
> area farther from our own stones than they would have approached.

An extreme case is this life and death problem where playing the
opponent's key point is the worst you can do locally.

|O.
|O.
|.O.XOO
|.XOX.O
+--

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


Re: [computer-go] The Enemy's Key Point Is My Own

2008-10-28 Thread David Doshay

SlugGo was never intended to just be the multi-headed global
lookahead on top of GNU Go that it is today. The idea has always
been to have multiple go engines inside. We just picked GNU Go
for the first because when we started that was the only decent
open source program, so we built the infrastructure around that
engine.

We are working on others, but it is happening slowly.

The PhD topic is the combination of different expert systems and
how to arbitrate between their suggestions, particularly when the
experts use different representations for move quality/urgency.


Cheers,
David



On 28, Oct 2008, at 12:34 PM, Don Dailey wrote:


On Tue, 2008-10-28 at 12:28 -0700, terry mcintyre wrote:


The downside of overfitting to a particular opponent is that little
improvement versus other opponents was seen.


I wonder what would happen if Sluggo used a second player (with a  
style

much different from gnugo but still similar strength) as a source of
plausible moves in addition to gnugo?Specifically a player that  
had

different weaknesses and strengths.

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


Re: [computer-go] enhanced test

2008-10-28 Thread Michael Williams

It makes me wonder if there are other classes of moves that can be segregated 
as AMAF-worthy and AMAF-unworthy.

For instance, maybe capture moves played in the playout are only worth treating
as first when the enemy did not add any stones to the chain that got captured.
Of course, you can't do anything too complex that would significantly slow down 
the playouts.


Don Dailey wrote:

On Tue, 2008-10-28 at 15:07 -0400, Michael Williams wrote:

It's worth noting that the standard ref bot also has the first move test.


Yes, so presumably even the weakest version is doing it the "best" way,
i.e. doing the check.


- Don





Don Dailey wrote:

It appears from testing 3 of us are doing, that the Mark Williams
enhancement is good,  and that testing to see if the move was played
before is VERY GOOD when combined with the enhancement.  


The enhancement without the checking is perhaps 40 ELO stronger but with
the testing it appears to be about 110 ELO stronger.   Of course these
numbers are rough estimates.I can give more precise numbers in a few
hours.  I'm round robin testing 3 versions against each other:

   1. standard ref bot

   2. mw enhanced  - no first move test.

   3. mw enhanced  - with first move test.


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


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


Re: [computer-go] enhanced test

2008-10-28 Thread Don Dailey
On Tue, 2008-10-28 at 15:34 -0400, Jason House wrote:
> You should also test your 7/8 keep heuristic to see if it's reducing  
> weight or avoiding the final moves that matters.

Yes, there is some overlap.  The 7/8 rule avoids those cleanup moves at
the end that are probably useless for choosing moves near the opening
position.   So my 7/8 is a dumbed down version of Michael Williams and
Christoph Birk method. 

It could be that most of the benefit is avoiding moves near the end. 

I'm sure that the formula for decaying weight could be tweaked too but I
would bet that 95% of the benefit can be had with something simple.

- Don



signature.asc
Description: This is a digitally signed message part
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] enhanced test

2008-10-28 Thread Don Dailey
On Tue, 2008-10-28 at 16:37 -0400, Michael Williams wrote:
> It makes me wonder if there are other classes of moves that can be segregated 
> as AMAF-worthy and AMAF-unworthy.
> 
> For instance, maybe capture moves played in the playout are only worth 
> treating
> as first when the enemy did not add any stones to the chain that got captured.
> Of course, you can't do anything too complex that would significantly slow 
> down the playouts.

It's pretty tricky doing anything very clever without slowing things
down a lot.   But I am highly interested because I want to build a
stronger Ogo type of program for handheld devices.   I could probably
improve Ogo already based on this idea of decaying weights.   Ogo is the
same as anchorMan but I don't like the tricks I use to get to 1500 ELO -
they are pretty ugly hacks in my opinion.   I could manage 5000 playouts
without it taking too long on 9x9 but that is really an upper limit.

One thing I once tried was to take statistics on each 3x3 pattern on the
board instead of each move.   So a move to c3 when not surrounded by
anything is different that C3 when there is something around it.   I
didn't get any improvement from this - it was just slow and weak.   The
patterns really kill how many samples you can get from each playout and
of course it's a major slowdown to an optimized program. 

So this is not just academic for me.  I would like to find some more
simple things (emphasis on simple) to improve basic bots.   Of course
tree search is not something I want to get into for a handheld device
although it's possible.   You clearly don't want a memory hog on a
handheld device and you basically need fast response time to be
practical. 

Of course there is a limit to how far you can go without tree search and
fancy heuristics, but I think it might be possible to push this pretty
far with some cleverness.   I wonder if 1700 is out of the question?  

So I think it's possible to push the AMAF-worthy idea a little farther.

If you look at actual games, you will see that one of the most common
problems is self-atari to create an atari of it's own.   The Ogo
solution was artificial, I just detected that and gave it a little
penalty.   But I would like to find something more in the spirit of what
we are doing now - not so domain specific.

I'm also wondering what we could do by taking statistics on the
opponents moves.  I can't think of anything immediately obvious. 


- Don





> 
> Don Dailey wrote:
> > On Tue, 2008-10-28 at 15:07 -0400, Michael Williams wrote:
> >> It's worth noting that the standard ref bot also has the first move test.
> > 
> > Yes, so presumably even the weakest version is doing it the "best" way,
> > i.e. doing the check.
> > 
> > - Don
> > 
> > 
> > 
> >>
> >> Don Dailey wrote:
> >>> It appears from testing 3 of us are doing, that the Mark Williams
> >>> enhancement is good,  and that testing to see if the move was played
> >>> before is VERY GOOD when combined with the enhancement.  
> >>>
> >>> The enhancement without the checking is perhaps 40 ELO stronger but with
> >>> the testing it appears to be about 110 ELO stronger.   Of course these
> >>> numbers are rough estimates.I can give more precise numbers in a few
> >>> hours.  I'm round robin testing 3 versions against each other:
> >>>
> >>>1. standard ref bot
> >>>
> >>>2. mw enhanced  - no first move test.
> >>>
> >>>3. mw enhanced  - with first move test.
> >>>
> >>>
> >>> - 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/
> 
> ___
> computer-go mailing list
> computer-go@computer-go.org
> http://www.computer-go.org/mailman/listinfo/computer-go/


signature.asc
Description: This is a digitally signed message part
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] enhanced test

2008-10-28 Thread terry mcintyre
This testing would be ideal for a boinc-style network of cooperative computers. 
It isn't time-critical, and does not require a lot of information exchange; 
each computer would run a series of multi-way tournaments, and the results 
would be collected.

 
I'd be happy to volunteer part of my desktop computer for this purpose, and 
this study might gather as much support as the scalability studies a few months 
back. I like the way various tweaks are being compared, to determine their cost 
versus value. 

The keys to make this work are: low maintenance - a bit of setup and then 
forget about it - and some form of feedback to encourage participation. 

Terry McIntyre <[EMAIL PROTECTED]>


-- Libertarians Do It With Consent!


- Original Message 
> From: Don Dailey <[EMAIL PROTECTED]>
> To: Jason House <[EMAIL PROTECTED]>
> Cc: computer-go 
> Sent: Tuesday, October 28, 2008 12:51:53 PM
> Subject: Re: [computer-go] enhanced test
> 
> On Tue, 2008-10-28 at 15:34 -0400, Jason House wrote:
> > You should also test your 7/8 keep heuristic to see if it's reducing  
> > weight or avoiding the final moves that matters.
> 
> I'm now also testing the reference bot that does NOT check for already
> played moves and it's at least 100 ELO weaker than even the reference
> bot.  
> 
> So it appears in all cases that checking for "already played" moves is
> quite important.
> 
> Rank NameElo+- games score oppo. draws 
>1 mwNoDup-2000   2106   23   22   578   64%  20030% 
>2 mwRefbot-2000  2044   22   22   580   52%  20300% 
>3 refbot-20002000   22   22   581   43%  20500% 
>4 simple-20001858   41   44   199   25%  20500% 
> 
> 
> These are 9x9, 7.5 komi round robin format.  
> 
> simple - reference bot without check for already played moves.
> mwNoDup - does the test for already played moves.
> 
> 
> 
> 
> 
> 
> - Don



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


Re: [computer-go] enhanced test

2008-10-28 Thread Claus Reinke
>It's pretty tricky doing anything very clever without slowing things
>down a lot.   But I am highly interested because I want to build a
>stronger Ogo type of program for handheld devices.

Here's a suggestion: some mobile devices have volume-bound
communication tariffs (internet or text messaging), and Go protocols
are low-volume. So you could run a strong engine on your home
machine, and add a mobile front-end for it. If your tariff is limited
to small numbers of free/inclusive text messages, you might want to
pre-compute several possible moves on the server and send tree
fragments (rather than individual moves) to the mobile, for local
execution/selection. Of course, even if you can stay within the
cheap communications window, you might want to check which
of communication and computation is going to run down the
battery sooner..

Claus

Ps. The suggestion is free. But if any of the commercial authors likes
the idea enough to add it to their program, perhaps they could
provide me with access to a free copy of their software in return?-)



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


[computer-go] Another enhancement to AMAF

2008-10-28 Thread Michael Williams
The idea this time is to make use of your opponent's moves (as the proverb says).  I tried a few different weights for the opponent move and 0.1 was the best of 
the ones I tried.  The win rates for the version with opponent moves versus the version without opponent moves are as follows (both versions use the weighted 
AMAF recently discussed):


At  8 playouts, modified version wins 66.8% after 500 games.
At 64 playouts, modified version wins 56.6% after 500 games.

The advantage continues to decrease with more playouts.  So it seems to perform better for a small number of playouts but doesn't scale well.  I think this is 
ok for a tree search program because you only run a few simulations before the node gets expanded.  But I have not tried it in a tree search program yet.


Here is the code, so there is no ambiguity.


for (int mv = 0; mv < NNN; mv++)
{
credit[mv] = true; // initial assumption is that credit is awarded 
for any move
}
double weight = 1.0;
double weightDelta = 2.0 / (ctm - savctm + 1);
for (int i = savctm; i < ctm; i += 2)
{
int mv = mvs[i] & MASK;

if (credit[mv])
{
wins[mv] += weight * sc;
hits[mv] += weight;
credit[mv] = false;  // do not award credit for this move again
}

int opponentMove = mvs[i + 1] & MASK;
if (credit[opponentMove])
{
double opponentWeight = 0.1 * weight;
wins[opponentMove] -= opponentWeight * sc;
hits[opponentMove] += opponentWeight;
credit[opponentMove] = false;  // do not award credit for this 
move again
}

weight -= weightDelta;
}

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


Re: [computer-go] Another enhancement to AMAF

2008-10-28 Thread Mark Boon
Some interesting ideas Michael, keep them coming.

With regards to the code-snippet you posted, this kind of
'mark-to-prevent-double-work' type of construction is very common in
computer-Go. Looping over the complete array to set the initial value
is very expensive and totally avoidable.

The same functionality could be achieved by the following:

marker++; // This is an int initialised to zero somewhere in
the beginning of your program.

double weight = 1.0;
double weightDelta = 2.0 / (ctm - savctm + 1);
for (int i = savctm; i < ctm; i += 2)
{
int mv = mvs[i] & MASK;

if (credit[mv]!=marker) // Note that credit[] is now an
array of int instead of boolean
{
wins[mv] += weight * sc;
hits[mv] += weight;
credit[mv] = marker;  // do not award credit for this move
 again
}

This is slightly simplified, just so you get the idea. To make it 100%
safe you need to check if marker==0 after the increment and clear the
credit array. This is so common I use a little helper class that wraps
this fucntionality for me, called BoardMarker. The code would look as
follows:

   boardMarker.getNewMarker(); // BoardMarker is allocated
somewhere at the beginning of the program: BoardMarker boardMarker =
new BoardMarker();

double weight = 1.0;
double weightDelta = 2.0 / (ctm - savctm + 1);
for (int i = savctm; i < ctm; i += 2)
{
int mv = mvs[i] & MASK;

if (boardMarker.notSet(mv))
{
wins[mv] += weight * sc;
hits[mv] += weight;
boardMarker.set(mv);  // do not award credit for this move
 again
}

Disclaimer, my code is not like this (yet) so I didn't try this for
real. But it should work.

On Tue, Oct 28, 2008 at 8:43 PM, Michael Williams
<[EMAIL PROTECTED]> wrote:
>for (int mv = 0; mv < NNN; mv++)
>{
>credit[mv] = true; // initial assumption is that credit is
> awarded for any move
>}
>double weight = 1.0;
>double weightDelta = 2.0 / (ctm - savctm + 1);
>for (int i = savctm; i < ctm; i += 2)
>{
>int mv = mvs[i] & MASK;
>
>if (credit[mv])
>{
>wins[mv] += weight * sc;
>hits[mv] += weight;
>credit[mv] = false;  // do not award credit for this move
> again
>}
>
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] Another enhancement to AMAF

2008-10-28 Thread Don Dailey
The marker idea I call aging.   I call the variable age because it seems
to be more descriptive to me.  Each playout has a different age
associated with it.   The idea is used in persistent hash tables in
computer chess and I'm sure in other games too.

However, I seriously doubt this particular enhancement is even worth
doing in this context.   It may even be difficult to measure the speedup
it will give you.   I would be surprised if you get 1/2 percent.   

I don't initialize the array in a loop either, I use memset in C.   If I
did this is java I would use whatever java method is the equivalent
assuming it is optimized.  

If you want to save on initialization (which is pretty fast on modern
processors anyway) you can make this a bit array instead of an int
array.   Then it would initialize about 32 times faster but you would
probably spend a little more time referencing it.   

If you were to profile the code, I'll bet this would be one of the very
last sections of code you would bother optimizing.   Still, if you are a
speed freak you would probably at some point get around to doing it just
because you can!

- Don



On Tue, 2008-10-28 at 21:24 -0200, Mark Boon wrote:
> Some interesting ideas Michael, keep them coming.
> 
> With regards to the code-snippet you posted, this kind of
> 'mark-to-prevent-double-work' type of construction is very common in
> computer-Go. Looping over the complete array to set the initial value
> is very expensive and totally avoidable.
> 
> The same functionality could be achieved by the following:
> 
> marker++; // This is an int initialised to zero somewhere in
> the beginning of your program.
> 
> double weight = 1.0;
> double weightDelta = 2.0 / (ctm - savctm + 1);
> for (int i = savctm; i < ctm; i += 2)
> {
> int mv = mvs[i] & MASK;
> 
> if (credit[mv]!=marker) // Note that credit[] is now an
> array of int instead of boolean
> {
> wins[mv] += weight * sc;
> hits[mv] += weight;
> credit[mv] = marker;  // do not award credit for this move
>  again
> }
> 
> This is slightly simplified, just so you get the idea. To make it 100%
> safe you need to check if marker==0 after the increment and clear the
> credit array. This is so common I use a little helper class that wraps
> this fucntionality for me, called BoardMarker. The code would look as
> follows:
> 
>boardMarker.getNewMarker(); // BoardMarker is allocated
> somewhere at the beginning of the program: BoardMarker boardMarker =
> new BoardMarker();
> 
> double weight = 1.0;
> double weightDelta = 2.0 / (ctm - savctm + 1);
> for (int i = savctm; i < ctm; i += 2)
> {
> int mv = mvs[i] & MASK;
> 
> if (boardMarker.notSet(mv))
> {
> wins[mv] += weight * sc;
> hits[mv] += weight;
> boardMarker.set(mv);  // do not award credit for this move
>  again
> }
> 
> Disclaimer, my code is not like this (yet) so I didn't try this for
> real. But it should work.
> 
> On Tue, Oct 28, 2008 at 8:43 PM, Michael Williams
> <[EMAIL PROTECTED]> wrote:
> >for (int mv = 0; mv < NNN; mv++)
> >{
> >credit[mv] = true; // initial assumption is that credit is
> > awarded for any move
> >}
> >double weight = 1.0;
> >double weightDelta = 2.0 / (ctm - savctm + 1);
> >for (int i = savctm; i < ctm; i += 2)
> >{
> >int mv = mvs[i] & MASK;
> >
> >if (credit[mv])
> >{
> >wins[mv] += weight * sc;
> >hits[mv] += weight;
> >credit[mv] = false;  // do not award credit for this move
> > again
> >}
> >
> ___
> computer-go mailing list
> computer-go@computer-go.org
> http://www.computer-go.org/mailman/listinfo/computer-go/


signature.asc
Description: This is a digitally signed message part
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Re: [computer-go] The 2nd Comuputer Go UEC Cup

2008-10-28 Thread Hideki Kato
Seems Ito-sensen is very busy...

The committee prepares a very limited number of volunteer operators.  
See "4-3 Volunteer Operators" at 
http://jsb.cs.uec.ac.jp/~igo/2008/eng/sankayouken.html for detail.

Hideki

David Fotland: <[EMAIL PROTECTED]>:
>Do we have to show up in person, or can our programs be operated for us?
>
>David Fotland
>
>> -Original Message-
>> From: [EMAIL PROTECTED] [mailto:computer-go-
>> [EMAIL PROTECTED] On Behalf Of "TAKESHI ITO"
>> Sent: Monday, October 27, 2008 7:22 PM
>> To: computer-go@computer-go.org
>> Subject: [computer-go] The 2nd Comuputer Go UEC Cup
>> 
>> 
>> 
>> *
>>  CALL FOR PARTICIPATION
>> 
>>  The 2nd Computer Go UEC Cup
>>The University of Electro-Communication,
>>Tokyo, Japan, 13-14 December 2008
>>http://jsb.cs.uec.ac.jp/~igo/2008/eng/index.html
>> *
>> 
>> #Important Information
>>Championship: December 13-14, 2008
>>Entry's Deadline: November 28, 2008
>> 
>> #Schedule
>>December 13
>>  Preliminary Match
>>December 14
>>  Final Tournament
>>  Exhibition Match
>>  Explanation by professional Igo player
>> 
>> #Guest Comentator
>>Mr.Cheng Ming Huang(9th-grade), Ms.Kaori Aoba(4th-grade)
>> 
>> #Event
>>Exhibition match:  Ms.Kaori Aoba(4th-grade) VS Championship Program
>> (Handicap Game)
>> 
>> #Entry
>>Cost:free
>>Entry:accepting now
>>  http://jsb.cs.uec.ac.jp/~igo/2008/eng/mailform.html
>> 
>> #Venue
>>The University of Electro-communications
>>: Building W-9 3F AV hall(campus map:40)
>> 1-5-1 Chofugaoka, Chofu-shi, Tokyo 182-8585 Japan.
>> 
>> #Past
>>The 1st Comuputer Go UEC Cup
>>   http://jsb.cs.uec.ac.jp/~igo/2007/eng/index.html
>> 
>> #Host Organizer
>>Cognitive Science and Entertainment (E&C) Research Station,
>>The University of Electro-communications
>> 
>> #Support
>>Computer Go Forum
>> 
>> #Contact (Tournament committee)
>>[EMAIL PROTECTED]
>> 
>> 
>>   -
>>Takeshi Ito
>>   The University of Electro-Communications
>>   [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/
--
[EMAIL PROTECTED] (Kato)
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] The 2nd Comuputer Go UEC Cup

2008-10-28 Thread Hideki Kato
Seems Ito-sensei is very busy...

Remote computing is allowed.  See "1-4: Using a Remote Host via the 
Internet" at http://jsb.cs.uec.ac.jp/~igo/2008/eng/sankayouken.html 
("Requirements for participation" in the side menu) for detail.

Hideki

David Doshay: <[EMAIL PROTECTED]>:
>Will remote computing be allowed, or do we need to have our hardware  
>on site?
>
>Cheers,
>David
>
>
>
>On 27, Oct 2008, at 7:21 PM, TAKESHI ITO wrote:
>
>>
>>
>> *
>> CALL FOR PARTICIPATION
>>
>> The 2nd Computer Go UEC Cup
>>   The University of Electro-Communication,
>>   Tokyo, Japan, 13-14 December 2008
>>   http://jsb.cs.uec.ac.jp/~igo/2008/eng/index.html
>> *
>>
>> #Important Information
>>   Championship: December 13-14, 2008
>>   Entry's Deadline: November 28, 2008
>>
>> #Schedule
>>   December 13
>> Preliminary Match
>>   December 14
>> Final Tournament
>> Exhibition Match
>> Explanation by professional Igo player
>>
>> #Guest Comentator
>>   Mr.Cheng Ming Huang(9th-grade), Ms.Kaori Aoba(4th-grade)
>>
>> #Event
>>   Exhibition match:  Ms.Kaori Aoba(4th-grade) VS Championship  
>> Program (Handicap Game)
>>
>> #Entry
>>   Cost:free
>>   Entry:accepting now
>> http://jsb.cs.uec.ac.jp/~igo/2008/eng/mailform.html
>>
>> #Venue
>>   The University of Electro-communications
>>   : Building W-9 3F AV hall(campus map:40)
>>1-5-1 Chofugaoka, Chofu-shi, Tokyo 182-8585 Japan.
>>
>> #Past
>>   The 1st Comuputer Go UEC Cup
>>  http://jsb.cs.uec.ac.jp/~igo/2007/eng/index.html
>>
>> #Host Organizer
>>   Cognitive Science and Entertainment (E&C) Research Station,
>>   The University of Electro-communications
>>
>> #Support
>>   Computer Go Forum
>>
>> #Contact (Tournament committee)
>>   [EMAIL PROTECTED]
>>
>>
>>  -
>>   Takeshi Ito
>>  The University of Electro-Communications
>>  [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/
--
[EMAIL PROTECTED] (Kato)
___
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/


Re: [computer-go] The 2nd Comuputer Go UEC Cup

2008-10-28 Thread terry mcintyre
The protocol used is described as a "modified NNGS" protocol. The paragraph on 
remote computing seems to suggest that no direct connection between the 
Internet and the tournament is permitted; that an operator must manually 
transfer moves from the remote computer to a GUI which is connected to the 
local network. You'll want to tune your computer to leave a margin for that 
manual transfer of information.

If I understand the site correctly, remote computing is permitted when the 
computer is so huge that it cannot be brought to the venue. 

Excerpt follows:


Another way to join the UEC Cup without bringing in a computer 
is to use the Internet connection for game information exchange.
This is used when the computer of a competitor is so huge that
he/she cannot bring it to the venue. Because of security purpose, 
we do not allow to play a game on the Internet.
The Internet connection must only be used for 
communicating between a (possibly delegated) operator 
in the conference room and a remote computer.
The operator then must use some GUI program
to play a match. See 2-2 for using GUI program. Anyone who want to use a remote 
host must 
submit a written format to the UEC Cup committee
at registration, and receive a permission for remote play. 
2: Playing a Match
2-1 Playing through Network
Games are played over a TCP/IP network.
A game managing server will be set up to manage the game.
A programs should be able to play games over the network.
For the protocols, see Protocols. 
2-2 Playing by hand
If games over the network are impossible for a program,
the competitor can manually input moves through the GUI program
the UEC Cup office prepares.
In this case, the following conditions will be applied.
The operator must input a move designated by the program.
If he/she input different moves, the competitor loses the game immediately.
The time to input moves is also clocked. 



 Terry McIntyre <[EMAIL PROTECTED]>


-- Libertarians Do It With Consent!



- Original Message 
> From: Hideki Kato <[EMAIL PROTECTED]>
> To: computer-go 
> Cc: TAKESHI ITO <[EMAIL PROTECTED]>
> Sent: Tuesday, October 28, 2008 8:00:06 PM
> Subject: Re: [computer-go] The 2nd Comuputer Go UEC Cup
> 
> Seems Ito-sensei is very busy...
> 
> Remote computing is allowed.  See "1-4: Using a Remote Host via the 
> Internet" at http://jsb.cs.uec.ac.jp/~igo/2008/eng/sankayouken.html 
> ("Requirements for participation" in the side menu) for detail.
> 
> Hideki
> 
> David Doshay: <[EMAIL PROTECTED]>:
> >Will remote computing be allowed, or do we need to have our hardware  
> >on site?
> >
> >Cheers,
> >David
> >
> >
> >
> >On 27, Oct 2008, at 7:21 PM, TAKESHI ITO wrote:
> >
> >>
> >>
> >> *
> >> CALL FOR PARTICIPATION
> >>
> >> The 2nd Computer Go UEC Cup
> >>   The University of Electro-Communication,
> >>   Tokyo, Japan, 13-14 December 2008
> >>  http://jsb.cs.uec.ac.jp/~igo/2008/eng/index.html
> >> *
> >>
> >> #Important Information
> >>   Championship: December 13-14, 2008
> >>   Entry's Deadline: November 28, 2008
> >>
> >> #Schedule
> >>   December 13
> >> Preliminary Match
> >>   December 14
> >> Final Tournament
> >> Exhibition Match
> >> Explanation by professional Igo player
> >>
> >> #Guest Comentator
> >>   Mr.Cheng Ming Huang(9th-grade), Ms.Kaori Aoba(4th-grade)
> >>
> >> #Event
> >>   Exhibition match:  Ms.Kaori Aoba(4th-grade) VS Championship  
> >> Program (Handicap Game)
> >>
> >> #Entry
> >>   Cost:free
> >>   Entry:accepting now
> >>http://jsb.cs.uec.ac.jp/~igo/2008/eng/mailform.html
> >>
> >> #Venue
> >>   The University of Electro-communications
> >>   : Building W-9 3F AV hall(campus map:40)
> >>1-5-1 Chofugaoka, Chofu-shi, Tokyo 182-8585 Japan.
> >>
> >> #Past
> >>   The 1st Comuputer Go UEC Cup
> >>  http://jsb.cs.uec.ac.jp/~igo/2007/eng/index.html
> >>
> >> #Host Organizer
> >>   Cognitive Science and Entertainment (E&C) Research Station,
> >>   The University of Electro-communications
> >>
> >> #Support
> >>   Computer Go Forum
> >>
> >> #Contact (Tournament committee)
> >>  [EMAIL PROTECTED]
> >>
> >>
> >>  -
> >>   Takeshi Ito
> >>  The University of Electro-Communications
> >>  [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/
> --
> [EMAIL PROTECTED] (Kato)
> ___
> computer-go mailing list
> computer-go@computer-go.org
> http://www.computer-go.org/mailman/listinfo/computer-go/



  
_

Re: [computer-go] The 2nd Comuputer Go UEC Cup

2008-10-28 Thread David Doshay
This is wonderful news for SlugGo, but unfortunately my wife just  
booked a
vacation for us at the same time. I will have to wait until next time  
to be

able to attend.

I will plan to hold this time open next year and hope that you will be  
holding

the tournament again at that time.

Thank you,
David



On 28, Oct 2008, at 8:00 PM, Hideki Kato wrote:


Seems Ito-sensei is very busy...

Remote computing is allowed.  See "1-4: Using a Remote Host via the
Internet" at http://jsb.cs.uec.ac.jp/~igo/2008/eng/sankayouken.html
("Requirements for participation" in the side menu) for detail.

Hideki

David Doshay: <[EMAIL PROTECTED]>:

Will remote computing be allowed, or do we need to have our hardware
on site?

Cheers,
David



On 27, Oct 2008, at 7:21 PM, TAKESHI ITO wrote:




*
CALL FOR PARTICIPATION

The 2nd Computer Go UEC Cup
 The University of Electro-Communication,
 Tokyo, Japan, 13-14 December 2008
 http://jsb.cs.uec.ac.jp/~igo/2008/eng/index.html
*

#Important Information
 Championship: December 13-14, 2008
 Entry's Deadline: November 28, 2008

#Schedule
 December 13
   Preliminary Match
 December 14
   Final Tournament
   Exhibition Match
   Explanation by professional Igo player

#Guest Comentator
 Mr.Cheng Ming Huang(9th-grade), Ms.Kaori Aoba(4th-grade)

#Event
 Exhibition match:  Ms.Kaori Aoba(4th-grade) VS Championship
Program (Handicap Game)

#Entry
 Cost:free
 Entry:accepting now
   http://jsb.cs.uec.ac.jp/~igo/2008/eng/mailform.html

#Venue
 The University of Electro-communications
 : Building W-9 3F AV hall(campus map:40)
  1-5-1 Chofugaoka, Chofu-shi, Tokyo 182-8585 Japan.

#Past
 The 1st Comuputer Go UEC Cup
http://jsb.cs.uec.ac.jp/~igo/2007/eng/index.html

#Host Organizer
 Cognitive Science and Entertainment (E&C) Research Station,
 The University of Electro-communications

#Support
 Computer Go Forum

#Contact (Tournament committee)
 [EMAIL PROTECTED]


-
 Takeshi Ito
The University of Electro-Communications
[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/

--
[EMAIL PROTECTED] (Kato)
___
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 enhancement to AMAF

2008-10-28 Thread Mark Boon


On 29-okt-08, at 00:13, Don Dailey wrote:

The marker idea I call aging.   I call the variable age because it  
seems

to be more descriptive to me.  Each playout has a different age
associated with it.   The idea is used in persistent hash tables in
computer chess and I'm sure in other games too.



Yes, it could be seen as a form of aging. I use it for a whole lot of  
different things however, including things like not double-counting  
liberties, or making sure I process points only once in an area of  
unknown size beforehand.



However, I seriously doubt this particular enhancement is even worth
doing in this context.   It may even be difficult to measure the  
speedup

it will give you.   I would be surprised if you get 1/2 percent.

I don't initialize the array in a loop either, I use memset in C.
If I

did this is java I would use whatever java method is the equivalent
assuming it is optimized.

If you want to save on initialization (which is pretty fast on modern
processors anyway) you can make this a bit array instead of an int
array.   Then it would initialize about 32 times faster but you would
probably spend a little more time referencing it.

If you were to profile the code, I'll bet this would be one of the  
very
last sections of code you would bother optimizing.   Still, if you  
are a
speed freak you would probably at some point get around to doing it  
just

because you can!



This could very well be true. But old habits die hard! ;-) If I can  
save initialization of an array the size of a board within a loop I  
always do.


And since I have the little class ready to use for cases like this it  
becomes a kind of reflex. It doesn't cost anything and using the  
class actually makes me less prone to making errors.


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