循环执行 N s i m N_{sim} Nsim次MCTS模拟(搜索预算),每一次模拟完整走 Select‑Expand‑Simulate‑Backpropagate;
模拟全部结束,根节点根据子节点Q值选择最优动作 a ∗ a^* a∗;
a ∗ a^* a∗送入真实环境执行,拿到新观测;销毁整棵搜索树;用新观测构造新根节点,进入下一轮主循环。
3.3.1 选择 Select
从根节点向下遍历,使用UCT上置信度公式选择子节点,直到遇到未完全扩展节点。
U C T ( v ) = ( Q ( v ) ) + c p u c t ln N ( p a r e n t ( v ) ) ( N ( v ) ) \mathrm{UCT}(v)=(Q(v))+c_{puct}\sqrt{\frac{\ln N(\mathrm{parent}(v))}{(N(v))}} UCT(v)=(Q(v))+cpuct(N(v))lnN(parent(v))
( Q ( v ) ) (Q(v)) (Q(v)):该节点平均回报;
c p u c t c_{puct} cpuct:PUCT探索系数,控制探索‑利用权衡;
( N ( v ) ) (N(v)) (N(v)):节点访问计数。
3.3.2 扩展 Expand
到达叶子节点,调用ReAct大模型,基于当前节点的虚拟观测与推理上下文,生成 K K K个候选动作;为每一个候选动作创建空的子节点,挂载到当前叶子。
3.3.3 模拟推演 Simulate
从刚扩展出的子节点开始,运行Rollout推演:复用ReAct推理‑动作生成逻辑,在模型内部虚拟向前推演最多 L r o l l L_{roll} Lroll步。
推演结束,调用价值打分Prompt,输出该条模拟轨迹的回报 r ∈ 0 , 1 r\in0,1 r∈0,1。
3.3.4 反向传播 Backpropagate
把模拟得到回报 r r r沿着路径向上回溯更新:路径上每一个节点:
( N ( v ) ) + = 1 , W ( v ) + = r , ( Q ( v ) ) = W ( v ) / ( N ( v ) ) (N(v))\mathrel{+}=1,\quad W(v)\mathrel{+}=r,\quad (Q(v))=W(v)/(N(v)) (N(v))+=1,W(v)+=r,(Q(v))=W(v)/(N(v))
3.4 主循环完整伪代码
复制代码
def react_mcts_main(env, \(max\_real\_steps\), N_sim, c_puct, L_roll, K):
obs = env.reset()
for _ in range(\(max\_real\_steps\)):
# 初始化MCTS根节点,真实环境当前状态
root = MCTSNode(parent=None, obs=obs, thought="", action="",
visit_count=0, total_reward=0.0)
# N_sim次完整MCTS模拟推演(全部虚拟,不碰真实环境)
for _ in range(N_sim):
v = select(root, c_puct)
expand(v, K)
r = simulate(v, rollout_len=L_roll)
backpropagate(v, r)
# MCTS结束,选择根下Q值最高动作执行真实环境
best_child = max(root.children.values(), key=lambda x: x.q_value)
real_action = best_child.action
obs, reward_real, done, info = env.step(real_action)
if done:
break
return
3.5 超参数说明
参数
含义
基准实验默认值
N s i m N_{sim} Nsim
每真实步MCTS模拟次数(搜索预算)
20
c p u c t c_{puct} cpuct
PUCT探索系数
(1.414)
L r o l l L_{roll} Lroll
Rollout模拟最大虚拟步数
8
K K K
扩展阶段每个节点生成候选动作数目
3
m a x r e a l s t e p s max_real_steps maxrealsteps
N s i m N_{sim} Nsim模拟次数(搜索预算)
N s i m = 5 N_{sim}=5 Nsim=5→39.8%; N s i m = 10 N_{sim}=10 Nsim=10→43.5%; N s i m = 20 N_{sim}=20 Nsim=20→47.0%; N s i m = 30 N_{sim}=30 Nsim=30→47.6%。
Rollout虚拟推演长度 L r o l l L_{roll} Lroll
L r o l l = 4 L_{roll}=4 Lroll=4:42.4%; L r o l l = 8 L_{roll}=8 Lroll=8:47.0%; L r o l l = 12 L_{roll}=12 Lroll=12:47.3%。>