繁体   English   中英

Choco-Solver Java 库是否支持并行编程?

[英]Does the Choco-Solver Java library support Parallel Programming?

我的约束问题变得太复杂了,我想知道我用来建模和解决问题的 Choco-Solver 框架是否支持像多线程这样的并行编程方法。

最初,我认为默认情况下会发生这种情况,但是在运行top -i时检查 CPU 使用率显示它始终在 100% 左右,所以我假设没有发生并行化。

我知道 Choco 中的 ParallelPortfolio 类,但这不是我想要的,因为我已经实现了自定义搜索策略,而且我想在它上面使用多线程。

约束编程中的并行编程大致有 3 种方式。

  1. 并行约束的传播:要传播的约束分布在 CPU/内核之间。 在这种情况下,主要瓶颈来自变量的域同步。 您还需要找到一种相关的方法来在内核之间分配约束传播。 这是一种使用 Choco-solver 研究但没有取得多大成功的方法,该方法被放弃了。
  2. 并行搜索空间探索:搜索空间被划分为子空间,一个CPU/核心负责探索它。 在这种情况下,主要问题与复制(子)模型的能力有关。 Choco-solver 管理回溯的方式是基于尾随(而不是复制),因此不直接适应复制。 这可以使用序列化框架来完成。
  3. 并行搜索空间 (2):每个 CPU/核心负责一个模型并定义一个特定的搜索策略。 在这种情况下,复制问题被委托给用户(因为它纯粹是一个 Java 问题)并且模型(实际上是求解器)开始竞争,每次找到解决方案时,模型之间都会共享信息。 这就是 Choco-solver 中ParallelPortfolio的原理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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