Skip to content

Commit

Permalink
Rewrite README.md (#18)
Browse files Browse the repository at this point in the history
Bench: 2096379
  • Loading branch information
jw1912 authored Jul 14, 2024
1 parent 5d59a2b commit 79b031c
Showing 1 changed file with 15 additions and 34 deletions.
49 changes: 15 additions & 34 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
<div align="center">

# monty
# Monty
#### "MCTS is cool."

![License](https://img.shields.io/github/license/jw1912/monty?style=for-the-badge)
[![GitHub release (latest by date)](https://img.shields.io/github/v/release/jw1912/monty?style=for-the-badge)](https://github.com/jw1912/monty/releases/latest)
[![Commits](https://img.shields.io/github/commits-since/jw1912/monty/latest?style=for-the-badge)](https://github.com/jw1912/monty/commits/main)
[![GitHub release (latest by date)](https://img.shields.io/github/v/release/official-monty/Monty?style=for-the-badge)](https://github.com/official-monty/Monty/releases/latest)
[![Commits](https://img.shields.io/github/commits-since/official-monty/Monty/latest?style=for-the-badge)](https://github.com/official-monty/Monty/commits/main)

</div>

Expand All @@ -21,45 +20,27 @@ To compile and embed the networks in the exectuable, run
make embed EXE=<output path> EVALFILE=<value net path> POLICYFILE=<policy net path>
```

## Originality Status
## Development

The first version (0.1.0) used external data for value networks and self-generated policy data. The networks were then reset
completely, and all future versions are trained exclusively on monty's own data, generated from scratch with uniform policy
and material counting value.
Development of Monty is facilitated by [montytest](https://montychess.org/tests).
If you want to contribute, it is recommended to look in:
- [src/mcts/helpers.rs](src/mcts/helpers.rs) - location of functions that
calculate many important search heuristics, e.g. CPUCT scaling
- [src/mcts.rs](src/mcts.rs) - the actual search logic

## Credits
Thanks to everyone at SWE as usual, in particular Cosmo (Viridithas) and Zuppa (Alexandria), for helping with data generation, and Plutie, for running an LTC tune.
Functional patches are required to pass on montytest, with an STC followed by an LTC test.

## ELO
## ELO History

<div align="center">

| Version | Release Date | CCRL 40/15 | CCRL Blitz | CCRL FRC | Notes |
| :-: | :-: | :-: | :-: | :-: | :-: |
| [1.0.0](https://github.com/jw1912/monty/releases/tag/v1.0.0) | 28th May 2024 | TBD | TBD | TBD | Fully Original Data |
| [0.1.0](https://github.com/jw1912/monty/releases/tag/v0.1.0) | 26th March 2024 | - | - | 2974 | First Release |
| Version | Release Date | CCRL 40/15 | CCRL Blitz | CCRL FRC |
| :-: | :-: | :-: | :-: | :-: |
| [1.0.0](https://github.com/jw1912/monty/releases/tag/v1.0.0) | 28th May 2024 | - | 3076 | 3107 |
| [0.1.0](https://github.com/jw1912/monty/releases/tag/v0.1.0) | 26th March 2024 | - | - | 2974 |

</div>

## How it works

Monte-Carlo Tree Search is broken down into 4 steps to build a tree.

To begin with, only the root node is in the tree.

1. **Selection** of a node in the tree which has at least one unexplored child.
2. **Expansion** to one of the unexplored children, and adding it to the tree.
3. **Simulation** of the result of the game.
4. **Backpropogation** of the result to the root.

Unfortunately, MCTS in its purest form (random selection and random simulation to the end of the game)
is really bad.

Instead, **selection** is done via PUCT, a combination of a **policy network** which indicates the quality of the child nodes,
and the PUCT formula to control exploration vs exploitation of these child nodes.

And **simulation** is replaced with a neural network evaluation, called the **value network**.

## Terms of use

Monty is free and distributed under the [**GNU General Public License version 3**][license-link] (GPL v3). Essentially,
Expand Down

0 comments on commit 79b031c

Please sign in to comment.