java 蒙特卡洛树搜索算法_棋盘游戏中的蒙特卡洛树搜索 - 如何实现对手移动

我正在研究MCTS算法的实现,在具有完美信息的零和棋盘游戏的背景下 . 例如 . 国际象棋,围棋,跳棋 .

据我所知,在算法的每次迭代中,有四个步骤:选择,扩展,模拟和反向传播 .

我的问题是关于对手动作的实施,如何在树中呈现,以及如何在每个阶段实施 .

例如,让我们想象一下GO的游戏,我们(黑色)正在玩AI(白色) . 当黑色从根节点s0做出动作ab时,然后转为白色以进行动作aw .

我最初的想法是每个动作都会产生一个新的状态 . 所以s0 - > ab - > s1 - > aw - > s2,其中每个s状态代表一个节点 . 但是,这会影响MCTS中的选择过程 . 在这种情况下,MCTS不会有探索糟糕的移动的倾向吗?因为这将为黑色返回更好的奖励 .

我的另一种解决方案是将动作组合到一个节点中 . 所以s0 - > ab - > aw - > s1 . 但是,这会使决策变得更加困难,因为现在每个根级别操作都与多个不同的节点相关联 .

是否有任何框架表明反对者应如何在MCTS中代表?任何帮助,将不胜感激 .

Edit 1: 由于我们将在上面的示例中玩黑色,因此每次模拟结束时的奖励功能将与黑色相关 . 例如 . 如果黑方在游戏结束时获胜,则奖励将通过所有节点(黑色和白色节点)进行备份 . 我的期望是具有高状态值的白色节点(允许黑色获胜) .

但也许我应该在做反向传播时放弃奖励?例如 . 如果黑色获胜,则黑色节点为1,白色节点为-1 . 这样,选择功能保持不变 . 这是正确的吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值