Skip to main content

A simple implement for MCTS algorithm.

Project description

PyMCT

This is a simple implement for Manto Carlo Tree Search algorithm.

Install

pip install --upgrade PyMCT

Example

This is a example for searching a randomly generated tree, each transcation to a new state is given with random reward.

Import moudles:

from random import randint
from PyMCT.MCT import MCTNode, MCTS, State

create the test case:

class Test:
    _root:MCTNode
    _MCTS:MCTS
    
    def __init__(self, root_state:int, c:int=2, max_iter:int=10):       
        root_state = State(root_state)
        self._root = MCTNode(state=root_state)
        #Set the serach with max iteration and max tree heights
        self._MCTS = MCTS(self.root,c=c,max_iter=max_iter, max_height=2, debug=True)
        
    #Always return a random reward. Note that the function must take one MCTNode as argument, and return a value.
    def reward_func(slef, node:MCTNode):
        return randint(0, 10)
    
    #Randomly expand the tree with new node. Note that the function must take one MCTNode as argument, and return two lists: states and tags
    def discover_func(self, node:MCTNode):
        new_states = list()
        tags = list()
        for i in range(randint(1,10)):
            new_states.append(State(i))
            tags.append(i)
        return new_states, tags

    def run(self):
        #Pass in the reward and discover function, start the algorithm!
        self.MCTS.iterate(self.reward_func, self.discover_func)
        
        #Find the optimal path.
        self.MCTS.find_optimal_path()
        
        #Display the tree, Note that if no tag is given to MCTNode, a random tag will be generated and display here.
        self.MCTS.render_tree()
        
        #Print the oprimal path. This is the list of MCTNodes.
        print(self.MCTS.optimal_path)
    
    @property
    def root(self):
        return self._root
    
    @property
    def MCTS(self):
        return self._MCTS

run the test:

if __name__ == '__main__':
    test = Test(0)
    test.run()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

PyMCT-1.1.0.tar.gz (16.8 kB view details)

Uploaded Source

Built Distribution

PyMCT-1.1.0-py3-none-any.whl (17.2 kB view details)

Uploaded Python 3

File details

Details for the file PyMCT-1.1.0.tar.gz.

File metadata

  • Download URL: PyMCT-1.1.0.tar.gz
  • Upload date:
  • Size: 16.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for PyMCT-1.1.0.tar.gz
Algorithm Hash digest
SHA256 7e1c37bca248b9f975bf9dcf610f1c13458205629842be1b23b0ed6907309bd8
MD5 05ad3415f2622cef8239a6fe24479b2b
BLAKE2b-256 52b06d990f8f65146ed394de7bbdd9970e7748bf5765ac7f74562b64f31ed370

See more details on using hashes here.

File details

Details for the file PyMCT-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: PyMCT-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 17.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for PyMCT-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3c77a9c1fb0360ac7c284fd48d1fb5709a92270ad961efaa2bb9c36896f02be3
MD5 efab61e69e5dc507dc5dd7ea337f10a3
BLAKE2b-256 48c97c2841ef5ea53c52053e84eec8478c8b870ecf0a895bbb22f831d6662e6c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page