为什么构造试探法的分数计算速度比本地搜索要快?

时间:2019-07-11 14:27:50

标签: optaplanner

从OptaPlanner(23.0版最终版)开始,我正在尝试CloudBalancing示例。使用IncrementalScoreCalculator Java类,我注意到在构造阶段(> 1M / sec)的得分计算速度比本地搜索阶段(〜50k / sec)高得多。怎么会这样是否包括分数计算以外的算法?可以解释这种差异,因为本地搜索算法比计分算法要花费更多的时间在计分计算器之外。

1 个答案:

答案 0 :(得分:0)

两个原因:

1)构造启发式方法没有分配任何进程给计算机,因此所有Process.getComputer()为null。大多数约束在computer != null的进程上匹配,因此它们会短路并且不执行任何昂贵的联接,groupBy的操作,累加等。因此,空的或部分初始化的解决方案比完全初始化的解决方案(本地搜索使用)。

2)CH仅执行ChangeMove。 LS会执行更昂贵的动作,包括掉期动作(两倍大)和支柱动作(n倍)。因此,在LS中,每步计算的增量影响量也更大。