timefold:影子变量和克隆

问题描述 投票:0回答:1

我有型号:

  1. PlanningEntity SelectionNode 与 PlanningVariable SelectionVariant
  2. SelectionVariant 与 SelectionTeam 字段列表
  3. 选拔团队

SelectionNode 中包含 SelectionTeam 列表的选项(不带 SelectionVariant)不适合我,因为它不仅仅是任何一组 SelectionTeam,而只是指定的变体。

我需要 SelectionTeam 中的 SelectionNode 列表。

有一些带有两个类的示例(例如 FlightAssignment 和 Employee),但是我如何在我的案例中使用影子变量?

我尝试在 SelectionTeam 中的 SelectionNode 列表中添加 @ShadowVariable (带有 VariableListener),但是当我尝试使用这个集合(SelectionNode 列表)时,我得到 java.util.ConcurrentModificationException,我想是因为它在解决方案克隆时不会克隆。

optaplanner timefold
1个回答
0
投票

从 Timefold 文档中,您可以将

@DeepPlanningClone
添加到
SelectionTeam
类,这将导致它被克隆(从而克隆其
SelectionNode
计划实体列表)。

但是,我怀疑

ConcurrentModificationException
是由于不克隆引起的(因为求解器在求解过程中不会从集合中添加或删除元素);您在迭代时是否在集合中添加/删除?请参阅此 Stack Overflow 答案,了解有关解决
ConcurrentModificationException
的详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.