Skip to content

RAVE & Heavy Playouts Agents - #10

Merged
adamgracikowski merged 15 commits into
mainfrom
feature/mcts-rave-and-hp
May 24, 2026
Merged

RAVE & Heavy Playouts Agents#10
adamgracikowski merged 15 commits into
mainfrom
feature/mcts-rave-and-hp

Conversation

@p10tr13

@p10tr13 p10tr13 commented May 19, 2026

Copy link
Copy Markdown
Collaborator

Opis

Ten PR rozbudowuje agenta MCTS dla gry Breakthrough o dwa warianty algorytmu: RAVE oraz Heavy Playouts. Przy okazji zwykły agent MCTS został uporządkowany strukturalnie, żeby łatwiej było rozwijać kolejne warianty i testować poszczególne fazy algorytmu.

Zmiany w zwykłym MCTS

Regularny MCTS został podzielony na wyraźniejsze fazy:

  • selekcja,
  • ekspansja,
  • symulacja/playout,
  • backpropagation.

Poprawiłem też sposób kredytowania nowo utworzonego węzła po ekspansji. Wcześniej wynik symulacji mógł być przypisywany do węzła-rodzica zamiast do faktycznie rozwiniętego dziecka. Teraz expand_node zwraca indeks liścia, od którego zaczyna się backpropagation.

Dodałem również pomocniczą funkcję określającą, czy dany gracz wygrał przy danym statusie gry. Dzięki temu logika naliczania zwycięstw jest wspólna dla klasycznego MCTS i statystyk AMAF używanych przez RAVE.

RAVE

Dodałem strategię selekcji RAVE, która wykorzystuje statystyki AMAF. Oprócz standardowych statystyk wizyt i zwycięstw węzły przechowują teraz osobne statystyki AMAF w wydzielonej strukturze.

Logika śledzenia ruchów została przeniesiona do osobnego modułu rave, żeby backpropagation nie był bezpośrednio zależny od szczegółów strategii selekcji.

Heavy Playouts

Dodałem wariant playoutów oparty o twoją heurystykę. Zamiast wybierać ruchy wyłącznie losowo, agent może wykonywać playouty epsilon-greedy:

  • z prawdopodobieństwem epsilon wybiera ruch losowy,
  • w pozostałych przypadkach wybiera ruch oceniony najlepiej przez heurystykę.

Heavy Playouts korzystają z istniejącego HeuristicEvaluator, więc można sterować wagami materiału, zaawansowania pionów, obrony i kary za krawędzie.

Różnice względem main

Względem main PR dodaje:

  • wariant RAVE dla selekcji MCTS,
  • wariant Heavy Playouts dla symulacji,
  • konfigurację nowych parametrów MCTS,
  • metryki dla RAVE i Heavy Playouts,
  • kontrolki GUI pozwalające włączać/wyłączać RAVE i Heavy Playouts w trakcie gry,
  • testy jednostkowe dla faz MCTS, RAVE, strategii selekcji i strategii playoutów,
  • refaktoryzację struktury kodu MCTS pod dalsze eksperymenty.

Testy

Dodałem jeszcze testy sprawdzające, czy MCTS oraz RAVE dobrze naliczają wizyty i wygrane, oraz czy poszczególne fazy MCTS zwracają to co oczekujemy. Co prawda jest to na bardzo małych planszach, ale lepsze to niż nic i łatwo samemu zweryfikować jaki powinien być wynik. Oczywiście wszystkie przechodzą.

@p10tr13
p10tr13 requested a review from adamgracikowski May 19, 2026 19:06
@p10tr13 p10tr13 self-assigned this May 19, 2026

@adamgracikowski adamgracikowski left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tam kilka komentarzy dałem o rozdzieleniu configa na dwa a w zasadzie 3 - MCTS, Rave i HeavyPlayout, ale teraz po odpaleniu zobaczyłem, że to można zmiksować w jakiegoś jednego giga chada agenta, tak?

Comment thread src/compute/src/agents/mcts/metrics.rs
Comment thread src/compute/src/agents/mcts/node.rs
Comment thread src/compute/src/agents.rs Outdated
Comment thread src/compute/src/agents.rs
Comment thread src/compute/src/agents.rs
Comment thread src/compute/src/agents/metrics.rs
Comment thread src/compute/src/agents/mcts.rs Outdated
Comment thread src/compute/src/agents/mcts.rs Outdated
Comment thread src/compute/src/agents/mcts.rs Outdated
Comment thread src/compute/src/agents/mcts/rave.rs
@adamgracikowski adamgracikowski changed the title Dodanie wariantów MCTS: RAVE i Heavy Playouts RAVE & Heavy Playouts Agents May 24, 2026
@adamgracikowski
adamgracikowski merged commit 34b609d into main May 24, 2026
2 checks passed
@adamgracikowski
adamgracikowski deleted the feature/mcts-rave-and-hp branch May 24, 2026 08:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants