All Projects → inejc → mcts

inejc / mcts

Licence: MIT license
🌳 Domain independent implementation of Monte Carlo Tree Search methods.

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to mcts

ase exploration
Planning for robotic exploration based on forward simulation
Stars: ✭ 82 (+446.67%)
Mutual labels:  monte-carlo, decision-making
un-flatten-tree
A small npm module for converting trees to lists and vice versa.
Stars: ✭ 14 (-6.67%)
Mutual labels:  tree
react-vertical-tree
Simple & lightweight vertical tree like view.
Stars: ✭ 23 (+53.33%)
Mutual labels:  tree
mongodb-tree-structure
Implementing Tree Structure in MongoDB
Stars: ✭ 14 (-6.67%)
Mutual labels:  tree
Data-Structure-Algorithm-Programs
This Repo consists of Data structures and Algorithms
Stars: ✭ 464 (+2993.33%)
Mutual labels:  tree
beehive
A flexible, modern, header-only implementation of behavior trees
Stars: ✭ 37 (+146.67%)
Mutual labels:  tree
mcxcl
Monte Carlo eXtreme for OpenCL (MCXCL)
Stars: ✭ 36 (+140%)
Mutual labels:  monte-carlo
go-avltree
AVL tree with some useful extensions written in Go
Stars: ✭ 29 (+93.33%)
Mutual labels:  tree
JLBoost.jl
A 100%-Julia implementation of Gradient-Boosting Regression Tree algorithms
Stars: ✭ 65 (+333.33%)
Mutual labels:  tree
avl array
High performance templated AVL tree using a fixed size array. Extensive test suite passing.
Stars: ✭ 33 (+120%)
Mutual labels:  tree
vuejs-tree
A highly customizable and blazing fast Vue tree component ⚡🌲
Stars: ✭ 310 (+1966.67%)
Mutual labels:  tree
ng-treetable
A treetable module for angular 5
Stars: ✭ 32 (+113.33%)
Mutual labels:  tree
nub
A rendering and interaction Processing library
Stars: ✭ 28 (+86.67%)
Mutual labels:  tree
datafsm
Machine Learning Finite State Machine Models from Data with Genetic Algorithms
Stars: ✭ 14 (-6.67%)
Mutual labels:  decision-making
ValoMC
Monte Carlo software for simulating light propagation
Stars: ✭ 31 (+106.67%)
Mutual labels:  monte-carlo
GenericCDSS
GenericCDSS is a web-based application, which provides the main dashboard where professionals (e.g, practitioners, nurses) can follow all the patients that are under their responsibility and some details about the state of each one.
Stars: ✭ 37 (+146.67%)
Mutual labels:  decision-making
Random-Name-Picker
Simple, beautiful Android app to help you choose from a list of names at random. Downloaded 560,000+ times on Google Play with a 4.5+ rating after 3,500+ reviews.
Stars: ✭ 37 (+146.67%)
Mutual labels:  decision-making
taxonium
A tool for exploring very large trees in the browser
Stars: ✭ 65 (+333.33%)
Mutual labels:  tree
RL-ROBOT
Reinforcement Learning framework for Robotics
Stars: ✭ 81 (+440%)
Mutual labels:  decision-making
admc
Infinite order automatic differentiation for Monte Carlo with unnormalized probability distribution
Stars: ✭ 17 (+13.33%)
Mutual labels:  monte-carlo

Code Review

Monte Carlo Tree Search methods

This is a Java implementation of Monte Carlo Tree Search methods. It is self-contained, domain-independent and can thus easily be used in any state-action domain. The project was developed for the purpose of my Bachelor’s thesis.

Dependencies

JUnit4, Java cloning library

Usage

Create the implementation of MctsDomainAgent.

public class Player implements MctsDomainAgent<State> {...}

Create the implementation of MctsDomainState.

public class State implements MctsDomainState<Action, Player> {...}

Initialize the search and invoke uctSearchWithExploration() to get the most promising action.

Mcts<State, Action, Player> mcts = Mcts.initializeIterations(NUMBER_OF_ITERATIONS);
Action mostPromisingAction = mcts.uctSearchWithExploration(state, explorationParameter);
Important

For algorithm to work correctly it is necessary that state's method getAvailableActionsForCurrentAgent() either returns the same instances of objects or returns objects that override equals() and hashCode() methods.

Before every tree expansion and simulation a deep clone of represented state is created. This can lead to performance issues and should be taken into account when implementing MctsDomainState. You can optionally set which classes should be ignored during state cloning.

mcts.dontClone(DontCloneMe0.class, DontCloneMe1.class, ...);
Examples

Tic-Tac-Toe example can be found in the test directory and Scotland Yard board game example can be found here.

License

This project is licensed under the terms of the MIT license. See LICENSE.md.

Authors

Nejc Ilenič

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].