Monte Carlo Tree Search for multiple teams
Project description
MultiMCTS
MultiMCTS is a Python package that implements the Monte Carlo Tree Search algorithm for board games played by any number of players. With MultiMCTS, you can create AI for any game merely by knowing the rules -- no strategy needed!
Features
- Efficient (largely C-compiled) MCTS implementation
- Support for any number of players/teams
- Easily create AI for any board game
Usage
For your game, you will need to:
- Represent a game state in code
- Identify all legal moves
- Determine if the game is over and who won
You do NOT need to:
- Understand strategy
- Have domain knowledge
- Evaluate the favorability of a game state
You can install with pip.
pip install multimcts
To use MultiMCTS, you must first define your game by subclassing GameState
and implementing the required methods (see the Tic-Tac-Toe example):
get_current_team
-- Returns the current team.get_legal_moves
-- Returns a list of legal moves. Moves can be any data structure.make_move
-- Returns a copy of the current state after performing the given move (one from get_legal_moves).is_terminal
-- Returns whether the game is over.get_reward
-- Returns the reward given to the team that played the game-ending move.
Then you can use MCTS to search for the best move. It will search until your defined limit is reached. The following shows how to simulate a game using MCTS:
from multimcts import MCTS, GameState
class MyGameState(GameState):
# your implementation here...
pass
mcts = MCTS() # Create an MCTS agent.
state = MyGameState() # Set up a new game.
while not state.is_terminal(): # Continue until the game is over.
print(state) # Print the current game state (implementing GameState.__repr__ might be helpful).
state = mcts.search(state, max_time=1) # Play the best move found after 1 second.
print(state) # Print the final game state.
Development
- Clone the MultiMCTS repo.
git clone https://github.com/taylorvance/multimcts.git cd multimcts/
- Make changes to
multimcts/mcts.pyx
or other files. Then build a distribution.python setup.py sdist
- Install the updated package to use in your projects.
pip install dist/multimcts-0.1.0.tar.gz
Replacemultimcts-0.1.0
with the actual filename and version from thedist/
directory.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file multimcts-0.6.4.tar.gz
.
File metadata
- Download URL: multimcts-0.6.4.tar.gz
- Upload date:
- Size: 232.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef3158fb47476c80918a398099a8e507f1b1f1ba65c35c142e9362a4d107d347 |
|
MD5 | fd8a55badc0aae51982defd36f658735 |
|
BLAKE2b-256 | 30980f0506ef424e7455d00eeb6704a21566110a4e2a30cd809020d794a1bbfd |
File details
Details for the file multimcts-0.6.4-cp39-cp39-macosx_10_9_universal2.whl
.
File metadata
- Download URL: multimcts-0.6.4-cp39-cp39-macosx_10_9_universal2.whl
- Upload date:
- Size: 168.8 kB
- Tags: CPython 3.9, macOS 10.9+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cbab7c51557e3a7ed060656e0e3c8dc523e93428717a437616b978fc0194e2de |
|
MD5 | 0f2f044181a9536d95ef24da64979bda |
|
BLAKE2b-256 | d9c417631a5a6f5290682e3e98fdb3d0e6b190ca8c8cd68d75fd6454321683bd |