如何在optaplanner中解释分数之后获得所有约束匹配?

jogvjijk  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(271)

**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

5天前关门了。
改进这个问题
我试着用 scoreExplanation() 解释我的计划得分,但结果中只显示了部分理由。

System.out.println(scoreManager.explainScore(solution));

因为我想找到所有约束的匹配来判断我的计划是否合理,所以我可以显示所有省略的理由吗?

oaxa6hgo

oaxa6hgo1#

是的,你可以用 ScoreManager 应用程序编程接口:

ScoreManager<CloudBalance, HardSoftScore> scoreManager = ScoreManager.create(solverFactory);
ScoreExplanation<CloudBalance, HardSoftScore> scoreExplanation = scoreManager.explain(cloudBalance);

Collection<ConstraintMatchTotal<HardSoftScore>> constraintMatchTotals = scoreExplanation.getConstraintMatchTotalMap().values();
for (ConstraintMatchTotal<HardSoftScore> constraintMatchTotal : constraintMatchTotals) {
    String constraintName = constraintMatchTotal.getConstraintName();
    // The score impact of that constraint
    HardSoftScore totalScore = constraintMatchTotal.getScore();

    for (ConstraintMatch<HardSoftScore> constraintMatch : constraintMatchTotal.getConstraintMatchSet()) {
        List<Object> justificationList = constraintMatch.getJustificationList();
        HardSoftScore score = constraintMatch.getScore();
        ...
    }
}

有关更多信息,请参阅scoremanager上的文档。

相关问题