我正在尝试用OptaPlanner解决时间表问题,但我面临的问题可能与克隆问题有关。为什么我的计划实体收集方法看起来像
@PlanningEntityCollectionProperty
public List<Lesson> getLessons() {
return getProject().getLessons();
}
我收到错误
java.lang.IllegalStateException:未按预期克隆solutionProperty(课程)。 FieldAccessingSolutionCloner无法识别该属性的字段,可能是因为其字段名称不同。
但是,当方法看起来像
时 @PlanningEntityCollectionProperty
public List<Lesson> getLessons() {
if (lessons == null) {
lessons = getProject().getLessons();
}
return lessons;
}
一切都好。可能是什么原因?为什么我收到此错误?谢谢你的帮助。
答案 0 :(得分:0)
通用克隆程序(计划克隆最佳解决方案以便工作解决方案可以降级)不幸的是,目前无法处理第一段代码。
有2种解决方法:
我不会用懒惰的初始化技巧来做,因为你可能无法保证在计划克隆发生之前至少调用过一次getter。