我一直在试图实现一个影子变量,以便我的一个问题事实可以跟踪哪个计划实体与它有关,最终目标是简化/加速我的规则。InverseRelationShadowVariable必须属于一个planningEntity吗?
我正在查看optaplanner doc about shadow variables,特别是cloudBalancing示例。在“正常”云平衡中,类CloudComputer
是而不是 a planningEntity。但在下面的例子中,它被注解为一个planningEntity。
我们是否明白,“托管”影子变量的类应该是一个计划实体?我认为一个planningEntity必须有一个规划变量,但CloudComputer
没有。如果答案是肯定的,我建议在文档中更明确一些。如果答案为否,那么在这个例子中有一个错误(@PlanningEntity
注释应该从CloudComputer中删除)。
下面的例子是从DOC:
对于非链可变规划,双向关系必须是多对一的关系。为了映射表规划变量之间的双向关系,注释主侧(这是真实的一面),作为一个正常的规划变量:
@PlanningEntity
public class CloudProcess {
@PlanningVariable(...)
public CloudComputer getComputer() {
return computer;
}
public void setComputer(CloudComputer computer) {...}
}
和:
@PlanningEntity
public class CloudComputer {
@InverseRelationShadowVariable(sourceVariableName = "computer")
public List<CloudProcess> getProcessList() {
return processList;
}
}
而且,这是真的所有这一切都需要,以便在解决期间克隆CloudProcess
以使processList保持最新状态?
您能否指出文档中的哪些位置存在混淆,计划实体可能包含阴影变量而不是'@ PlanningVariable'?我想解决这个问题。 –
@GeoffreyDeSmet在4.3.3(关于计划实体的部分)中指出:“每个计划实体类都有一个或多个计划变量。”另外,我认为我没有在影子变量的章节中看到关于计划实体的任何提及,因为这是一个非常重要的问题,他们应该在计划实体类中。我意识到这就是为什么我的代码不工作,只有当我试图复制该示例,并注意到额外的注释。 –
固定为7.0文档 –