Drools OptaPlanner:我试图打印出ConstraintMatch的JusticationList,但得到了SubnetworkTuple的对象,这些对象不是我的域类

Drools OptaPlanner:我试图打印出ConstraintMatch的JusticationList,但得到了SubnetworkTuple的对象,这些对象不是我的域类,drools,optaplanner,Drools,Optaplanner,我正在使用OptaPlanner解决一个规划问题。我用口水来计算分数。当我试图打印出每个constraintMatch的JusticationList时,除了我的域类对象之外,我还得到了子网络元组的实例。这些似乎是在中使用的对象 它的内部执行 我以前没有使用过drools规则引擎:)。这是我第一次使用OptaPlanner。据我所知,JusticationList应该包含该规则中涉及的所有对象 流口水规则: rule "roomPriority" when EduClas

我正在使用OptaPlanner解决一个规划问题。我用口水来计算分数。当我试图打印出每个constraintMatch的JusticationList时,除了我的域类对象之外,我还得到了子网络元组的实例。这些似乎是在中使用的对象 它的内部执行

我以前没有使用过drools规则引擎:)。这是我第一次使用OptaPlanner。据我所知,JusticationList应该包含该规则中涉及的所有对象

流口水规则:

rule "roomPriority"
    when
        EduClassRoomPriority($left : leftEduClass, $right : rightEduClass, $priority : priority)
        exists(LectureOfEduClass(eduClass == $left,$room1 : room ) and LectureOfEduClass(eduClass == $right, $room1 != room))
    then
        scoreHolder.addSoftConstraintMatch(kcontext,-$priority);
end
for (ConstraintMatchTotal constraintMatchTotal : constraintMatchTotals) {
                String constraintName = constraintMatchTotal.getConstraintName();
                Score totalScore = constraintMatchTotal.getScore();
                Set<ConstraintMatch> constraintMatchSet = constraintMatchTotal.getConstraintMatchSet();
                logger.info(totalScore.toShortString() + " constraint(" + constraintName + ") has " + constraintMatchSet.size() + " matches");
                for (ConstraintMatch constraintMatch : constraintMatchSet) {
                    List<Object> justificationList = constraintMatch.getJustificationList();
                    Score score = constraintMatch.getScore();
                    logger.info(score.toShortString() + justificationList.toString());
                }
            }
java:

rule "roomPriority"
    when
        EduClassRoomPriority($left : leftEduClass, $right : rightEduClass, $priority : priority)
        exists(LectureOfEduClass(eduClass == $left,$room1 : room ) and LectureOfEduClass(eduClass == $right, $room1 != room))
    then
        scoreHolder.addSoftConstraintMatch(kcontext,-$priority);
end
for (ConstraintMatchTotal constraintMatchTotal : constraintMatchTotals) {
                String constraintName = constraintMatchTotal.getConstraintName();
                Score totalScore = constraintMatchTotal.getScore();
                Set<ConstraintMatch> constraintMatchSet = constraintMatchTotal.getConstraintMatchSet();
                logger.info(totalScore.toShortString() + " constraint(" + constraintName + ") has " + constraintMatchSet.size() + " matches");
                for (ConstraintMatch constraintMatch : constraintMatchSet) {
                    List<Object> justificationList = constraintMatch.getJustificationList();
                    Score score = constraintMatch.getScore();
                    logger.info(score.toShortString() + justificationList.toString());
                }
            }
for(CONSTRAINTMATCHOTAL CONSTRAINTMATCHOTAL:CONSTRAINTMATCHOTALS){
字符串constraintName=constraintMatchTotal.getConstraintName();
Score totalScore=constraintMatchTotal.getScore();
设置constraintMatchSet=constraintMatchTotal.getConstraintMatchSet();
logger.info(totalScore.toShortString()+“约束(“+constraintName+”)具有“+constraintMatchSet.size()+”匹配项”);
用于(约束匹配约束匹配:约束匹配集){
List justicationList=constraintMatch.getjusticationList();
Score Score=constraintMatch.getScore();
logger.info(score.toShortString()+justicationList.toString());
}
}
我想知道我能做些什么来解决这个问题,因为这些额外的对象会让用户感到困惑。我可以做检查的例子。但这不应该是解决问题的正确方法


提前感谢所有人。

7.26的原因和修复者。

我必须至少提供哪些文件?为了清楚起见,除了相关的代码片段之外,我还需要删除其他任何东西吗?基本上是一个java应用程序,如果它运行,就会演示这个问题。代码越少越好,就实际情况而言。我上传了一个。请检查一下。谢谢:)