116 lines
1.2 KiB
Julia
116 lines
1.2 KiB
Julia
module type
|
|
|
|
export MCTSNode
|
|
|
|
# ---------------------------------------------- 100 --------------------------------------------- #
|
|
|
|
|
|
""" a node for MCTS search tree
|
|
|
|
# Arguments
|
|
- `state::T`
|
|
a state of a game. Can be a Dict or something else.
|
|
- `visits::Integer `
|
|
number of time the game visits this state
|
|
- `stateValue::Float64`
|
|
state value
|
|
- `children::Dict{T, MCTSNode}`
|
|
children node
|
|
|
|
# Return
|
|
- `nothing`
|
|
# Example
|
|
```jldoctest
|
|
julia> state = Dict(
|
|
:info=> Dict(), # keyword info
|
|
:thoughtHistory=> Dict(
|
|
:question=> _,
|
|
:thought_1=> _,
|
|
:action_1=> _,
|
|
:observation_1=> _,
|
|
:thought_2=> _,
|
|
...
|
|
)
|
|
)
|
|
```
|
|
|
|
# TODO
|
|
[] update docstring
|
|
|
|
# Signature
|
|
"""
|
|
mutable struct MCTSNode{T1<:AbstractDict, T2<:AbstractString}
|
|
nodekey::T2
|
|
state::T1
|
|
visits::Integer
|
|
progressvalue::Number # estimate value by LLM's reasoning
|
|
statevalue::Number # store discounted commulative reward (gather from its child node)
|
|
reward::Number # this node's own reward
|
|
isterminal::Bool
|
|
parent::Union{MCTSNode, Nothing}
|
|
children::Dict{String, MCTSNode}
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
end # module type |