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