1. 首页
  2. IT资讯

OptaPlanner终于支持多线程并行运行 – Multithreaded solving

 OptaPlanner 7.9.0.Final之前,启动引擎开始对一个Problem进行规划的时候,只能单线程进行的。也就是说,当引擎对每一个possible solution进行分数计算的过程中,细化到每个步骤(Caculation),都只能排队在同一个线程中依次计算,不管你的问题是否存在并行计算的可能。很显然这种运算方式应用于一些可并行计划的场景下,是相当不利的。就算是一些在业务逻辑上无法实现并行运算的情况,在引擎自行调用指定的算法进行寻优时,若可以将每个Step,甚至每个Move的运行操作,适当地分配到不同的线程中执行,那么在多核CPU的环境下,无疑能大大提升规划运算性能,从而在规定的时间内行到更优的效果。毕竟对于NP-Hard/NP-Complete问题,除了比较算法优劣外,另一个维度对比的就是运算量,单位时间内运算量越大,找到更佳方案的机率越大。

   而在7.9.0.Final版本中,发布了并行计算功能 – Multithreaded incremental solving. 此功能只需要在配置文档中指定对应的并行线程数(可指定数量,也可由系统自行决定线程数),在规划运算过程中,每一个Step中的各个Move即有可能被分配于不同的线程进行计算。我在我的项目中启用了此功能,试用过各种类型的项目,其性能的提升基本上在30% – 150%之间。对于运算量巨大的情况(约束多且复杂、问题规划大),确实能有不少的提升。

  此功能在7.12.0. Final版本中,也有所优化,主要是针对Chained Throudth Time模式下的优化。

关于并行计算功能的更新信息如下:

New and noteworthy: Engine 7.9.0.Final

Multithreaded incremental solving
OptaPlanner can now solve one dataset (without partitioning) with multiple threads to take advantage of multiple CPU cores.
Even with just a few CPU cores, it triples the score calculation speed:

OptaPlanner终于支持多线程并行运行 - Multithreaded solving

<solver>   <moveThreadCount>4</moveThreadCount>   ... </solver>

对于OptaPlanner有任何疑问,可以通过邮件将问题发到我邮件,我将及时处理。通过即时通讯工具,我确实没办法即时处理,导致无意忽略了不少信息。
12977379@qq.com 或 kentbill@gmail.com

Constraint satisfaction solver (Java™, Open Source)www.optaplanner.orgOptaPlanner终于支持多线程并行运行 - Multithreaded solving

Constraint satisfaction solver (Java™, Open Source)


本系列文章在公众号不定时连载,请关注公众号(搜“让APS成为可能”或扫以下QR Code)及时接收,二维码:

OptaPlanner终于支持多线程并行运行 - Multithreaded solving

如需了解更多关于OptaPlanner的应用,请发电邮致:kentbill@gmail.com
或到讨论组发表你的意见:groups.google.com/forum
若有需要可添加本人微信(13631823503)或QQ(12977379)实时沟通,但因本人日常工作繁忙,通过微信,QQ等工具可能无法深入沟通,较复杂的问题,建议以邮件或讨论组方式提出。(讨论组属于google邮件列表,国内网络可能较难访问,需自行解决)

原文始发于:OptaPlanner终于支持多线程并行运行 – Multithreaded solving

主题测试文章,只做测试使用。发布者:酒颂,转转请注明出处:http://www.cxybcw.com/26045.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code