It's funny stéphane, when i first read Makesh's message i also thought it was a
school assignment. If it's really a school assignment my message will be "do
your homework" ;)
Asking for source code (note that peter tax is source code) is, for me, a funny
question ... ;) Do it yourself and you'll learn a lot.
David.
--- In abalone_prog@yahoogroups.com, Stéphane Nicolet <cassio@...> wrote:
>
>
> Le 6 juin 09 à 08:07, Mahesh Korada a écrit :
>
> >
> >
> > Hi,
> >
> > I have implemented some techniques in my abalone programming for
> > artificial intelligence.
> > But it was not working properly,so please suggest me and if possible
> > please send me source code for artificial intelligence.
> >
> > Thanks,
> > Mahesh.
>
>
>
> Is it for a school assignment ? :-)
>
> Stéphane
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> ... /// ... \\\ ...
>
Le 6 juin 09 à 08:07, Mahesh Korada a écrit :
>
>
> Hi,
>
> I have implemented some techniques in my abalone programming for
> artificial intelligence.
> But it was not working properly,so please suggest me and if possible
> please send me source code for artificial intelligence.
>
> Thanks,
> Mahesh.
Is it for a school assignment ? :-)
Stéphane
... /// ... \\\ ...
this will speed up easily your search and allow you to compete with some other progs.
For Peer, glad to hear from you, any news of Nacre ?
For MLA i'm still working on THAT thing :
- generation of all possible positions from the start of belgian daisy after 3 moves from each side in a database (i've finished 5 half moves) so that i may evaluate all positions with MLA and enhance the opening book idea. after 5 half moves, 2.5 million positions exist.
- self learning with TD (leaf)
- using some program from NASA i have found to try to find out position categories/classes with Bayes mathematics ... i'm expecting to use a random sample of belgian daisy positions from my game server database at http://moggames. net
Mahesh you can have a look at this server, you can experience a light version my engine up to level 4). You can also download MLA from http://mogwai. lunarpages. com/lovely (download version 2.5.5 and not the 3.0 preview...). This should give you a benchmark / comparison for your program.
David.
--- In abalone_prog@ yahoogroups. com, Mahesh Korada <maheshk218@ ...> wrote:
>
>
> Hi Peer,
> so nice of you for sending some links.i'll go through the code if think i need some more help then i get back to you.anyways thanks a lot..........
>
> Have a nice time..
> Thanks,Mahesh.
>
> --- On Thu, 4/6/09, Peer Sommerlund <peso@...> wrote:
>
> From: Peer Sommerlund <peso@...>
> Subject: [abalone_prog] Re: Algorithm for abalone board game
> To: abalone_prog@ yahoogroups. com
> Date: Thursday, 4 June, 2009, 6:30 PM
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> --- In abalone_prog@ yahoogroups. com, Mahesh Korada <maheshk218@ ...> wrote:
>
> >
>
> > Hi,
>
> >
>
> > � � I am implementing� code� for abalone board game.I have implemented the multiplayer logic for that. but am not able implement computer logic (computer vs player), it needs algorithm. So can You please send me the source code for computer logic in any language, if not possible can you please send me algorithm for that. it was very very helpful to me if you try to send me source code.
>
> >
>
> > Thanku,
>
> > Mahesh..
>
> >
>
>
>
> I would recommend Peter Tax Abalone, it is still available online.
>
> http://cassio. free.fr/abalone/
>
>
>
> If you want to understand the logic, start with understanding how Chess programs work. The alpha-beta search algorithm is the foundation for Chess programs as well as Abalone programs.
>
>
>
> One place to start is
>
> http://www.gamedev. net/reference/ programming/ features/ chess1/
>
>
>
> Or simply
>
> http://www.google. dk/search? q=chess+programm ing
>
>
>
> Regards,
>
> Peer
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> Bollywood news, movie reviews, film trailers and more! Go to http://in.movies. yahoo.com/
>
If you succeed in implementing alphabeta (evaluation function + tree search +
legal move generation + alphabeta cuts).
I would recommend you to go to http://chessprogramming.wikispaces.com/ where a
lot of info can lead you to great results.
go for the basics after alphabeta :
- null move heuristic
- history heuristic
- enhanced transposition cut offs
this will speed up easily your search and allow you to compete with some other
progs.
For Peer, glad to hear from you, any news of Nacre ?
For MLA i'm still working on THAT thing :
- generation of all possible positions from the start of belgian daisy after 3
moves from each side in a database (i've finished 5 half moves) so that i may
evaluate all positions with MLA and enhance the opening book idea. after 5 half
moves, 2.5 million positions exist.
- self learning with TD (leaf)
- using some program from NASA i have found to try to find out position
categories/classes with Bayes mathematics ... i'm expecting to use a random
sample of belgian daisy positions from my game server database at
http://moggames.net
Mahesh you can have a look at this server, you can experience a light version my
engine up to level 4). You can also download MLA from
http://mogwai.lunarpages.com/lovely (download version 2.5.5 and not the 3.0
preview...). This should give you a benchmark / comparison for your program.
David.
--- In abalone_prog@yahoogroups.com, Mahesh Korada <maheshk218@...> wrote:
>
>
> Hi Peer,
> so nice of you for sending some links.i'll go through the code if think i need
some more help then i get back to you.anyways thanks a lot.........
>
> Have a nice time..
> Thanks,Mahesh.
>
> --- On Thu, 4/6/09, Peer Sommerlund <peso@...> wrote:
>
> From: Peer Sommerlund <peso@...>
> Subject: [abalone_prog] Re: Algorithm for abalone board game
> To: abalone_prog@yahoogroups.com
> Date: Thursday, 4 June, 2009, 6:30 PM
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> --- In abalone_prog@ yahoogroups. com, Mahesh Korada <maheshk218@ ...>
wrote:
>
> >
>
> > Hi,
>
> >
>
> > � � I am implementing� code� for abalone board game.I have
implemented the multiplayer logic for that. but am not able implement computer
logic (computer vs player), it needs algorithm. So can You please send me the
source code for computer logic in any language, if not possible can you please
send me algorithm for that. it was very very helpful to me if you try to send me
source code.
>
> >
>
> > Thanku,
>
> > Mahesh.
>
> >
>
>
>
> I would recommend Peter Tax Abalone, it is still available online.
>
> http://cassio. free.fr/abalone/
>
>
>
> If you want to understand the logic, start with understanding how Chess
programs work. The alpha-beta search algorithm is the foundation for Chess
programs as well as Abalone programs.
>
>
>
> One place to start is
>
> http://www.gamedev. net/reference/ programming/ features/ chess1/
>
>
>
> Or simply
>
> http://www.google. dk/search? q=chess+programm ing
>
>
>
> Regards,
>
> Peer
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> Bollywood news, movie reviews, film trailers and more! Go to
http://in.movies.yahoo.com/
>
i'll go through the code if think i need some more help then i get back to you.
anyways thanks a lot.........
Have a nice time..
Thanks,
Mahesh.
--- On Thu, 4/6/09, Peer Sommerlund <peso@...> wrote:
From: Peer Sommerlund <peso@...> Subject: [abalone_prog] Re: Algorithm for abalone board game To: abalone_prog@yahoogroups.com Date: Thursday, 4 June, 2009, 6:30 PM
--- In abalone_prog@ yahoogroups. com, Mahesh Korada <maheshk218@ ...> wrote:
>
> Hi,
>
> � � I am implementing� code� for abalone board game.I have implemented the multiplayer logic for that. but am not able implement computer logic (computer vs player), it needs algorithm. So can You please send me the source code for computer logic in any language, if not possible can you please send me algorithm for that. it was very very helpful to me if you try to send me source code.
>
> Thanku,
> Mahesh.
>
If you want to understand the logic, start with understanding how Chess programs work. The alpha-beta search algorithm is the foundation for Chess programs as well as Abalone programs.
--- In abalone_prog@yahoogroups.com, Mahesh Korada <maheshk218@...> wrote:
>
> Hi,
>
> � � I am implementing� code� for abalone board game.I have implemented
the multiplayer logic for that. but am not able implement computer logic
(computer vs player), it needs algorithm. So can You please send me the source
code for computer logic in any language, if not possible can you please send me
algorithm for that. it was very very helpful to me if you try to send me source
code.
>
> Thanku,
> Mahesh.
>
I would recommend Peter Tax Abalone, it is still available online.
http://cassio.free.fr/abalone/
If you want to understand the logic, start with understanding how Chess programs
work. The alpha-beta search algorithm is the foundation for Chess programs as
well as Abalone programs.
One place to start is
http://www.gamedev.net/reference/programming/features/chess1/
Or simply
http://www.google.dk/search?q=chess+programming
Regards,
Peer
I am implementing code for abalone board game.I have implemented the multiplayer logic for that. but am not able implement computer logic (computer vs player), it needs algorithm. So can You please send me the source code for computer logic in any language, if not possible can you please send me algorithm for that. it was very very helpful to me if you try to send me source code.
Thanku, Mahesh.
Explore and discover exciting holidays and getaways with Yahoo! India Travel Click here!
If you are planning to write your first abalone program, you might
want to use abmove. It is a small library with a board representation,
and code for saving and loading games.
The code is very much alpha, and it has collected dust on my disk for
over a year now - so don't expect it to reach version 1.0 any time soon.
You can find it at
https://sourceforge.net/project/showfiles.php?group_id=83427
Regards,
Peer
MLA 3.0 preview 1 is released (i.e. not the stable version yet), you
can download it at:
http://mogwai.lunarpages.com/lovely
It includes the current status of my ongoing work on openings in the
abalone game. The included opening book includes the top ten moves
calculated by MLA at depth=10 for each of the two first moves from
each side.
You can have this opening book used by the MLA engine by ticking the
appropriate box in the preferences (be careful if you pick the 3.0.2
engine version it will crash with the opening book ...).
If the opening book is used, the engine picks its moves from the
opening book based on an evaluation "window" (i.e. moves no degrading
the "best line" too much).
If you want to include this opening book in your engine ask me for
the file and the file format description (pretty straight forward).
Enjoy!
Mogwai.
--- In abalone_prog@yahoogroups.com, david.malek@... wrote:
>
> I looked at the LaTeX formulas, the problem is that i'm not using
the manhattan
> distance as such. i.e. based on independant x and y when calculating.
>
> I'm using arithmetic distance defined as follows
>
> d(xi,yi,xc,yc) =
>
> if (xi-xc)(yi-yc)>0
> return max (xi-xc,yi-yc)
> else
> return abs(xi-xc) + abs(yi-yc)
Your formula for distance is in fact the Manhattan distance. Charles
Fu had it figured out in 1994. Read this link:
http://www-cs-students.stanford.edu/~amitp/Articles/Hexagon2.html
At the bottom it proves that
1/2 (|x1 - x2| + |y1 - y2| + |z1 - z2|)
=
max(|x1 - x2|, |y1 - y2|, |z1 - z2|)
And the latter is the same as your formula. Note that z = x-y since
your coordinate system has 120 degrees between x and y axes. In this
case z is 60 degrees from both x and y axes.
>
> > > In MLA, in line move generation is performed as follows
> > >> Why add? Why not simply overwrite? It ought to be faster.
> > True. But adding makes undo a substraction of the same numbers.
Good point, I didn't think of that.
> > > With respect to bitboards, I have not found a convincing case
for them.
> > oh yes, finding patterns and handling rotation is documented by
the author of
> > crafty too. your C is interesting. But trying to use the ONLY
bitboards for
> > center of mass computation, move generation, domove/undomove might
be hard.
> > Hmm
> > this would even impact my search ... hmm for MLA 4.0 lol.
I don't think it would be faster than a hybrid approach. I think it is
faster to use a byteboard to find the movenumber, then use bitboards
for the stuff that they do better (pattern matching, for example). It
is very fast to update a bitboard, once you have a movenumber.
Regards,
Peer
I looked at the LaTeX formulas, the problem is that i'm not using the manhattan
distance as such. i.e. based on independant x and y when calculating.
I'm using arithmetic distance defined as follows
d(xi,yi,xc,yc) =
if (xi-xc)(yi-yc)>0
return max (xi-xc,yi-yc)
else
return abs(xi-xc) + abs(yi-yc)
based on a "c" point, i need to sum for all (xi,yi)
additionnaly, i'm computing integers only, so floor(x) has to be ...
reconsidered.
this doesnt prevent me from finding a solution :) the sum of all d(xi,yi,xc,yc)
can be written s the sum of sums depending on the cases. but it looks
complicated.
except for the calculation of c, i just disclosed the center of mass
calculations of MLA lol.
david
Selon david.malek@...:
>
> > In MLA, in line move generation is performed as follows
> >> Why add? Why not simply overwrite? It ought to be faster.
> True. But adding makes undo a substraction of the same numbers. Also it
> allowed
> me to define ranges for the move number, due to unchanged fields (0 values
> can
> be added to anything). It's probably the reason why it's still performed this
> way in MLA lol.
>
> > But i'm also searching for a faster move generation
> > I have previously posted a paperon how to do incremental computation of
> compactness.
> I found this paper long time ago lol, maybe i needed to understand it (gosh i
> dont know latex lol i'm a windows guy). I finally converted it to PDF, lol,
> you
> are right again. I'll most probably enhance the speed significantly
> (evaluation
> is about 30% of the time i use).
>
> > With respect to bitboards, I have not found a convincing case for them.
> oh yes, finding patterns and handling rotation is documented by the author of
> crafty too. your C is interesting. But trying to use the ONLY bitboards for
> center of mass computation, move generation, domove/undomove might be hard.
> Hmm
> this would even impact my search ... hmm for MLA 4.0 lol.
>
> >Seriously, though - I would really love to hear more about useful patterns.
> Oh yeah, i'll keep you posted, once i've understood why MLA 3.0 wins lol. As
> it
> questions connectivity, connectivity means radius-1 patterns.
>
> So well, i'm all set, i have good leads to increase speed, and probably good
> leads to increase strength :)
>
> What else would i need? Hmm maybe a good beer ;)
>
> David.
>
>
> In MLA, in line move generation is performed as follows
>> Why add? Why not simply overwrite? It ought to be faster.
True. But adding makes undo a substraction of the same numbers. Also it allowed
me to define ranges for the move number, due to unchanged fields (0 values can
be added to anything). It's probably the reason why it's still performed this
way in MLA lol.
> But i'm also searching for a faster move generation
> I have previously posted a paperon how to do incremental computation of
compactness.
I found this paper long time ago lol, maybe i needed to understand it (gosh i
dont know latex lol i'm a windows guy). I finally converted it to PDF, lol, you
are right again. I'll most probably enhance the speed significantly (evaluation
is about 30% of the time i use).
> With respect to bitboards, I have not found a convincing case for them.
oh yes, finding patterns and handling rotation is documented by the author of
crafty too. your C is interesting. But trying to use the ONLY bitboards for
center of mass computation, move generation, domove/undomove might be hard. Hmm
this would even impact my search ... hmm for MLA 4.0 lol.
>Seriously, though - I would really love to hear more about useful patterns.
Oh yeah, i'll keep you posted, once i've understood why MLA 3.0 wins lol. As it
questions connectivity, connectivity means radius-1 patterns.
So well, i'm all set, i have good leads to increase speed, and probably good
leads to increase strength :)
What else would i need? Hmm maybe a good beer ;)
David.
Thanx for all this :)
I still dont understand why my new version of the engine beats the previous one
lol. Each time I slightly change my amendments to the engine, it doesnt win
anymore. Therefore, conceptually, no conclusion so far.
If the board dispays WBWW, searching for WBW , is similar to searching for a
.BWW sumito but earlier in the search tree. It's probably a sumito threat.
By considering this type of sumito threat, i'm probably influencing the horizon
effect too :)
Therefore i'm currently lost ;) We'll wait for the next episode :)
Searching for WBW or WBBW patterns is very similar to performing legal move
generation. I fully implemented legal moves generation with bitboards 6 months
ago (with the same programming language), and it didnt prove to be faster than
the current move generation in MLA (so i gave it up, i might try to use it in
the near future but only if i can use assembly code and prove to be faster).
In MLA, in line move generation is performed as follows :
If the board shows in a given direction something like
BBBWWE (where E means Empty)
let's assume that :
0 means white
1 means black
2 means empty
3 means outside of the board
in BBBWWE, let's ignore the first character, BBWWE can be written
1 1 0 0 2
MLA computes a number (called the move number in my source code) as follows :
(((1 + 4 x 1) x 4 + 0) x 4 + 0) x 4 + 2 = 322
I have an array telling me than 322 is a legal move for black.
To compute the resulting board, i.e. EBBBWW.
322 (for black) is also associated the list of board changes
vector "0 0 1 0 -2":
1 1 0 0 2
added to
0 0 1 0 -2
gives
1 1 1 0 0
I'm pushing a black marble therefore the first position is empty. we get :
2 1 1 1 0 0 i.e. EBBBWW
Note that using bitboards means using XORs and logicial shift to do this (i.e.
recycling as you called it in the previous message). But using bitboards is
slower because i need to build the long integers for each row in each direction
first.
Bitboards would be efficient if i had a way to record a move (i.e. perform it on
the board) using a limited number of XORs and shifts. I havent investigated it
seriously. I should look into chess programming for move recording when using
bitboards ...
But it's true that i havent pushed it to the limit of using only one binary
number for both move generation and move recording and evaluation function. This
is the probably the path i need to follow to enhance "nodes per sec"
drastically.
For each "move number" MLA also knows how many marbles are ejected, pushed,
moved.
But i'm also searching for a faster move generation and a faster center of mass
computation (updating the center of mass of each side after is move is already
performad, but the evaluation function calculates a reference point from the two
centers of mass and then re-calculates the distance of each stone to this
reference point, and it's time consuming lol).
I think i need to look into pattern matching research related to the the "game
of go", I'm sure someone found fast algorithms for pattern matching lol.
I'll also go on working on the amended engine to understand why MLA 3.0 beats
2.5 lol.
plenty of ideas though ;)
David.
Selon Peer Sommerlund <peer.sommerlund@...>:
> With respect to patterns, I have no better idea than a sliding window:
>
> Think of an ordinary 2D grid (easy to translate to hexagonal board)
>
> . . . a
> . . . a
> . . . a
>
> This pattern is a 3x3 pattern. When you slide to the right, you must
> match most of the positions again, only shifted. The only new fields are
> the "a" column.
> If you compute the examined pieces to an integer, you can shift the
> integer and recycle the old fields. For example:
> value = 0;
> for (int i=0; i<9; i++) {
> value <<= 2; // or *3 if you want to save a few bits
> value += field[i];
> }
>
> incremental:
> value = old_value << 6;
> for (int i=6; i<9; i++) {
> value <<= 2; // or *3 if you want to save a few bits
> value += field[i];
> }
>
> Do a table lookup to find out if the pattern is interesting or not. (or
> simply what value you have assigned to it)
>
> A 7-field circle (radius 1) can hold 3**7 = 2187 < 2**12 values, with 2
> bits pr field: 4**7 = 2**14
> A radius 2 circle can hold 3**19 = 1G162 < 2**31 values. 2 bits: 4**19 =
> 2**48
>
> Radius 1 you can do a direct lookup to see if it was a match, and even
> lookup the shifted value.
> Radius 2 you have to work the other way, using partial matches - or
> split the pattern into 2 or 3 parts where you can perform lookup on each
> of them. If the number of patterns you want to look for is small, this
> can work.
>
> Another way (that also makes it easier to build large patterns) is to
> first do a horizontal translation, then a vertical. You translate every
> series of x fields into a single number representing the pattern of size x
>
> Lets consider the first row (it has 5 fields)
> ABCDE
>
> If you are looking for patterns of size 3, you would compute 3 values:
> ABC, BCD, CDE
> You can easily compute patterns of size 2 at the same time. Do this
> again on rows
> ABC BCD
> ABCD BCDE etc
> BCD CDE
>
> If you want to use bitboars you can work the other way: For each
> pattern, test it against all possible locations on the board: A complete
> board takes less than 128 bits (2*61 = 122 bits).
>
> The test is simple
> if ((board & shifted_mask) ^ shifted_pattern == 0)
> // we have a match
>
> .. fast, but the time is O(n) with number of patterns
Hi Peer,
In fact, MLA is already using sumitos (i.e. in line domination).
In this MLA 3.0 test I replaced connectivity (i.e. counting the number of same
colour neighbors around each marble + some undisclosed formula lol) by saying :
- marbles with less than two neighbors are bad (was required after the first
tests)
- the following patterns are good for the side to move (let's say White) :
- B W B (one stone in the middle of others) except B W B B (it's a sumito)
- B W W B (two stones in the middle of others)
Combined with the abapro-like center of mass calculations it makes the 3.0
engine insist on rushing to the center (as shown by the two games you can
replay with my plash player at http://mogwai.lunparges.com/lovely) during the
opening (more precisely it's rushing to "between the two daisies of the
opponent").
So the opening is enhanced, but connectivity is partly lost, so i need to
reintroduce it in the engine, so that I may have two terms for which i can
adjust the weight for testing :
- connectivity in itself (without the line patterns)
- line patterns
If I succeed in getting the engine to rush, and once the rush is "finished",
return to MLA 2.5 way of doing things, then it might make sense to go to larger
patterns.
. .
. . .
. .
Maybe you know how to recognise patterns of the following size :
. . .
. . . .
. . . . .
. . . .
. . .
Dont tell me i need to find a way to do hexagonal bitboards? hmm no ! arg ;)
lol
david
By the way, the max number of moves might be 148, but in fact my formula was
wrong (but not MLA), the max calculation is :
- 6 directions for each of the 14 stones : 6x14
- two directions to go through a line, choice to move two of three stones and 2
directions for move => 8 X 14
i.e. 196 moves. but how to find a more than 148
Selon Peer Sommerlund <peso@...>:
> --- In abalone_prog@yahoogroups.com, "mogwaifrance" <david.malek@...>
> wrote:
> >
> > Yeah! MLA 3.0 just killed MLA 2.5.5 finally i get something new.
>
> Congratulations! I cannot wait to see your latest creation.
>
> Can you reveal any thoughts behind the line-patterns? Nacre also
> examines line-patterns, but you probably found some even better way to
> utilize them.
>
> The Nacre patterns test for domination. Think of an 1D abalone game.
>
> Regards,
> Peer
>
>
>
--- In abalone_prog@yahoogroups.com, "mogwaifrance" <david.malek@...>
wrote:
>
> Yeah! MLA 3.0 just killed MLA 2.5.5 finally i get something new.
Congratulations! I cannot wait to see your latest creation.
Can you reveal any thoughts behind the line-patterns? Nacre also
examines line-patterns, but you probably found some even better way to
utilize them.
The Nacre patterns test for domination. Think of an 1D abalone game.
Regards,
Peer
Yeah! MLA 3.0 just killed MLA 2.5.5 finally i get something new.
I'm not satisfied by the end of the two games, but yes i found
something new for the opening :)
You can replay the games between MLA 2.5 and MLA 3.0 at
http://www.mogwai.lunarpages.com/lovely/
Note the 3.0 is not yet ready for download, i need to fix the end of
game issue
I introduced a new term in the evaluation function, it relates to
patterns found on each line of the board. And it seems to work
amazingly, but wrong weight at some stage lol. Or I'll change the way
i define the opening phase, so that it may last longer and then i
return to the MLA 2.5.5 evaluation that proved to be strong for
middle game. Finding an edge in the opening even with white is
clearly something i'm aiming at :)
Before releasing MLA 3.0 to the general public, it'll go through the
usual "against humans" testing for tuning lol.
David.
Amsterdam 2007
From 2007-06-11 to 2007-06-18, Science Park Amsterdam, Amsterdam, The
Netherlands.
The 15th World Computer-Chess Championship and the 12th Computer
Olympiad will be held in Amsterdam, the Netherlands in conjunction
with the Computer Games Workshop 2007 (CGW2007).
IBM, SARA Computing and Networking Services and NCF (Foundation of
National Computing Facilities) are enabling the organization of the
Computer Games Workshop 2007 (CGW2007) (15-17 June 2007), the 15th
World Computer-Chess Championship (WCCC) (11-18 June) and the 12th
Computer Olympiad (CO) (11-18 June) to be held in Amsterdam, The
Netherlands. Location: CGW2007 (The Turing hall - Z011), WCCC
(Eulerzaal – Z009) and Computer Olympiad (Newtonzaal – Z010) , Science
Park Amsterdam, Kruislaan 413, 1098 SJ Amsterdam.
The start of the event will be in conjunction with the official
inauguration of the new Dutch National Supercomputer, which will take
place on June 13. The mayor of Amsterdam, Dr. Job Cohen, will attend
the starting meeting.
Below we mention 28 different games for which a program can be
submitted to the Olympiad.
Abalone
Amazons
Arimaa
Backgammon
Bao
Bridge
Chinese Chess
8x8 Checkers
Clobber
Computational Pool
Connect6
Diplomacy
Dominoes
Dots and Boxes
10x10 Draughts
Gipf
Go
9x9 Go
Hex
Kriegspiel
Lines of Action
6x7 OCTI
9x9 OCTI
Othello
Poker
Renju
Scrabble
Shogi
The game of Renju, claimed to be solved, is still welcome since we
have not seen a fully-operational program on internet that plays
perfectly. Moreover, we are willing to host more games, such as Ataxx,
Dvonn, Mediocrity, Onyx, Tamsk, TwixT and Zèrtz but we do not know of
the existence of adequately playing programs. We are awaiting
suggestions and proposals of programmers before we include them in the
official list given above.
For each game a tournament will take place provided that at least two
programs enter the tournament for that particular game. Gold, Silver
and Bronze medals will be awarded to the leading programs in each
tournament.
The Tournament Director of the WCCC and Computer Olympiad will be:
H.J. van den Herik.
The rules of the WCCC and Computer Olympiad will be soon published.
The entry fees for the WCCC are as follows:
Amateur: € 25
Semi-professional: € 250
Professional: € 500
The entry fees for the other tournaments are as follows:
Amateur: € 25
Semi-professional: € 100
Professional: € 250
A participant is expected to be ICGA member (€ 40).
Deadline early registration: May 21, 2007. Registration after May 21,
2007 will double the entry fee.
"Amateur": programmers who have no commercial interest in their
program, and are not professional game programmers. Applications for
amateur classification must supply information to justify their claim.
"Semi-professional": Any program submitted by an employee or associate
from a games-programming company. The program's name must not be
derived from or similar to a commercial product.
"Professional": A program whose name is the same as or derived from a
commercial product.
http://amsterdam2007.icga.org/
i'm a little confused about your last message, are you intending to :
- replace my ajax client by nacre and call my web services ?
- create your own web service implementing nacre's engine, this web service
being called by my own web services?
this doesnt seem to be very clear to me ;)
my preference goes to the integration of your engine as a web service/web page
called by my server ... this would :
- make nacre available to everyone even if you are not logged in ...
- would automatically archive the games, provide replay functions and so on ...
- avoid me the publication of a calling spec for my web services .... this spec
would include the authentication process i use and therefore expose the
security of my server to cheaters and hackers :)
if you are ready to write a web service (hosted ... somewhere) or provide some
simple web pages (as described in my previous message) i'll do it for MLA first
and then provide you with a spec of the engine calls.
i think this thread should become private :
david
Selon Peer Sommerlund <peer.d.sommerlund@...>:
> --- In abalone_prog@yahoogroups.com, david.malek@... wrote:
> >
> > Selon Peer Sommerlund <peer.d.sommerlund@...>:
> >
> > > This is sort of what I had in mind. However, your AJAX must send the
> > > move to the server somehow. I figured that I could use the same
> > > interface. No need for me to build a web service.
> > >
> > Yeah, it sends the moves by calling a web service :) [...]
> >
> > My idea is definitely not to have nacre running on your PC with some
> interface
> > between my AJAX (on the client) and the nacre engine like you
> usually do with
> > NetAbalone, i dont want to call some TCP/IP socket protocol (eg
> abnet). This
> > would be a lot more complex than simply calling an URL (we are in
> 2006 lol, no
> > more 68000 assembly please).
>
> LOL, I don't know which is worst: JavaScript or 68000 assembly ;-)
> this just shows how old I am, I guess.
>
> But I agree, writing and calling a web service using IIS, Visual
> Studio and C# is a breeze. I'll probably use Code::Blocks, C++ and
> gSOAP or Axis, though.
>
> So, after a quick dive into your JavaScript, I guess you want me to
> use the web service at http://moggames.net/abalone/MiGs.asmx, right?
>
> Even though the operations have nice names like CreateUser and
> CreateSession, I still need to figure out how to use them. I could
> read through all JavaScript but I would appreciate a few lines on how
> to use it. This would save a lot of time :-) Do you have time to write
> a few lines on the use of the web service?
>
>
>
>
>
--- In abalone_prog@yahoogroups.com, david.malek@... wrote:
>
> Selon Peer Sommerlund <peer.d.sommerlund@...>:
>
> > This is sort of what I had in mind. However, your AJAX must send the
> > move to the server somehow. I figured that I could use the same
> > interface. No need for me to build a web service.
> >
> Yeah, it sends the moves by calling a web service :) [...]
>
> My idea is definitely not to have nacre running on your PC with some
interface
> between my AJAX (on the client) and the nacre engine like you
usually do with
> NetAbalone, i dont want to call some TCP/IP socket protocol (eg
abnet). This
> would be a lot more complex than simply calling an URL (we are in
2006 lol, no
> more 68000 assembly please).
LOL, I don't know which is worst: JavaScript or 68000 assembly ;-)
this just shows how old I am, I guess.
But I agree, writing and calling a web service using IIS, Visual
Studio and C# is a breeze. I'll probably use Code::Blocks, C++ and
gSOAP or Axis, though.
So, after a quick dive into your JavaScript, I guess you want me to
use the web service at http://moggames.net/abalone/MiGs.asmx, right?
Even though the operations have nice names like CreateUser and
CreateSession, I still need to figure out how to use them. I could
read through all JavaScript but I would appreciate a few lines on how
to use it. This would save a lot of time :-) Do you have time to write
a few lines on the use of the web service?
Selon Peer Sommerlund <peer.d.sommerlund@...>:
> This is sort of what I had in mind. However, your AJAX must send the
> move to the server somehow. I figured that I could use the same
> interface. No need for me to build a web service.
>
Yeah, it sends the moves by calling a web service :) i.e in our case it's
calling an URL with specific parameters ... like
http://nacre.com/ilovepeer/getmove.asp?move=a1b1
and your web server returns an XML flow giving the answer from your engine.
all you would need is a web server, and a web page that takes the parameters
from the query string in the URL, and returns an XML response. The query string
can be a little more complicated (i'm using a microsoft like web services), but
not that much :) Calling any process on your web server with the protocol you
love is fairly easy. even PHP under Unix and Apache...
btw building a web service is also pretty easy lol.
My idea is definitely not to have nacre running on your PC with some interface
between my AJAX (on the client) and the nacre engine like you usually do with
NetAbalone, i dont want to call some TCP/IP socket protocol (eg abnet). This
would be a lot more complex than simply calling an URL (we are in 2006 lol, no
more 68000 assembly please).
I also want this to comply with both firefox and IE and be pure javascript on
the client (no java, no activeX, no download, no security issue, no popup
blocker and so on). i.e. comply with the tech rules i've set for my server
since oct/sept this year.
david
--- In abalone_prog@yahoogroups.com, "mogwaifrance" <david.malek@...>
wrote:
> - making MLA (or nacre) as a permanent online player needs you to
> convert your engine to a .NET assembly.
This is only if the player must run on the same host as the web-server.
> An
> alternative is to define the spec of an engine web service you would
> have to comply with. In such a case, you will need to host the
> engine on some web site and expose the required web service ... this
> would be OS independant ...
This is sort of what I had in mind. However, your AJAX must send the
move to the server somehow. I figured that I could use the same
interface. No need for me to build a web service.
I'm working on the ranking system and the tournament system at the
moment ...
A few things from your post :
- making MLA (or nacre) as a permanent online player needs you to
convert your engine to a .NET assembly. This assembly needs to
comply with a specific interface. At the moment, the interface is
too complex to be used by someone else than me, because it includes
benchmarking, returning the 3 top lines and a conversion between the
move data structure used by the server and the move data structure
of my engine lol. Therefore i would need to simplify the API spec so
that you would "only" have to convert nacre as a .NET assembly ...
you would also need me to copy your compiled assembly (.dll) to my
server and integrate it with the engine calling system in my web
services :) If you want to provide such a .NET assembly, i can work
on the spec ... But only my tech problems with MLA are solved. An
alternative is to define the spec of an engine web service you would
have to comply with. In such a case, you will need to host the
engine on some web site and expose the required web service ... this
would be OS independant ...
- about the games database : this will be made available to the
public for free (on request).
- about the MLA opening book : i'm not sure it'll be available... ;)
david
--- In abalone_prog@yahoogroups.com, "Peer Sommerlund"
<peer.d.sommerlund@...> wrote:
>
> --- In abalone_prog@yahoogroups.com, "mogwaifrance" <david.malek@>
> wrote:
> >
> > The server has moved to http://moggames.net
> >
> > Yes you can enter broadside moves, but move entry ergonomy has
> > changed drastically. You click on one marble, release the mouse
> > button, move you mouse to the other marbles to move and then you
> > move the mouse to the target. Let me know if you encounter any
> > difficulty.
>
> :-) I noticed the broadside guestures, see also my post on
> http://148009.aceboard.net/148009-512-5872-0-enter-move.htm
>
>
>
> > I'm mostly missing a tournament systam, a player ranking system,
> > together with news channel.
>
> I suppose this is just a matter of time.
> Here are a couple of liks (which I'm sure you already know)
> http://en.wikipedia.org/wiki/Round-robin_tournament
> http://remi.coulom.free.fr/Bayesian-Elo/
>
>
>
> > I'm also trying to make MLA as a permanent player, but i'm still
> > having some tech problems with this.
>
> Will you publish the interface or will you perhaps implement abnet?
>
>
>
> > Once I get enough abalone games in the server database, i'll
work on
> > building an opening book for MLA...
>
> Will it be public available? I can understand if the answer is "no"
> since you have put quite a lot of work into building the server.
>
--- In abalone_prog@yahoogroups.com, "mogwaifrance" <david.malek@...>
wrote:
>
> The server has moved to http://moggames.net
>
> Yes you can enter broadside moves, but move entry ergonomy has
> changed drastically. You click on one marble, release the mouse
> button, move you mouse to the other marbles to move and then you
> move the mouse to the target. Let me know if you encounter any
> difficulty.
:-) I noticed the broadside guestures, see also my post on
http://148009.aceboard.net/148009-512-5872-0-enter-move.htm
> I'm mostly missing a tournament systam, a player ranking system,
> together with news channel.
I suppose this is just a matter of time.
Here are a couple of liks (which I'm sure you already know)
http://en.wikipedia.org/wiki/Round-robin_tournamenthttp://remi.coulom.free.fr/Bayesian-Elo/
> I'm also trying to make MLA as a permanent player, but i'm still
> having some tech problems with this.
Will you publish the interface or will you perhaps implement abnet?
> Once I get enough abalone games in the server database, i'll work on
> building an opening book for MLA...
Will it be public available? I can understand if the answer is "no"
since you have put quite a lot of work into building the server.
The server has moved to http://moggames.net
Yes you can enter broadside moves, but move entry ergonomy has
changed drastically. You click on one marble, release the mouse
button, move you mouse to the other marbles to move and then you
move the mouse to the target. Let me know if you encounter any
difficulty.
Since sept 2, i'm significantly enhanced the server with :
- blitz / time limited
- suspending/resuming games
- draw offering
- exotic variants
- a mail system
I'm mostly missing a tournament systam, a player ranking system,
together with news channel.
then i think it'll be ready to be promoted :)
I'm also trying to make MLA as a permanent player, but i'm still
having some tech problems with this.
Once I get enough abalone games in the server database, i'll work on
building an opening book for MLA...
You cannot (yet)
Mogwai
------------------------------------------------------------
Selon peer.d.sommerlund@...:
> Cool. How do you do broadside moves?
>
> -----Oprindelig meddelelse-----
> Fra: abalone_prog@yahoogroups.com [mailto:abalone_prog@yahoogroups.com] På
> vegne af mogwaifrance
> Sendt: 2. september 2006 23:50
> Til: abalone_prog@yahoogroups.com
> Emne: [abalone_prog] i'm programming an abalone game server with AJAX
>
> i'm now programming an abalone game server with AJAX
>
> find it at http://mogsinteractive.net
>
> click "se connecter" or the UK flag and then "connect"
>
> marbles are moved by drag and drop of a marble onto an adjacent empty
> field or onto an adjacent stone of the same colour
>
> i'm only starting lol
>
>
>
>
>
>
> Yahoo! Groups Links
>
>
>
>
>
>
>
>
>
Cool. How do you do broadside moves?
-----Oprindelig meddelelse-----
Fra: abalone_prog@yahoogroups.com [mailto:abalone_prog@yahoogroups.com] På vegne
af mogwaifrance
Sendt: 2. september 2006 23:50
Til: abalone_prog@yahoogroups.com
Emne: [abalone_prog] i'm programming an abalone game server with AJAX
i'm now programming an abalone game server with AJAX
find it at http://mogsinteractive.net
click "se connecter" or the UK flag and then "connect"
marbles are moved by drag and drop of a marble onto an adjacent empty
field or onto an adjacent stone of the same colour
i'm only starting lol
Yahoo! Groups Links
i'm now programming an abalone game server with AJAX
find it at http://mogsinteractive.net
click "se connecter" or the UK flag and then "connect"
marbles are moved by drag and drop of a marble onto an adjacent empty
field or onto an adjacent stone of the same colour
i'm only starting lol
--- In abalone_prog@yahoogroups.com, david.malek@... wrote:
>
> Hi Sébastian,
>
> Welcome to the Abalone world :)
Thx :)
> >Engines
> Aba-pro is a powerful engine, I think Tino has done a very
impressive work. I
> took me ages to beat this engine with MLA. I'm sure abapro is faster
in node
> evaluation than MLA.
I'll look at both. I still havn't asked Tino for AbaPro, but I'll do
so once I find the time.
> > I am able to reach higher search depths than current Abalone progs (10
> > ply I was told in case of Aba-Pro).
> Exploring the game, and paticulary the tree cutting issues, legal moves
> generation, position evaluation will lead you to the max depth
you'll be able
> to reach lol (for example, ProbCut doesnt seem to work and Aba-pro's
heuristic
> has been proven wrong in its expansion strategy by MLA is some
cases, other
> example : bitboards seem to lead nowhere).
I took a look at bitboards, but I think that - while certainly doable
- they won't give too much of benefit.
IMO, search depths are only substantially influenced by two factors
(taking basics like a fast search algorithm, hash tables, etc. for
granted):
1) the quality of move ordering
2) how to cut/reduce/prune moves/sub-tress that are a waste to be
looked at (or rather: that the benefits of not searching these is
higher than the drawback of an unlikely move missed)
Number 1 is of course a free-lunch exercise, but at some point a
ceiling will be hit with little further possible improvement.
I think that the second route is still not explored as much as it
could be (not even in the chess world). It's of course an exercise in
testing whether a particular reduction/extension or prunging is
benefitial or not...
To put it in my favorite way of thinking, there is no search
depth-ceiling that cannot be reached. But there is a ceiling in nodes
that can be analyzed. The problem always is where to spend those nodes...
> > field, pursued without the required professional approach.
> Lol, do not underestimate Peer, Tino and others :) Particularly
their knowledge
> of game programming (for both search and evaluation lol).
:) Now that i reread that statment it sounds quite arrogant. Wasn't
meant the way you understood it though.
The lack of professional approach didn't refer to the qualitiy of
their/your programming.
It referred to the substantial lack of :
1) specs and agreed upon formats (move-formats,position-formats,etc.)
2) uncontended and unamibgious notation!!
3) unifying GUI's and ability to easily compare and contest engines
4) test-suites (for positional/tactical analysis)
5) rating-lists
6) discontinuity of strong programs
and other such things.
It's quite probably due to the (small) size of the field. But (IMO),
if that could be changed, the whole field would become broader and
better.
It's an issue of how much time is spent once to achieve these results
and how much is saved later on, if once done.
> > I also want to provide a GUI that'll include a lot more powerful tools
> > for analysis and game/database management.
> There is a game file format in MLA, and some tools (like a
Macromedia Flash game
> player for your web pages), feel free to contact me for further
info. It's the
> same concerning API/engine communication, Peer is also using the AbNet
> protocol.
I'll post here soon, regarding GUI/engine communication.
> > What i noted most about Abalone (in contrast to chess) is the lack of
> > information even regarding such simple things as rules/notation.
> Rules and notation are around, MLA allows both notations. To me,
theoretical
> knowledge of the game is an important issue. From the opening book
automatic
> generation work i've done so far (no yet embedded in my engine) this
is a
> tricky issue. But knowledge generation still looks possible to me.
Regarding notation, that ain't an issue for the GUI. You just give the
user the option to use whatever sound or crappy notation the user
wants to use.
It is more of an issue in common protocols, file-formats and the like.
Especially broadside move notation, where I've seen so many variants
that it is hard too keep track of them.
> Note that my MLA work is in standby for the time being, these days,
i'm more
> focused on my girlfriend, my job and vacations (i'm back from mexico
today and
> will run to kenya in july).
:)
> Good luck, build competition to Nacre, Abapro and MLA :) Feel free
to share your
> ideas, ask for any info / litterature that could help you.
I will.
Search algorithms, I'll most likely be able to share a lot of
knowledge, while I might have questions about what has already been
tried in evaluation.
> Promise : If you beat MLA i'll put my hands in the engine again lol.
2.5 is the
> current version, if you beat it. 1.8 is the one to beat, it's the
won that won
> against abapro.
>
> David.
:)
Better remember that promise, ;)
Regards and thx,
Sebastian Leibnitz.
Hi Sébastian,
Welcome to the Abalone world :)
>Engines
Aba-pro is a powerful engine, I think Tino has done a very impressive work. I
took me ages to beat this engine with MLA. I'm sure abapro is faster in node
evaluation than MLA.
> I am able to reach higher search depths than current Abalone progs (10
> ply I was told in case of Aba-Pro).
Exploring the game, and paticulary the tree cutting issues, legal moves
generation, position evaluation will lead you to the max depth you'll be able
to reach lol (for example, ProbCut doesnt seem to work and Aba-pro's heuristic
has been proven wrong in its expansion strategy by MLA is some cases, other
example : bitboards seem to lead nowhere).
> field, pursued without the required professional approach.
Lol, do not underestimate Peer, Tino and others :) Particularly their knowledge
of game programming (for both search and evaluation lol).
> I also want to provide a GUI that'll include a lot more powerful tools
> for analysis and game/database management.
There is a game file format in MLA, and some tools (like a Macromedia Flash game
player for your web pages), feel free to contact me for further info. It's the
same concerning API/engine communication, Peer is also using the AbNet
protocol.
> What i noted most about Abalone (in contrast to chess) is the lack of
> information even regarding such simple things as rules/notation.
Rules and notation are around, MLA allows both notations. To me, theoretical
knowledge of the game is an important issue. From the opening book automatic
generation work i've done so far (no yet embedded in my engine) this is a
tricky issue. But knowledge generation still looks possible to me.
Note that my MLA work is in standby for the time being, these days, i'm more
focused on my girlfriend, my job and vacations (i'm back from mexico today and
will run to kenya in july).
Good luck, build competition to Nacre, Abapro and MLA :) Feel free to share your
ideas, ask for any info / litterature that could help you.
Promise : If you beat MLA i'll put my hands in the engine again lol. 2.5 is the
current version, if you beat it. 1.8 is the one to beat, it's the won that won
against abapro.
David.
Selon icyclemort <Sebastian.Mort@...>:
> Hello all!
>
>
> A quick introduction:
>
> I am new to the field of Abalone programming.
>
> Nevertheless, my goal is clear, I want to create an Abalone engine
> superior to Aba-Pro (mid-term) and possibly (hard to judge how
> difficult it is) make it equal or even superior to the cream of human
> players(long term).
>
> I also want to provide a GUI that'll include a lot more powerful tools
> for analysis and game/database management.
>
> To be honest, Abalone programming as of now seems to be a rather loose
> field, pursued without the required professional approach.
> I've got a lot of chess programming experience, and I am very
> confident that I'll be able to deliver a GUI/engine package that is
> superior to what is currently available.
>
> I am able to reach higher search depths than current Abalone progs (10
> ply I was told in case of Aba-Pro).
>
> Positionally, I've got a lof of ideas that I'll try and see if they
> work as well as I hope to.
>
> So, now you're informed about my lofty goals. ;
>
>
> --- GUI/engine/interface ---
>
>
> My engine is now up and running fine, although it is still lacking a
> lot of basic search algorithm enhancements and Abalone knowledge, but
> both will come...
>
> I am still working on the GUI, it'll include a lot more stuff than
> current Ablone GUI's. It'll include a lot of stuff that should be
> interesting for Abalone players and programmers alike. Analysis Modes,
> game/database management, engine matches/tournaments, patzer/reduced
> strength computer modes and a lot of interesting stuff that has not
> yet made into a single abalone GUI (think chess and chessbase).
>
> Engine and GUI are seperated programs and communicate through an
> interface that is shamelessly based upon the Universal Chess Interface
> (UCI). I'll publish the sepecification along with the GUI, so if
> anybody is interested they can then program only an engine and rely
> upon an existing and powerful GUI. That will also help to make better
> comparisons between engines (automatic and easy to organize engine
> matches and tournaments). It should increase the competitve side of
> Abalone programming and hopefully fuel the field with more enthusiasm
> and creativity...
>
>
> --- questions ---
>
> What i noted most about Abalone (in contrast to chess) is the lack of
> information even regarding such simple things as rules/notation.
>
> I am currently a bit baffled by Abalone notation and some rules, and
> I'd like to clarify those before I move on.
>
> --- rules ---
>
> Rules about movement and win conditions are simple and clear. Perfect.
>
>
> But I am not so sure about repetition rules. Is the repetition of a
> position allowed to happen or is there some rule forbidding it or
> deciding in favor of a draw/or one of the players?
> If there is no such rule, how are infinite repetitions (nobody willing
> to deviate from a position; or even positions where everything but the
> a repetition would wreck one side's position) dealt with??
>
>
> What about the length of a game, is there some kind of established
> maximum number of moves (e.g. without a single lost stone) after which
> a game is aborted in some kind of way?
>
>
> --- notation ---
>
> Regarding the board/fields, I follow the Aba-Pro way of doing it.
> (That is, the interface specification will; the GUI is customizable
> and supports Netablone board noatition)
>
> a1 is bottom/left
> i9 is top/right
>
>
> inline moves and pushes are recorded as following:
>
> a1b2c3>b2c3d4 = a1b2
>
>
> broadside moves are a bit troubling, because very different notations
> seem to be in use:
>
> a1b2c3>b1c2d3
>
> is recorded as:
> (1) = a1c3b1 (makes sense to me)
> (2) = c3a1d3 (the same but other direction)
> (3) = a1c3d3 (less intuitive, IMO)
> (4) = c3a1b1 (same as above the other way round)
>
> (1) and (2) are FromFirst/FromLast/ToFirst
> (3) and (4) are FromFirst/FromLast/ToLast
>
> I am strongly leaning towards (1) and (2) but would like to hear
> recommendations.
>
> Regarding the difference between (1)/(3) and (2)/(4), it is the
> question of from where to start counting the stones.
> I've read suggestions that the first stone should be the one most
> closely to the bottom or the top of the field (both seem to be in use).
>
> Never have I read a suggestion of how to record a move like
> (c3c4c5>d3d4d5) where the issue would have to be decided upon a
> left/right criteria.
>
> Is there a style that is more commonly used?
>
> BTW, I despise an ambigious style. The interface specification will
> certainly not allow more than one way to handle it.
>
> (The GUI will though, there you should and will be able to choose any
> kind of notation you wish to, I might even enable custom-build notations.)
>
> So that is the notation issue, thx for reading my rant.
>
>
> --- Aba-Pro ---
>
> A completely different issue. I have tried to get my hands on Aba-Pro.
> But the website given seems to be dead. I am close to calling the
> faculty in Graz directly.
> Is there currently any way to buy/order Aba-Pro?
>
>
> --- finishing ---
>
>
> So, I hope somebody will answer my questions regarding rules and notation.
> Don't expect GUI/engine to appear before the end of july/august.
>
> Happy abalone programming!
>
>
> BTW, if somebody is interested in the engine/GUI concept and might
> want to program such an engine, I'd advise to contact me by e-mail
> (Sebastian.Leibnitz{a} googlemail . com)
>
>
> Regards, and bye.
>
>
>
>
>
>
>
>
>
>
> Yahoo! Groups Links
>
>
>
>
>
>
>
>