博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Optaplanner终于支持多线程并行运行 - Multithreaded incremental solving
阅读量:5950 次
发布时间:2019-06-19

本文共 1368 字,大约阅读时间需要 4 分钟。

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

   而在7.9.0.Final版本中,发布了并行计算功能 - . 此功能只需要在配置文档中指定对应的并行线程数(可指定数量,也可由系统自行决定线程数),在启动Planning后,每一个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:

searchTableOfContents

Multithreaded incremental solving is easy to activate. Just add a <moveThreadCount> line in your solver config:

4
...

This basically donates 4 extra CPU cores to the solver. Use AUTO to have OptaPlanner deduce it automatically. Optionally, specify a <threadFactoryClass> for environments that don’t like arbitrary thread creation.

 

 

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

 或 

 

 

转载地址:http://gesxx.baihongyu.com/

你可能感兴趣的文章
Linux嵌入式GDB调试环境搭建
查看>>
安全性测试要点转摘
查看>>
java分析jvm常用指令
查看>>
【Linux】Linux 在线安装yum
查看>>
oracle 管理操作 (转)
查看>>
DEV 等待窗口
查看>>
实验03博客园总结
查看>>
laravel captcha 验证码制作
查看>>
phpexcel导入excel处理大数据
查看>>
CSS1
查看>>
【React js】 笔记
查看>>
网络时间戳
查看>>
Node.js 插件安装及常用插件
查看>>
iOS开发小技巧--iOS程序进入后台运行的实现
查看>>
窗口改变的时候自动刷新浏览器
查看>>
iOS 11 Xcode9开发 新特性学习 (新方法篇)
查看>>
设计模式(备忘录模式)
查看>>
Hadoop之HDFS及NameNode单点故障解决方案
查看>>
RxJS 入门指引和初步应用
查看>>
Java合并数组
查看>>