Java 如何从OptaPlanner中以前的解决方案中获取ScoreDirectorFactory

Java 如何从OptaPlanner中以前的解决方案中获取ScoreDirectorFactory,java,optaplanner,Java,Optaplanner,我在OptaPlanner中有一个以前已解决的解决方案,我希望在不运行解算器的情况下从该解决方案中检索ScoreDirectorFactory。通过当前的API可以实现吗 下面是我想要实现的一个例子: MyPlanningSolution mpe=getMySolution(); SolverFactory SolverFactory=SolverFactory.createFromXmlResource(配置); Solver Solver=solverFactory.buildSolver(

我在OptaPlanner中有一个以前已解决的解决方案,我希望在不运行解算器的情况下从该解决方案中检索ScoreDirectorFactory。通过当前的API可以实现吗

下面是我想要实现的一个例子:

MyPlanningSolution mpe=getMySolution();
SolverFactory SolverFactory=SolverFactory.createFromXmlResource(配置);
Solver Solver=solverFactory.buildSolver();
解算器。设置解算器(mpe);
ScoreDirectorFactory=solver.getScoreDirectorFactory();
通过固定所有计划实体并将终止时间设置为0秒,我成功获得了ScoreDirectorFactory。这对我来说似乎是一条弯路,因为我必须免费启动解算器。还有别的办法吗?

参见


我们正在添加
SolverFactory.getScoreDirectorFactory()
并弃用
Solver.getScoreDirectorFactory()

您不必启动解算器(无
solve()
调用),但您是对的-这是一个API缺口。请在issues.jboss.org上创建一个jira,并将其设置为被阻止。好的,我会这样做。但是,我认为solve调用仍然是必要的,因为这是您提供计划解决方案的地方。例如,`SolverFactory SolverFactory=SolverFactory.createFromXmlResource(无移动配置);Solver Solver=solverFactory.buildSolver();scheduleTimes().forEach(scheduleTime->scheduleTime.isPinned(true));求解(计划);setSolverExplainion(solver.getScoreDirectorFactory())`在UI中,您希望对最佳解决方案事件做出反应,其中包括最佳解决方案(=工作解决方案的计划克隆)。最好的解决方案是您想要向UI解释的(通过起诉等)。这一点已经解决了。它来自解算器是不相关的。它必须使用自己的ScoreDirector。它有自己的解决方案实例,因为最佳解决方案不是有效的解决方案。没有理由把它和解算器联系起来,好吗?