OptaPlanner,在VariableListener中设置另一个影子变量

OptaPlanner, set the other shadow variable in the VariableListener

在示例任务分配(以及其他示例)中,在 VariableListener() 中,仅更新传入的 PlanningEntity 对象的影子变量。喜欢

@Override
public void afterVariableChanged(ScoreDirector<TaskAssigningSolution> scoreDirector, Task task) {
    updateStartTime(scoreDirector, task);
}

参数任务对象的影子变量已更新。我认为一个解决方案对象将不断更新,直到它的所有 PlanningEntity/PlanningVariable 都被填满。每当 PlanningVariable 发生变化时,afterVariableChanged() 将被调用,然后将计算规则以更新分数。我的问题是,如果我在 afterVariableChanged() 中更新另一个实体的影子变量,会不会有什么问题?不仅是传入对象的影子变量。我可以通过调用 scoreDirector.getWorkingSolution().

来获取另一个实体

一个影子变量可以更新另一个影子变量。

例如,当一个实例影子变量 C(源自 A)发生变化时,它也可能会改变影子变量 E(源自 C 和 B)的 1 个或多个实例:

请根据需要调用 before/after 方法。