我试图实现tic-tac-toe hello-world MCTS游戏玩家,但我遇到了一个问题 .
在模拟游戏并选择“最有希望的”(利用/探索)节点时,我只考虑总胜数(“利用”部分) - 这会导致某些问题,所得算法根本不具防御性 . 因此在选择之间
-
移动导致(100次抽奖; 10次失败)
-
移动导致(1胜; 109输)
选择较差的一个(1; 109),因为我的uct函数贪婪计算avg wins而不是“value” .
我是否正确地认识到了这个问题?我应该从“avg wins”切换到考虑所有结果类型的其他 Value 指标吗?
欢迎任何建议,谢谢
1 回答
由于井字游戏是一种零和游戏(一个玩家的状态值总是等于对手的否定值),你的得分函数也应该反映这一点 .
这意味着,在计算平均分数时,您应该使用如下值:
每场胜利
每次抽奖
每一次损失都是
在您的示例中,这将导致以下平均分数:
移动导致(100次抽奖; 10次失败):平均得分=
-10/110 = -0.0909...
移动导致(1胜; 109输):平均 . 得分=
-108/110 = -0.98181...
因此,第一种选择将被视为更好的选择