Optaplanner:评估解决方案

Pie*_*one 4 java drools optaplanner

我目前正在开发一个使用Optaplanner和drools的Java项目来解决Constraint Satisfaction问题.

解决方案很好.但是在解算器给我一个解决方案后,我想评估解决方案:我想知道哪些约束被违反,即哪些规则被触发了多少次.

这可能吗?我该如何开始呢?

Geo*_*met 5

请参阅文档部分在解算器外重用分数计算.它以简单的方式提供您需要的所有数据.

for (ConstraintMatchTotal constraintMatchTotal : guiScoreDirector.getConstraintMatchTotals()) {
    String constraintName = constraintMatchTotal.getConstraintName();
    Number weightTotal = constraintMatchTotal.getWeightTotalAsNumber();
    for (ConstraintMatch constraintMatch : constraintMatchTotal.getConstraintMatchSet()) {
        List<Object> justificationList = constraintMatch.getJustificationList();
        Number weight = constraintMatch.getWeightAsNumber();
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

请参阅Laune的答案,了解更高级的drools特定技巧/技巧.