Optaplanner:限制某些房间的课程

时间:2017-03-21 03:33:42

标签: drools optaplanner

我目前正在开设optaplanner的课程示例,而我只是尝试将课程分配到某些房间。与CS101一样,只能分配给Lab1,而不能分配给TheatreRoom1。

我目前正试图将课程限制在房间内并且不知道该怎么做

有任何关于如何实现这一目标的想法吗?我目前的规则如下。

rule "courseAllowedInRoom"
    when
        $room: Room()
        Lecture($course:course)
        eval($course.cantBeInRoom($room))
    then
        scoreHolder.addHardConstraintMatch(kcontext, -1);
end

我已经通过单元测试验证Course.cantbeInRoom似乎输出了正确的布尔值,但我仍然会在应该冲突的房间里进行讲座。

1 个答案:

答案 0 :(得分:1)

使用惩罚模式

class CourseRoomRestrictionPenalty {
  Course c;
  Room r;
}

rule "CourseRoomRestrictionPenalty"
when
    CourseRoomRestrictionPenalty($c : course, $r : room)
    Lecture(course == $c, room != $r)
then
    ...addHard...(..., -1);
end