1

我希望你做得很好。我目前正在做一个项目,我们需要使用 Mcts(蒙特卡洛树搜索)来实现一个 connect4-agent。据我了解,mcts基本上分为四个阶段:

1)树构造

2) 通过 Ucb1 值进行选择,直到到达叶节点

3) 如果叶节点已被访问,则展开

4) Rollout = 随机模拟,直到达到最终状态并为该最终状态评分(例如,我们赢了--> 分数 =1,我们输了--> 分数 = -1,平局--> 分数 = 0)

5) 对分值进行反向传播,并对访问的节点添加一次访问。

6)根据1级的得分值决定移动。

我们的代码运行良好。不过,我不确定如何执行扩展阶段。如果我们到达一个已经被访问过的叶子节点,我们知道我们需要从这个节点展开树。考虑一下你有 3 个可能的动作。我们如何决定是否要使用 move=1、move =2 或 move = 3 扩展树?

现在算法随机选择这些动作之一进行扩展,但我相信这远非最优。

最好的问候,阿尔贝托

4

1 回答 1

0

你应该在 MCTS 中随机选择移动,因为此时它对移动一无所知。您可以添加启发式并对其进行排序,但它可能会使搜索产生偏差。

于 2020-05-25T16:25:50.670 回答