2

我尝试实现井字游戏 hello-world MCTS 游戏播放器,但遇到了问题。

在模拟游戏并选择“最有前途”(利用/探索)节点时,我只考虑总获胜次数(“利用”部分) - 这会导致某些问题,产生的算法根本不是防御性的。因此,在选择时

  • 导致(100 平;10 输)的移动
  • 导致(1胜;109负)的移动

选择了最差的(1; 109),因为我的 uct 函数贪婪地计算平均胜利而不是“价值”。

我是否正确识别了这个问题?我应该从“平均获胜”切换到考虑所有结果类型的其他价值指标吗?

欢迎任何建议,谢谢

4

1 回答 1

3

由于井字游戏是一种零和游戏(一个玩家的状态值总是等于对手的否定值),您的得分函数也应该反映这一点。

这意味着,在计算平均分数时,您应该使用如下值:

  • 每次获胜 +1
  • 每次抽奖 0
  • 每次损失 -1

在您的示例中,这将导致以下平均分数:

  • 导致(100 次平局;10 次失败)的移动:平均。分数 =-10/110 = -0.0909...
  • 导致(1 胜;109 负)的移动:平均。分数 =-108/110 = -0.98181...

所以第一个选项将被视为更好的选择

于 2018-02-16T11:11:30.160 回答