Tiny AI contest

This forum always seems to liven up when there’s a contest going on. So I thought about this for an AI contest:

A specific boardgame like chess or checkers is chosen.
A GUI is made to allow you to play on it and test the AI while developing.
The GUI will feature pluggable AI libraries so that different people’s AI libraries can be played off against each other.
The GUI makes calls to the AI libraries which only have the following method available:

  • compute() which sends the game state to the lib and returns the move chosen.

A tournament will be held where the different AI libraries play off against each other.
The aim of the competition is to see who can write the smallest AI library (like the 4k contest) but also to see who wins the tournament.

The matches will be played and the moves will be exported so that people can watch them.

There will be no way to cheat because the GUI will test for valid moves and the only way the AI lib can do anything is when it is called on by the GUI.

How does this sound? Would anyone be interested in this?

Hm… then the code should run in a Thread that is stop()ed after N milliseconds… as it’s extremely easy to write a perfect AI without a time constraint.

Further, the goal should be relatively easy (yet hard to master), like some bot with certain extremely basic sensors, like feeling depth in a certain direction or heat / radiation. The environment should only feed those sensors with information, and the ‘bots’ should have limited output to control themselves.
You might be given an array or sensors and controllers and place them on a simple geometry shape programmatically at initialisation time.

Maybe…? Oh… and who is going to program the environment :slight_smile:

sounds like a nice idea.

Already environments available for things like this, e.g.
http://robocode.sourceforge.net/
where you code robot behavior to battle each other.

Robocode is way too highlevel! Who needs a visual representation of the world when you have values in your arrays! :wink:

I could pretty much code a chess environment myself. The only thing my code would need to do is to test for validity in moves. The rest is up to the bots/players.

About the timing:
If it’s chess then each bot will have say between 5-60 minutes per game. So you can think as much as you want per move but you have to make a trade-off bettween time and depth.

There won’t be any real graphics updating between moves, except the clock running out. But that’s only necessery if you want to watch the bots play real-time. Otherwise the bots can just pass moves back and forth until the game flags a checkmate or whatever withing the game time limit. In this way threads won’t be necessery.

The compute() method will only supply an array with the board state and the time remaining. The way you work out the move doesn’t matter.

I want the AI library to be done like the 4k competition. I want to see who can put the best AI in the smallest package. I don’t know what a maximum filesize would be for a bot but ulfjack made a chess game with AI for the 4k competition.

RoboCode seems interesting but I’m not sure if its exactly what I had in mind. RoboCode already has leagues so if you wanted to do a bot there then you could do it without this competition. But I’ll keep this in the back of my mind.

Here’s another simpler idea:
A sokoban enivronment which has a lot less rules than chess, only 4 movements with collisions.

Then we see who can make the fastest but smallest solver for any challenge thrown at it.

That sounds pretty interesting, I’d like to have a play at that. More interesting that chess.

Kev

Yes I agree, it’s more interesting than chess and you don’t require an opponent.

I’ll get to work coding the framework this weekend.

Outline:

  • playing field consists of a byte array with (possibly):
    • 0 = walkable block
    • 1 = wall
    • 2 = pushable box
    • 3 = target
    • 4 = player
  • possible movements:
    • 0 = give up
    • 1 = up
    • 2 = right
    • 3 = down
    • 4 = left

The best bot will be determined by:

  • filesize (with a maximim limit)
  • number of moves
  • time taken to compute everything

You need target squares as well.

Kev

Have u ever seen coderally ? http://www.alphaworks.ibm.com/tech/coderally
You must code AI for rally cars which can shoot tires :slight_smile: