Monopyly

A Python framework to allow AI algorithms to compete at playing Monopoly

This project is maintained by richard-shepherd

The Rules

Entering and Play-offs

The competition is only open to employees of BNP Paribas. The closing date for entries is Tuesday 4th February 2014. Entries must be mailed as a zip file to richard.s.shepherd@gmail.com by this date. The final will be played on Friday 7th February.

In advance of the final a tournament will be played between all entries. A large number of rounds will be played - the number will depend on the speed of the AIs. The four AIs which win the most games will be picked to play in the final. You may enter more than one AI, but no more than one AI from each entrant will be picked for the final.

The final will be a tournament of the top four AIs. Depending on the speed of the AIs, a number of rounds will be played. That is to say that at least twenty-four games will be played to play all the permutations of AIs playing in first, second, third and fourth places.

Prizes

The prizes are kindly sponsored by BNP Paribas CIB Architecture.

Most efficient code means the AI that uses the least CPU time to make its decisions.

The main prize, of course, is the kudos that goes with being the winner of the Christmas Coding Challenge!

Differences between the standard rules and Monopyly rules

Standard Monopoly has limited numbers of houses and hotels, and some obscure rules about what to do when they run out. Monopyly has unlimited houses and hotels.

In standard Monopoly rules you can build houses at any point in the game. In Monopyly you can only build houses in your own turn.

Standard Monopoly rules say that you must sell all houses before transferring a property to another player as part of a deal. Monopyly lets you do this as long as you transfer the whole set. Similarly, standard Monopoly rules say that a player receiving a mortgaged property in a deal must immediately unmortgage it. Monopyly does not impose this condition.

In standard Monopoly rules, if a player goes bankrupt all their properties are immediately put up for auction. In Monopyly, they are just returned to the bank.

A standard Monopoly game could theoretically last for ever. Monopyly has a limit of 500 rounds per game. If this limit is reached, the player with the highest 'net worth' is the winner. Net worth = cash + sale value of houses + mortage value of properties.

Monopyly has an 'eminent domain' rule. This attempts to avoid 'boring' games where no player has a set or builds properties. If no properties have been built by round 200, all properties are compulsorily repurchased by the bank at face value. They are then immediately re-auctioned. The eminent_domain() method is called on your AI after compulsory purchase has happened, but before the re-auctioning occurs.

Rules for AIs

Any entry found to be breaking the rules below will be excluded from the competition.

AIs must not change the state of the game except through the interactions defined by the PlayerAIBase API. This includes, but is not limited to: changing the cash or properties owned by any player; changing the state of the board or the Chance or Community Chest cards; setting the random seed used by the dice; 'stealing' CPU from other players by running extra threads. You know what I mean: No 'Kobayashi Maru' style cheating!

AIs must not deliberately act favourably towards other specific AIs. You may enter multiple AIs into the competition, but you are not allowed to enter 'sacrificial' AIs which deliberately boost other AIs chances of winning.

You are allowed to remember details about other players' behaviour between games. Only one instance of your AI is created for the whole tournament and is reused for each game. So if you want, you can learn how other AIs behave and use that information in subsequent games.