自定义移动实现

时间:2016-06-02 00:49:01

标签: optaplanner

创建自定义移动时,需要实现方法“getPlanningEntities”,“getPlanningValues”。在这些方法中,需要将实体和值添加到列表中并返回。

在我的自定义移动中,我正在更改属于不同规划实体类的多个规划实体实例。

当打开FULL_ASSERT时,一切正常,没有错误。

我只是想知道“getPlanningEntities”返回的计划实体的顺序是否与“getPlanningValues”返回的值的顺序相同(这是我现在这样做但我想要知道“getPlanningEntities”和“getPlanningValues”是如何运作的。我知道它们用于entityTabu和valueTabu。

当调用“equals”和“hashCode”方法时,我打印文本只是为了看它们何时被调用但是没有出现?

1 个答案:

答案 0 :(得分:1)

Move.equals()hashCode()仅用于moveTabu(这不是很好,我几乎不用它)。

getPlanningEntities()getPlanningValues()的返回值的顺序并不重要,但在大多数情况下它们会返回不同类型的元素(链式情况除外)。例如,在cloudBalancing中,getPlanningEntities()返回一组进程,getPlanningValues()返回一组计算机。在更改移动中,这两个集合都是单例。

请参阅CloudComputerChangeMoveCloudProcessSwapMove获取灵感。