java—optaplanner是否可以自动添加或删除规划实体?

acruukt9  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(372)

我是optaplanner的新手。我想我已经了解了什么是计划实体,以及计划变量,真正的或一些反向的影子。我已经开始研究文档、示例和老stackoverflow的问题,但仍有一些疑问。
当我试图使增量我的分数计算器,我发现一些意想不到的方法在incrementalscorecalculator接口。加上beforevariablechanged和aftervariablechanged,我发现了entityadded和entityremoved,这让我怀疑实体对象可能会被添加和删除。此外,这些方法是在nqueens文档化的示例中实现的,但是在我所看到的示例中,例如分配班次、资源、时隙等,我发现域的设计方式是预期修改规划实体,而不是添加或删除。
我不知道实体对象的添加/删除是否在某个地方使用,比如我没有深入研究的路线规划问题,以及这些添加和删除是显式的还是隐式的。那么,optaplanner是否可以在未经要求的情况下添加或删除规划实体?

cig3rfwq

cig3rfwq1#

不,optaplanner开箱即用不会添加或删除规划实体示例,因为默认的移动选择器只修改规划实体,不会创建或销毁它们。
optaplanner还没有任何通用的移动选择器可以做到这一点(而且一旦我们这样做了,它们在默认情况下就不会启用)。
如果您编写了一个自定义move(请参阅文档中的movelistfactory和moveiteratorfactory),那么您可以选择在moves中添加/删除实体,这就是为什么存在这些方法,但是很少有用户这样做。

相关问题