cost 122 ms
蒙特卡洛树搜索在玩的时候一直陷入无限循环(与训练相反) - Monte carlo tree search keeps getting stuck in an infinite loop when playing (as opposed to training)

我已经尝试为一个简单的棋盘游戏制作自己的蒙特卡洛树搜索算法的实现,并且它在学习时似乎工作合理。 但是,当我从播放模式切换到竞技场模式进行评估时,mcts 陷入无限循环。 这样做的原因是,在学习它时,它会根据概率伪随机选择动作,但在竞技场模式下,这会切换为选择最有可能获胜的动作。 不幸的是,在其中一 ...

什么时候应该重置蒙托卡罗树搜索? - When should a monto carlo tree search be reset?

我正在尝试构建/理解蒙特卡洛树搜索算法 (mcts) 如何与神经网络结合使用以学习如何玩游戏(如国际象棋)。 但是我无法理解何时重置树。 我以https://github.com/suragnair/alpha-zero-general为例。 但是对我来说,关于这个实现的一件事是它在每个单独的游戏 ...

访问存储在 NumPy 数组中的树节点的最有效方法是什么 - What is most efficient way to access nodes of a tree stored in a NumPy array

想象一下,我们有一棵存储在 NumPy 数组中的值树。 例如 - 树中的每个节点都是数组中的行。 第一行tree[0]是根节点[0, 6] 。 第一列tree[:,0]包含节点父节点的行号,第二列tree[:,1]包含节点的值属性。 通过其祖先访问给定节点直到根的值属性的最有效方法是什么? 例如,对 ...

巨大的 memory 在 C++ MCTS 算法中的使用 - Huge memory usage in C++ MCTS algorithm

我正在 C++ 中实现蒙特卡洛树搜索算法。 我在 for 循环中一次创建一棵大树,每次迭代都创建一棵不同的树。 我的问题是每棵树都很大,如果我创建 12000 棵树,我的程序会崩溃,因为 PC 中所有可用的 memory 都已分配。 问题是,例如,我在迭代 5 中创建的树在下一次迭代中是无用的,所以 ...

Mone Carlo 树搜索和终端节点处理 - Mone Carlo Tree Search and terminal Nodes handling

我正在尝试使用此存储库在新游戏上实现 AlphaZero。 我不确定他们是否正确处理了 MCTS 搜索树。 他们的 MCTS 实现逻辑如下: 获取当前游戏 state 的“规范形式”。 基本上,切换播放器 colors 因为神经网络总是需要从 ID = 1 的播放器的角度输入。所以如果当前播放器是 ...

为什么蒙特卡洛树搜索的 UCB 公式中有对数(和平方根)? - Why is there logarithm (and the square root) in the UCB formula of Monte Carlo Tree Search?

我从几个来源研究了蒙特卡洛树搜索 (UCT),例如: http://www.incompleteideas.net/609%20dropbox/other%20readings%20and%20resources/MCTS-survey.pdf 但是,我不明白为什么蒙特卡洛树搜索的 UCB 公式中 ...

优化战斗机器人 - Optimizing fighting bots

想象一下,您应该为一个机器人编写一个算法,该算法将与其他类似准备的机器人战斗。 你的机器人整场战斗有 200 点生命值,每轮获得 12 个能量点的设定值(最多 100 轮)。 您的机器人必须每一轮都进行攻击,并且可以但不必保护自己。 有4种攻击类型和4种相应的防御。 当一个机器人失去所有生命值或您超 ...

MCTS 代理在井字游戏上做出错误决定 - MCTS Agent making bad decisions on Tic-Tac-Toe

我已经在 MCTS AI 上工作了几天了。 我试图在井字游戏上实现它,这是我能想到的最简单的游戏,但出于某种原因,我的人工智能总是做出错误的决定。 我已经尝试更改 UCB1 的探索常数的值、每次搜索的迭代次数,甚至是获胜、失败和平局所获得的分数(试图让平局更有回报,因为这个 AI 只打第二,并尝试平 ...

在基于模型的强化学习任务中加速蒙特卡罗树搜索的方法 - Ways to speed up Monte Carlo Tree Search in a model-based RL task

这个领域对我来说还是很新的,所以如果我问愚蠢的问题,请原谅我。 我正在利用 MCTS 运行基于模型的强化学习任务。 基本上,我有一个代理在离散环境中觅食,代理可以看到它周围的一些空间(为了简单起见,我假设对其观察空间有完美的了解,因此观察与状态相同)。 代理有一个由 MLP 表示的世界内部转换模型( ...

对 ProcessPoolExecutor 上下文的重复调用变慢 (Python) - Repeated Calls to ProcessPoolExecutor context get slower (Python)

我正在开发一个 MCTS 算法,我试图通过并行展开多个叶子来并行化一些工作。 在完成一批展开之后,我想返回 go 并将我的结果添加到树中(撤消我的虚拟损失),然后再选择另一批叶子展开。 除了速度之外,这工作正常 - 我发现围绕 ProcessPoolExecutor 上下文的连续循环变慢了。 代码 ...

是否可以“中断”递归 function 并在以后继续? - Is it possible to “interrupt” a recursive function and continue it later?

我有一个递归搜索大树的 function some_result = treesearch(node) (蒙特卡洛树搜索的变体)。 它通过next_node = expensive_heuristic(node)决定遍历树的顺序,然后将结果在叶子上传播到树上。 我必须执行许多这样的搜索,并且可以高 ...

如何将之前的 state 恢复到健身房环境 - How to restore previous state to gym environment

我正在尝试在 Openai 的 atari 健身房环境中实施 MCTS,这需要计划能力:在环境中行动并将其恢复到以前的 state。 我读到这可以通过游戏的 ram 版本来完成: 在快照中记录当前的 state: snapshot = env.ale.cloneState() 将环境恢复到快照中记录 ...

返回的指针属性中 class 实例上的矢量属性消失 - Vector attributes on class instance in returned pointer attribute disappearing

我正在实现一种树搜索,它需要能够从树中获取“最有希望的节点”,然后对该节点执行某些操作,以便为下一次迭代更新树的其余部分。 问题:object 指针Board*的向量属性似乎在 function 的return值和在调用环境中保存它们的Board*值之间发生变化。 我的 output:>&gt ...

蒙特卡洛树搜索:从部署中获取价值 - Monte Carlo Tree Search: Getting a value from the rollout

我目前正在为策略游戏 AI 编写 Monte Carlo Tree Search 的实现,并且对 Rollout(模拟阶段)有疑问。 该算法的描述建议您应该运行模拟,直到达到终端 state,但是当您的搜索空间很大且时间有限时,这是不切实际的。 就我而言,我将模拟步骤的数量限制为某个值(如果终止,则 ...

AlphaZero:自对弈期间访问了哪些节点? - AlphaZero: which nodes visited during self-play?

阅读这篇文章非常有助于更好地理解 AlphaZero 背后的原理。 不过,有些事情我并不完全确定。 下面是作者的UCT_search方法,可以参考他在Github上的代码: https : //github.com/plkmo/AlphaZero_Connect4/tree/master/src ...

如何在 GPU 上有效地并行化 AlphaZero? - How do I effectively parallelize AlphaZero on the GPU?

我正在实现一个 AlphaZero 版本(AlphaGo 的最新版本),以应用于其他领域。 该算法的关键是 state 空间 (CPU) 的蒙特卡洛树搜索与来自 eval 模式 (GPU) 神经网络的“直觉”(概率)交错。 然后使用 MCTS 结果来训练神经网络。 我已经通过启动多个进程来并行化 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM