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

时间:2016-03-30 17:46:03

标签: optaplanner

我有类似的东西:

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

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

我正在使用optaplanner 6.1。

提前感谢。

1 个答案:

答案 0 :(得分:0)

这会打破OptaPlanner,因为同一解决方案的得分会随着时间的推移而改变(这也意味着比较2种不同的解决方案不能公平地进行 - 所以如果将新的工作得分与最佳得分进行比较(计算得出) x秒前)它破了。)

相反,在求解器开始之前,将当前时间millis设置为单例:

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

并将其作为问题事实添加并在分数规则中使用(请参阅考试示例' s InstitutionParameterization)。