Index of /~willmlam/teaching/cs175_w12/Mancala

[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[   ]AILearning.jar2012-02-29 17:48 7.7K 
[   ]Group9RL.jar2012-02-29 17:48 6.8K 
[TXT]KalahGameState.java2012-02-29 17:52 3.8K 
[TXT]KalahPieGameState.java2012-02-29 17:52 4.8K 
[   ]MancalaFramework.zip2012-02-29 17:52 11K 
[TXT]MancalaGameState.java2012-02-29 17:52 2.1K 
[TXT]MancalaGameState.txt2012-01-18 18:24 1.5K 
[TXT]MancalaPlayer.java2012-02-29 17:52 665  
[TXT]OwareGameState.java2012-02-29 17:52 5.0K 
[TXT]README.html2012-02-29 17:52 3.8K 
[TXT]README.md2012-01-18 18:24 1.5K 
[   ]Team8.jar2012-02-29 17:48 5.2K 
[TXT]TermGame.java2012-02-29 17:52 4.5K 
[   ]group1.jar2012-02-29 17:48 5.3K 
[TXT]group10_data.txt2012-02-27 12:04 161  
[TXT]interactive_Player.java2012-02-29 17:52 1.0K 
[TXT]random_Player.java2012-02-29 17:52 1.7K 

Changelog

About the Mancala Game Framework

This framework was adapted for Mancala by William Lam for the Winter 2012 offering of CS 175, taught by Max Welling. The code was originally designed for Connect Four, provided by Alex Ihler.

Classes/Interfaces

MancalaGameState (abstract)
|- KalahGameState
|- OwareGameState
|- KalahPieGameState

Use one of the subclasses to decide on the Mancala variant.

MancalaPlayer (interface)
|- random_Player
|- interactive_Player

Implement the MancalaPlayer interface to create your AI routine. The name of your class should be formatted as YourClassName_Player.

TermGame

TermGame provides an example of how to use MancalaGameState and MancalaPlayer. It uses reflection to instantiate the state and player classes based on command line parameters. We will use a similar main class to this to run the tournament.

The command-line parameter format is: 
java TermGame <GameType> <StartingStones> <Player0Class> <Player1Class>

Ex: java TermGame Kalah 4 interactive random
Set player 0 as the interactive player and player 1 as the random player, 
playing the Kalah variant with 4 starting stones in each bucket.

Note that for Oware, repeated states are possible in the game tree. Since we cannot assume that two players will make a consensus to end the game, we will leave this decision up to the user interface running the game. (It should detect a sequence of repeated states and end the main execution loop, if so.)

About the competition

For the competition, we will run a program using the KalahPieGameState class that uses your AI player classes (and any of their dependencies) only. It will stop the execution of your player class without warning (and thus count as a forfeit) if it does not make a move within the time limit. You will be responsible of keeping track of the time within your implementation.

We will use a machine running Java 6 and your agent should use no more than 1GB memory and a single thread.

Time limit: 5 seconds per move

Tournament format: Double round-robin (allowing players to take turns going first)

We will then run the tournament as many times as we have time/resources for. The hope is that learning agents will play differently as we run more tournaments. The rankings will then be determined by the number of wins across all tournaments.