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

时间:2019-08-07 09:17:21

标签: drools optaplanner

我正在使用OptaPlanner解决规划问题。我使用 drools 进行分数计算。当我尝试打印出每个constraintMatch的justificationList时,除了域类对象之外,我得到的对象还为 SubnetworkTuple 的实例。这些似乎是用于 其内部实现。

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

禁酒规则:

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

java:

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());
                }
            }

我想知道如何解决该问题,因为这些额外的对象会使用户感到困惑。我可以检查实例。但这不是解决问题的正确方法。

提前感谢大家。

1 个答案:

答案 0 :(得分:0)

https://issues.jboss.org/browse/DROOLS-4423造成并固定为7.26。