第 2 章 红帽构建的 OptaPlanner 8.38 新功能
本节重点介绍红帽构建的 OptaPlanner 8.38 中的新功能。
注意
Bavet 是用于快速分数计算的功能。Bavet 目前仅在 OptaPlanner 的社区版本中可用。红帽构建的 OptaPlanner 8.38 不提供它。
2.1. pillar move 和 nearby 选择的性能改进 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
现在,OptaPlanner 可以自动探测到多个 pillar 缓存的情况,多个 pillar 缓存可以共享预计算的 pillar 缓存,而不是为每个移动选择器重新计算 pillar 缓存。例如,如果您组合了 pillar move,例如 PillarChangeMove
和 PillarSwapMove
,您应该会看到更高的性能。
如果您使用 nearby 选择,这也适用。现在,OptaPlanner 可以自动检测预计算的距离列表,可在多个移动选择器之间共享,从而节省内存和 CPU 处理时间。
因此,以下接口的实现应该是无状态的:
-
org.optaplanner.core.impl.heuristic.selector.common.nearby.NearbyDistanceMeter
-
org.optaplanner.core.impl.heuristic.selector.common.decorator.SelectionFilter
-
org.optaplanner.core.impl.heuristic.selector.common.decorator.SelectionProbabilityWeightFactory
-
org.optaplanner.core.impl.heuristic.selector.common.decorator.SelectionSorter
-
org.optaplanner.core.impl.heuristic.selector.common.decorator.SelectionSorterWeightFactory
通常,如果 solver 配置要求用户实施接口,则预期的是实施是无状态的,也不会尝试包含外部状态。通过这些性能改进,无法遵循此要求将导致微小的错误和分数损坏,因为解决者现在会在看到适合的情况下重复使用这些实例。