我有类似的东西:
scoreHolder.addSoftConstraintMatch(kcontext, (System.currentTimeMillis()-$time.getTime()));
我想在仅触发规则的开始时使用当前时间,而不是在运行规则期间更新。只是为了捕捉规则被触发的第一时刻的当前时间,并且直到解决结束才会改变。
我正在使用optaplanner 6.1。
提前感谢。
答案 0 :(得分:0)
这会打破OptaPlanner,因为同一解决方案的得分会随着时间的推移而改变(这也意味着比较2种不同的解决方案不能公平地进行 - 所以如果将新的工作得分与最佳得分进行比较(计算得出) x秒前)它破了。)
相反,在求解器开始之前,将当前时间millis设置为单例:
myParametrization.setStartingMillis(System.currentMillis());
... = solver.solve(...);
并将其作为问题事实添加并在分数规则中使用(请参阅考试示例' s InstitutionParameterization
)。