我希望你做得很好。我目前正在做一个项目,我们需要使用 Mcts(蒙特卡洛树搜索)来实现一个 connect4-agent。据我了解,mcts基本上分为四个阶段:
1)树构造
2) 通过 Ucb1 值进行选择,直到到达叶节点
3) 如果叶节点已被访问,则展开
4) Rollout = 随机模拟,直到达到最终状态并为该最终状态评分(例如,我们赢了--> 分数 =1,我们输了--> 分数 = -1,平局--> 分数 = 0)
5) 对分值进行反向传播,并对访问的节点添加一次访问。
6)根据1级的得分值决定移动。
我们的代码运行良好。不过,我不确定如何执行扩展阶段。如果我们到达一个已经被访问过的叶子节点,我们知道我们需要从这个节点展开树。考虑一下你有 3 个可能的动作。我们如何决定是否要使用 move=1、move =2 或 move = 3 扩展树?
现在算法随机选择这些动作之一进行扩展,但我相信这远非最优。
最好的问候,阿尔贝托