60 lines
1.4 KiB
Julia
60 lines
1.4 KiB
Julia
# Simple MCTS Example
|
|
|
|
This example demonstrates basic MCTS usage with a simple state transition function.
|
|
|
|
```julia
|
|
using LLMMCTS
|
|
|
|
# Define a simple state transition function
|
|
function simple_transition(state::Dict, args::NamedTuple)
|
|
# In a real scenario, this would call an LLM
|
|
# For this example, we'll just generate deterministic next states
|
|
|
|
current_step = get(state, :step, 0)
|
|
new_step = current_step + 1
|
|
|
|
# Create new state
|
|
newstate = Dict(
|
|
:step => new_step,
|
|
:reward => new_step * 2, # Simple reward function
|
|
:isterminal => new_step >= args.max_steps
|
|
)
|
|
|
|
# LLM would provide progressvalue estimate
|
|
progressvalue = (new_step / args.max_steps) * 10
|
|
|
|
return Dict(
|
|
:newNodeKey => "step_$(new_step)",
|
|
:newstate => newstate,
|
|
:progressvalue => progressvalue
|
|
)
|
|
end
|
|
|
|
# Initial state
|
|
initialstate = Dict(
|
|
:step => 0,
|
|
:reward => 0,
|
|
:isterminal => false
|
|
)
|
|
|
|
# Transition arguments
|
|
transitionargs = (max_steps = 5,)
|
|
|
|
# Run MCTS
|
|
result = runMCTS(
|
|
initialstate,
|
|
simple_transition,
|
|
transitionargs;
|
|
maxiterations = 10,
|
|
explorationweight = 1.0,
|
|
maxSimulationDepth = 3,
|
|
horizontalSampleExpansionPhase = 3
|
|
)
|
|
|
|
# Access results
|
|
println("Root node visits: ", result.root.visits)
|
|
println("Best next state: ", result.bestNextState)
|
|
println("Best terminal state: ", result.bestTerminalState)
|
|
println("High value states: ", result.highValueStateList)
|
|
```
|