Multithreading Optaplanner多线程尝试在自定义移动时产生“缺少重基”
我将Optaplanner库从7.5更新到7.9,以便与NurseServering代码的变体一起使用,并使用发行说明,例如,一些方法名称更改为成功重建并重新运行。然后,我将用于多线程处理的moveThreadCount xml行添加到我的解算器配置xml中。 汽车 运行然后立即抛出一个错误: 原因:java.lang.UnsupportedOperationException:自定义移动类westgranite.staffrostering.solver.move.EmployeeChangeMove未实现rebase方法,因此无法进行多线程解决。 我有很多自定义动作。在发行说明中,我没有看到任何关于需要添加rebase方法的参考,在当前更新的关于构建自定义移动的文档部分中,我也没有看到任何关于rebase方法的参考。Multithreading Optaplanner多线程尝试在自定义移动时产生“缺少重基”,multithreading,optaplanner,Multithreading,Optaplanner,我将Optaplanner库从7.5更新到7.9,以便与NurseServering代码的变体一起使用,并使用发行说明,例如,一些方法名称更改为成功重建并重新运行。然后,我将用于多线程处理的moveThreadCount xml行添加到我的解算器配置xml中。 汽车 运行然后立即抛出一个错误: 原因:java.lang.UnsupportedOperationException:自定义移动类westgranite.staffrostering.solver.move.EmployeeChang
有人能给我指一下正确的路吗?谢谢 我建议阅读这篇优秀的博文:因为它更深入地解释了多线程解决的工作原理 我还建议阅读关于rebase方法的javadoc,它应该为您指出正确的方向: 下面是一个例子:
public class CloudComputerChangeMove extends AbstractMove<CloudBalance> {
private CloudProcess cloudProcess;
private CloudComputer toCloudComputer;
...
@Override
public CloudComputerChangeMove rebase(ScoreDirector<CloudBalance> destinationScoreDirector) {
return new CloudComputerChangeMove(
destinationScoreDirector.lookUpWorkingObject(cloudProcess),
destinationScoreDirector.lookUpWorkingObject(toCloudComputer));
}
}
请看Nick的答案,但丢失的文档/升级配方说明确实漏掉了,谢谢您的报道。谢谢Geoffrey和Nick!PS:升级到7.12+——修复了多线程解决中的错误。javadoc链接很有用,谢谢。虽然我同意这是一个很好的观点,但至少在当前的博客文章中没有提到需要新的重新设置基础代码。