Optaplanner:将课程限制在某些房间
Optaplanner: Restricting Courses to certain rooms
我目前正在以 optaplanner 的课程示例为基础,并且我正在尝试仅将课程分配给某些房间。比如CS101只能分配给Lab1,不能分配给TheatreRoom1。
我目前正在尝试将课程限制在房间内,但不知道该怎么做
对如何实现这一点有什么想法吗?我目前的规则如下。
rule "courseAllowedInRoom"
when
$room: Room()
Lecture($course:course)
eval($course.cantBeInRoom($room))
then
scoreHolder.addHardConstraintMatch(kcontext, -1);
end
我已经通过单元测试验证 Course.cantbeInRoom
似乎正在输出正确的布尔值,但我仍然在应该冲突的房间中得到讲座。
使用惩罚模式
class CourseRoomRestrictionPenalty {
Course c;
Room r;
}
rule "CourseRoomRestrictionPenalty"
when
CourseRoomRestrictionPenalty($c : course, $r : room)
Lecture(course == $c, room != $r)
then
...addHard...(..., -1);
end
我目前正在以 optaplanner 的课程示例为基础,并且我正在尝试仅将课程分配给某些房间。比如CS101只能分配给Lab1,不能分配给TheatreRoom1。
我目前正在尝试将课程限制在房间内,但不知道该怎么做
对如何实现这一点有什么想法吗?我目前的规则如下。
rule "courseAllowedInRoom"
when
$room: Room()
Lecture($course:course)
eval($course.cantBeInRoom($room))
then
scoreHolder.addHardConstraintMatch(kcontext, -1);
end
我已经通过单元测试验证 Course.cantbeInRoom
似乎正在输出正确的布尔值,但我仍然在应该冲突的房间中得到讲座。
使用惩罚模式
class CourseRoomRestrictionPenalty {
Course c;
Room r;
}
rule "CourseRoomRestrictionPenalty"
when
CourseRoomRestrictionPenalty($c : course, $r : room)
Lecture(course == $c, room != $r)
then
...addHard...(..., -1);
end