Python中的MCTS *树*并行化-可以吗?

时间:2018-10-01 03:15:20

标签: python python-3.x parallel-processing multiprocessing monte-carlo-tree-search

我想并行化我的MCTS程序。有几种方法可以做到这一点:

  1. 叶并行化,其中每个叶都并行扩展和模拟。
  2. 根并行化,其中每个线程/进程创建一棵单独的树,并在完成一些模拟后,将树合并以提供更好的统计信息
  3. 树并行化,其中所有线程/进程共享同一棵树,并且每个线程/进程探索树的不同部分。

(如果不清楚我的解释,请签出this review paper on MCTS。在第25页上,详细描述了并行化MCTS的不同方法。)


问题:

由于Python中的多处理 可以创建单独的子进程,因此2.根并行化非常合适,而我假设3.树并行化是不可行的。 (由于树并行化,所有子进程都必须共享同一棵树-这在Python中很难做到)

我正确吗?我浏览了多处理文档,如果我理解正确的话,看来 可能在某些基本数据类型的子流程之间来回传递信息,但是由于速度等因素,我们不建议这样做。

如果是这样,Python中的树并行化将是一个坏主意吧?

1 个答案:

答案 0 :(得分:1)

是的,您正确的认为,根并行化将是最容易实现的变体。不同的过程本质上将能够完全彼此独立地运行。只有在搜索过程结束时,才需要以您选择的任何方式汇总结果,我认为实施起来应该不会有问题。

我对Python中的多处理非常熟悉,以至于当您想要更多的交流(其他两种方法需要的那种交流)时,这会有些痛苦。我不太熟悉它,无法100%地确定它确实是“不可能”或“强烈劝阻”的,但是在实现容易性上肯定有明显的区别。