Chinese Checkers (Adversarial Search)
Adversarial Search/Chinese Checkers
Create a rational agent program to play chinese checkers, using adversarial search strategies.
The agent program will be evaluated based on its score in a series of games against a standard agent program.
The standard agent program will play using a 2-ply alpha-beta search. The utility function for the agent has been modified to discourage leaving pieces behind. The alpha-beta search has been modified to randomly select from moves of equal value.
The agent program will compete against the standard agent program in a total of eight games, four in each direction. The best and worst scores will be removed. Then the average score (as measured by the forwardness utility) will be calculated. Each game will be limited to at most 250 turns per player.
The project points will be calculated according to this
Points = 100 + 2 * Average_score
Exceptional cases in calculating the average score
- An agent program that traps the opponent will get another game.
- An agent program that is trapped will score a -10 for that game.
- An agent program that runs out of time will score a -10 for that game.
- An agent program that runs out of turns will score a -10 for that game.
- Others may be enumerated later.
The agent is a chinese checkers player in a tournament. The tournament consists of a collection of players competing against each other. For each game, each player has a maximum of 5 total minutes to play the game.
- The world is fully observable. All of the game pieces are visible at each time step.
- The world is static. The pieces only move when one of the players take a turn.
- Each game is solved in a sequential set of steps. But from game to game, the tournament is episodic.
- The environment is deterministic. MOVE actions will always move the marble as directed by a legal move.
- The environment is discrete in time and space.
- There are two agents in every game.
The agent has the following actions:
- MOVE from_x from_y to_x to_y
The agent receives the following percepts
- PLAYER_NUMBER number : The value will be 1 or 2.
- BASIC_BOARD string : A string representation of the game board.
The tournament will be conducted in Hazy 119 on the due date during class time. It should be possible to complete the tournament before the class period has ended.
- A match will consist of 2 players playing 2 games with each playing in position 1 and position 2.
- The score of a match will be the average of the 2 games. The player with the most points wins. In the event of a tie, the match will be replayed.
- In the event of repeated ties due to lack of unpredictability in players, both players will be given a loss.
- All players will play one round against all other players.
- The tournament winners will be determined by calculating the number of won matches.
- In the event of a tie on matches, the agents will play a set of matches in double elimination to determine first and second place.
- The first place agent will receive a bonus of 20 points.
- The second place agent will receive a bonus of 10 points.
Suggested points of interest
- The cutoff test needs to check for the end of the game as well as the depth of the search.
- The "Forwardness" utility function tends to leave stragglers that may be trapped by more aggressive agents.
- With no randomness, an agent is prefectly predictable.
ai::Agent::BasicBoardcan be derived from to add an unmove method, that will reduce the amount of computing time per search node.
ai::Agent::BasicBoardcan be derived from to add an unmove method, and override the move method to remove checks on move legality. This will greatly reduce the amount of computing time per search node. (Do not feed these methods illegal moves!)
- Opening book moves can save time.
- End game strategies may move towards max-max search.
- Non-optimal strategies may allow deeper search.
- Whether in Min-Value() or Max-Value(), the evaluation function needs to measure the value of the board for your player.