news 2026/4/18 8:49:48

蒙特卡洛树搜索(MCTS)3-代码框架

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
蒙特卡洛树搜索(MCTS)3-代码框架
class NodeMCTS: def __init__(self, *node_info): self.node_info = node_info self.parent = 'parent' # 视情况取舍 self.children = {} # key:动作 value:节点 self.can_expand = True # 否表示node无法拓展,是终止态或者满孩子 self.is_terminal = False # 终止态标记 # 与搜索过程相关的动态属性 self.win_count = 0 self.visit_count = 0 # 不需要可去掉 self.q = 0 self.u = 0 def action_to_max_uct_child(self): """ 获取指向最大uct孩子的动作 """ pass def check_flag(self): """ 检查节点布尔变量状态 """ pass def add_child(self, action=''): """ 可指定动作添加孩子,或随机 """ pass def uct_calculation(self): """ 按uct公式计算uct(注意分母为0的情况 """ pass class TreeMCTS: def __init__(self, *node_info): self.root = NodeMCTS(*node_info) self.update_nodes = [] # 表示需要更新的Node路径 def select(self): """ 个人认为此次有两种实现思想:深度优先,广度优先 深度优先是比较贴近mcts算法的描述的,即总是选择孩子进行拓展:如果node只有一个孩子,拓展该孩子;多个孩子则选择uct最大的 另一种是自己琢磨的,仅供讨论:综合考虑node与孩子的uct值,如果node自身uct大于每个孩子,选择node拓展(如果可拓展) """ pass def expand(self): """ 添加孩子到树里或不作为,同时把模拟起点的node传给simulate函数 """ pass def simulate(self, start_node)-> bool: """ rollout或仿真实验 """ pass def feedback(self, is_win): """ 更新本次模拟起点及其所有祖先的visit_count,win_count """ pass def train(self, deadline: int): """ 设置迭代次数 """ for _ in range(deadline): self.select() self.expand() is_win = self.simulate() self.feedback(is_win) def output(self): """ 输出算法结果,根据某个指标执行select函数即可,比如节点q值、访问次数、uct值等 """ pass

之前日记1和日记2,介绍了mcts的一些原理,现在经过我几个月对mcts的利用,是时候分享我关于其代码实现的想法了。总的来说,我认为mcts的灵活性是很高的,或许这也是相关论文里没有说明mcts的具体实现路径的原因。只要思路遵循4阶段迭代,价值公式的内核类似uct即可。这是关于mcts经典版本的框架,其中关于select方式提出自己的个人想法,欢迎各位指导欢迎交相互流。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 17:44:39

ChampR终极指南:英雄联盟智能助手完整使用教程

ChampR终极指南:英雄联盟智能助手完整使用教程 【免费下载链接】champ-r 🐶 Yet another League of Legends helper 项目地址: https://gitcode.com/gh_mirrors/ch/champ-r 还在为英雄联盟复杂的装备搭配和符文选择而烦恼吗?ChampR作为…

作者头像 李华
网站建设 2026/4/18 8:35:56

Epic Games免费游戏自动领取助手:从此告别手动操作烦恼

还在为错过Epic Games商店的每周特惠游戏而懊恼吗?想象一下这样的场景:当别人还在手动登录、搜索、点击领取时,你的游戏库里已经自动添加了最新上架的免费游戏。这就是epicgames-freebies-claimer带来的便捷体验! 【免费下载链接】…

作者头像 李华
网站建设 2026/4/17 22:01:25

10分钟搞定企业级数据可视化:JimuReport零代码报表实战指南

10分钟搞定企业级数据可视化:JimuReport零代码报表实战指南 【免费下载链接】JimuReport jeecgboot/JimuReport: JimuReport是一个开源的轻量级报表工具,提供零编码数据可视化能力,支持多种数据库类型,能够快速生成各种复杂报表并…

作者头像 李华
网站建设 2026/4/18 7:03:46

GitStats 终极使用指南:5分钟掌握Git仓库统计分析

GitStats 终极使用指南:5分钟掌握Git仓库统计分析 【免费下载链接】git_stats GitStats is a git repository statistics generator. 项目地址: https://gitcode.com/gh_mirrors/gi/git_stats GitStats是一个功能强大的Git仓库统计信息生成工具,能…

作者头像 李华