我如何在 optaplanner 中获得 'current' scoredirector - 这有关系吗?
How do I get the 'current' scoredirector in optaplanner - and does it matter?
与一样,我想在再次解决 Optaplanner 问题(重复规划)之前删除实体。
但我不确定如何获得在生成第一个解决方案时使用的得分指导器以及在删除实体时在得分指导器上调用 Before/AfterEntityRemoved 和 Before/AfterVariableChanged 的重要性?
假设我删除了一个 Vehicle 和分配给它的所有客户——而且我还没有自己构建一个 scoreDirector——然后我可以忽略对 scoredirector 的调用方法并且仍然能够用正确计算分数?
1) 您确定不删除实体,而只想让它们保持未分配状态吗?如果是,则执行过度约束规划(参见文档)。
2) 如果您在 将解决方案实例提供给 solve(Solution s)
之前删除了实体,那么您可以在不通知 ScoreDirector 的情况下删除它们。
3) 移除实体通常会改变规划问题,因此这就是 实时规划 (= 在解决过程中改变问题)。所以如果你想在求解过程中移除实体,需要在 addProblemFactChange()
中完成。请参阅有关如何获得 ScoreDirector
以及您的通知义务的文档。
与
但我不确定如何获得在生成第一个解决方案时使用的得分指导器以及在删除实体时在得分指导器上调用 Before/AfterEntityRemoved 和 Before/AfterVariableChanged 的重要性?
假设我删除了一个 Vehicle 和分配给它的所有客户——而且我还没有自己构建一个 scoreDirector——然后我可以忽略对 scoredirector 的调用方法并且仍然能够用正确计算分数?
1) 您确定不删除实体,而只想让它们保持未分配状态吗?如果是,则执行过度约束规划(参见文档)。
2) 如果您在 将解决方案实例提供给 solve(Solution s)
之前删除了实体,那么您可以在不通知 ScoreDirector 的情况下删除它们。
3) 移除实体通常会改变规划问题,因此这就是 实时规划 (= 在解决过程中改变问题)。所以如果你想在求解过程中移除实体,需要在 addProblemFactChange()
中完成。请参阅有关如何获得 ScoreDirector
以及您的通知义务的文档。