Arimaa Forum (http://arimaa.com/arimaa/forum/cgi/YaBB.cgi)
Arimaa >> Bot Development >> AI Class Project ???
(Message started by: Nombril on Feb 17th, 2012, 1:49pm)

Title: AI Class Project ???
Post by Nombril on Feb 17th, 2012, 1:49pm
Hoping I can get some feedback and ideas from everyone here...I'm taking a graduate level AI course and we have a group project (3 people) to complete by the end of April.  We have a few weeks here to get a project idea hammered out.  (Project suggestions include optimization problems, spam filtering, recommendation systems, etc)  The scope is small enough to be suitable for a graduate level course...but we aren't expected to do something so in depth and novel that we would expect to publish it.  (If it does go that far...OK, I'm sure all of us would be willing to do a little more over the summer...)

1.
In the past I've read advice here about not starting to learn programming with Arimaa bots.  We all know how to program, but besides a month worth of lectures on search techniques, we don't have experience with actually writing game playing agents.  I like to play Arimaa...so am inclined to jump right into programming an Arimaa bot.  Is it foolish to start with Arimaa for game playing bots, or can we start here?

2.
Any guess at a ballpark number of hours it takes to get a bot written and playing?  (I'm wondering if we should start from scratch or maybe it would be wiser to test out some variations using one of the sample bots that are available?)

3.
Are there any questions people have that we should consider answering with our course project?

Thanks for any input on some or all of these questions!!!

Title: Re: AI Class Project ???
Post by Nombril on Feb 17th, 2012, 2:03pm
PS: I have seen some questions and ideas from Fritz and Hippo at the end of this thread:

http://arimaa.com/arimaa/forum/cgi/YaBB.cgi?board=devTalk;action=display;num=1249585696;start=

I haven't noticed "answers" to these questions, so I assume they are possible points to consider for my 3rd question.

Title: Re: AI Class Project ???
Post by rbarreira on Feb 17th, 2012, 2:19pm
Since you have time constraints and don't have experience writing game-playing programs I would suggest two simplifications so that you can focus on what's really important:

- don't use bitboards. It's probably more straightforward to use a simple 8*8 array as your board representation, even if it doesn't result in the shortest/fastest code possible.

- go single-threaded only, don't write a parallel bot.

With those two simplifications and if you have some programming experience, I'd say it's definitely feasible.

How many hours to write the code? I wouldn't know, but you should expect at least 2000-3000 lines of code for a bare-bones bot.

Title: Re: AI Class Project ???
Post by jdb on Feb 17th, 2012, 3:43pm

The chess programming wiki contains a ton of information. Since arimaa uses a chess board and chess pieces, most of it is relevant.

http://chessprogramming.wikispaces.com/

Use the Arimaa Engine Interface (AEI). It comes with some tools to play automated games and connect to the server. This is very useful for testing various changes and generating data to put in a report.

Using plain alpha beta search is enough to get a decent playing bot. There are dozens of enhancements in the chess wiki that can be added later.




Title: Re: AI Class Project ???
Post by Fritzlein on Feb 17th, 2012, 6:07pm
I imagine that "write an Arimaa bot" isn't too great a scope, because (at the beginning) as soon as you can hook move generation up to the bot interface, you have a bot, and because (later on) you can add as many features as you have time for.

I also imagine that some professors won't like the project if your intention is to add features in the order that makes the bot play better.  The most critical features could be completely boring from some perspectives.  It used to be that if a computer would perform a task well, that was AI, no matter how the computer did it, but more recently people seem to think that something is AI (or not) based less on what the computer is doing and more on how the computer is doing it.

I particular, your professors may be interested in automated learning.  If so, you could think about a bot that only generates moves and applies an evaluation function, i.e. a bot with no search beyond 1-ply, so that you wouldn't have to spend any precious time on the machinery of search.

Just within that limited realm, there are many different types of experiments that you could run.  For example, trying to learn evaluation from self-play would be a very different sort of adventure than trying to learn evaluation from expert games.

I'm trying to think within the framework of a graduate class here.  If I were answering from the perspective of "what Fritz wants to know about Arimaa if someone is willing to research it," I would say something completely different.

Title: Re: AI Class Project ???
Post by Hippo on Feb 21st, 2012, 2:19pm

on 02/17/12 at 14:03:55, Nombril wrote:
PS: I have seen some questions and ideas from Fritz and Hippo at the end of this thread:

http://arimaa.com/arimaa/forum/cgi/YaBB.cgi?board=devTalk;action=display;num=1249585696;start=

I haven't noticed "answers" to these questions, so I assume they are possible points to consider for my 3rd question.


Actually I have got one student (Tomas Jakl) for bachelor thesis to compare MCTS with alpha-beta. And it is difficult to interpret the results (or rather ... it would need much more/longer experiments). Unfortunately Tomas does not want to continue working on the project. ... The work is included here (http://arimaa.com/arimaa/papers/).
One thing which favorizes MCTS is its simplicity of time management and paralelization. I don't expect MCTS to be better in blitz speed, but I would bet on it in postal speed.

Now I got student for master thesis dealing with "static evaluation function". ... let us see what we get in 2 years ...

Title: Re: AI Class Project ???
Post by Nombril on Mar 1st, 2012, 11:02pm
Thanks everyone for the input.  I discussed the project briefly with our professor, and they are most interested in the heuristic function, so we'll be thinking about that a bit.

As for evaluating how well it works - any thoughts if we should be aiming to beat a particular bench mark bot?  Or reaching some ELO ranking in the game room?

For leaving out bitboards - Would adding them in later to require starting over from scratch, just minor modifications, or something in between?

Title: Re: AI Class Project ???
Post by Hippo on Mar 2nd, 2012, 1:39am
For the searching the game representation is not that much important it just uses "position" and "move" objects.
For position evaluation the game representation could matter. Of course you could convert from one to the other, but the speed is what is the essential. Briareus actually uses both representations in parallel.
So try thinking on evaluation on both representations ... what suits better?

Playing against fixed bot is wrong in sense your bot could missuse weaknesses of the bot.
Gaining given rating is wrong as good player could inflate it easily by intentionaly losing to it.
And deflating it could be easy as well.

Using a set of benchmark bots seems to be "best wrong" solution.

Title: Re: AI Class Project ???
Post by jdb on Mar 2nd, 2012, 9:47am

on 03/01/12 at 23:02:24, Nombril wrote:
For leaving out bitboards - Would adding them in later to require starting over from scratch, just minor modifications, or something in between?


The way of representing the board is a major decision. Adding bitboards at a later date, would (likely) require rewriting move generation and evaluation at the very least. So switching to bitboards at a later date would require a significant amount of work.



Title: Re: AI Class Project ???
Post by Hippo on Mar 3rd, 2012, 3:08am

on 03/02/12 at 09:47:51, jdb wrote:
The way of representing the board is a major decision. Adding bitboards at a later date, would (likely) require rewriting move generation and evaluation at the very least. So switching to bitboards at a later date would require a significant amount of work.


Oh yes, the move objects ... their generator depends very havily on the representation.
It seems to me for move generation the bitboards are much faster.
But for position evaluation the coordinate system could be better.
I am still facing the decision to maintain both at the same time.



Arimaa Forum » Powered by YaBB 1 Gold - SP 1.3.1!
YaBB © 2000-2003. All Rights Reserved.