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 方法。
在示例任务分配(以及其他示例)中,在 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 方法。