tree - 在同一个 MCTS 上玩 AI?
问题描述
我最近一直在尝试使用 MCTS 实现来进行简单的棋盘游戏。我想让 AI 自己玩来收集一些示例游戏。我想我可以让他们使用相同的 MCTS 树(以获得更好的性能)。或者看起来像这样。
但这有效吗?或者我需要 2 个独立的树来为两个 AI 提供独立的获胜/播放数据才能正常运行?
解决方案
如果您正在进行自我游戏并且为两个玩家构建完全相同的树,那么树中就不会有任何固有的偏见 - 您可以为两个玩家重复使用它。但是,如果玩家以特定于特定玩家的方式构建 MCTS 树,那么您将需要重新构建树。在这种情况下,您需要保留两棵树,每个玩家一棵,并且每个玩家都可以重复使用自己的树,但别无其他。
如果您想弄清楚这一点,需要分析一些事情:
- 游戏有隐藏信息吗?(一个玩家知道另一个玩家不知道的事情。)在这种情况下,您不能重复使用这棵树,因为您会将私人信息泄露给其他玩家。
- 您的播出是否取决于 MCTS 树根处的玩家?
- 您是否有任何政策来修剪来自任一玩家的未对称应用的动作?
- 您是否以玩家之间不对称的方式评估状态?
- 你是否对玩家进行了不同的随机化?
如果这些都不正确,您可能会重新使用该树。
推荐阅读
- c# - 在 ASP.NET 核心应用程序中使用 UserManager 和 SignInManager 创建注册表单时出错
- c# - 将 Surface 转换回 Pixbuf
- php - MySQL设置会话wait_timeout,interactive_timeout在Codeigniter中不起作用
- reactjs - 如何使用 createSlice 进行 API 调用
- c# - C# Winforms 和 MySQL:使用 MySqlException 异常中的“数字”或“代码”属性在表单中显示自定义消息
- php - C++ 客户端无法使用 HTTP POST 查询将文件发送到 PHP 服务器
- javascript - 将渲染输出反应为 HTML 而不是组件
- html - CSS:如何将小吃栏水平居中?
- python - 一遍又一遍地擦除和重写海龟图形中同一位置的文本和卡号?
- c++ - C++ 程序跳过第二个函数调用