Optaplanner是否可以自动添加或删除计划实体



我是Optaplanner的新手。我想我已经了解了什么是规划实体,以及规划变量,真实的或某种相反的影子变量。我已经开始研究文档、示例和旧StackOverflow的问题,但仍有一些疑问。

当我尝试使我的分数计算器递增时,我在IncrementalScoreCalculator界面中发现了一些意想不到的方法。连同beforeVariableChanged和afterVariableChanged,我发现了*EntityAdded和*EntityRemoved,这让我怀疑实体对象可能会被添加和删除。此外,这些方法在NQueens文档化的示例中得到了实现,但在我所看到的示例中,分布班次、资源、时隙等示例中,我发现该领域的设计方式是希望修改规划实体,而不是添加或删除。

我不知道实体对象的添加/删除是否在某个地方使用过,比如在我尚未深入研究的路线规划问题中,以及这些添加和删除是显式的还是隐式的。那么,Optaplanner是否可以在不被要求的情况下添加或删除规划实体?

否,OptaPlanner开箱即用不会添加或删除计划实体实例,因为默认的移动选择器只修改计划实体,而不会创建或销毁它们。

OptaPlanner还没有任何通用的移动选择器可以做到这一点(一旦我们做到了,默认情况下它们就不会打开(。

如果您编写自定义移动(请参阅文档中的MoveListFactory和MoveIteratorFactory(,那么您可以选择在移动中添加/删除实体,这就是为什么存在这些方法,但很少有用户这样做。

最新更新