Optaplanner,如何在规则开始时捕捉当前时间以在分数中使用它



我有这样的东西:

   scoreHolder.addSoftConstraintMatch(kcontext, (System.currentTimeMillis()-$time.getTime()));

我只想在启动规则时使用当前时间,而不想在运行规则时更新。只是为了在规则被触发的第一刻捕捉当前时间,并且直到求解结束才改变。

我使用的是optaplanner 6.1。

提前谢谢。

这将打破OptaPlanner,因为同一解决方案的分数会随着时间的推移而变化(这也意味着比较两个不同的解决方案是不公平的——所以如果将新的工作分数与最佳分数(x秒前计算的)进行比较,它就会打破)。

相反,在求解器开始之前,在单例中设置当前时间毫秒:

 myParametrization.setStartingMillis(System.currentMillis());
 ... = solver.solve(...);

并将其添加为问题事实,并在分数规则中使用(参见考试示例的InstitutionParameterization)。

最新更新