簡體   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