多线程事务 解决方案_多线程增量解决方案的巨大飞跃

OptaPlanner现在支持多线程增量求解,显著提高求解速度,尤其在多CPU核心环境下。文章详细讨论了多线程求解的要求,如不破坏增量分数计算速度和保持可重复性,并介绍了配置和基准测试结果,展示了在车辆路径问题和护士排班问题上的性能提升。
摘要由CSDN通过智能技术生成

多线程事务 解决方案

OptaPlanner最终支持多线程增量求解加速是惊人的。 即使只有几个CPU内核,它也将得分计算速度提高了三倍。 请参阅下面的结果。 要激活它,只需在配置中添加一行即可。

最初的功能要求始于2007年。多年来,我们逐步为之准备了内部体系结构。 所以现在,十年后,我们从7.9.0.Final开始完全支持它。

但是为什么要花这么长时间实施呢?

要求

让我们看一下多线程增量求解的要求:

  • 在CPU上水平扩展算法。
  • 不要破坏增量分数计算的速度。
  • 运行必须是可重复的。

在CPU上水平扩展算法

有多种方法可以使用多个线程而不进行真正的多线程解决:

  • 多租户 :解决多个数据集,每个线程一个。
    • 从第一个OptaPlanner版本开始工作。
  • 多重下注解决 :以多种方式完全独立地解决一个数据集。 取得最佳结果。
    • 从第一个OptaPlanner版本开始工作。
  • 分区搜索 :分解一个数据集并分别求解每个数据集。
    • 自OptaPlanner 7.0起已完全受支持。

但是这些都不是真正的并行启发式,如下面右下角所示:

多线程增量求解策略

在实际的多线程解决方案中,我们通过将1种算法(可能是多种算法的组合)的繁重计算工作分流到单独CPU内核上的多个线程中而无需分区即可解决1个数据集。

在OptaPlanner的构造试探法和本地搜索中,最耗CPU的工作是计算移动分数。 例如,在禁忌搜索中,每个步骤(外部迭代)的计算结果约为1000个动作。 以此作为分数计算速度 。 通常,它在每秒1k个评估动作与每秒500k个评估动作之间变化。

多线程求解只是将步骤的运动评估分配到多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值