我目前正在开设optaplanner的课程示例,而我只是尝试将课程分配到某些房间。与CS101一样,只能分配给Lab1,而不能分配给TheatreRoom1。
我目前正试图将课程限制在房间内并且不知道该怎么做
有任何关于如何实现这一目标的想法吗?我目前的规则如下。
rule "courseAllowedInRoom"
when
$room: Room()
Lecture($course:course)
eval($course.cantBeInRoom($room))
then
scoreHolder.addHardConstraintMatch(kcontext, -1);
end
我已经通过单元测试验证Course.cantbeInRoom
似乎输出了正确的布尔值,但我仍然会在应该冲突的房间里进行讲座。
答案 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