[jboss-svn-commits] JBL Code SVN: r19216 - labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/curriculumcourse/solver.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Mar 23 08:59:11 EDT 2008
Author: ge0ffrey
Date: 2008-03-23 08:59:11 -0400 (Sun, 23 Mar 2008)
New Revision: 19216
Modified:
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/curriculumcourse/solver/curriculumCourseScoreRules.drl
Log:
roomStability
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/curriculumcourse/solver/curriculumCourseScoreRules.drl
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/curriculumcourse/solver/curriculumCourseScoreRules.drl 2008-03-23 12:52:54 UTC (rev 19215)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/curriculumcourse/solver/curriculumCourseScoreRules.drl 2008-03-23 12:59:11 UTC (rev 19216)
@@ -141,17 +141,6 @@
not Lecture(curriculumList contains $curriculum,
day == $day, timeslotIndex == ($timeslotIndex + 1)
);
-
-
-// $leftLecture : Lecture(curriculumList contains $curriculum,
-// $day : day, $leftTimeslotIndex : timeslotIndex
-// );
-// $rightLecture : Lecture(curriculumList contains $curriculum,
-// day == $day, timeslotIndex >= ($leftTimeslotIndex + 2), $rightTimeslotIndex : timeslotIndex
-// );
-// not Lecture(curriculumList contains $curriculum,
-// day == $day, timeslotIndex > $leftTimeslotIndex, timeslotIndex < $rightTimeslotIndex
-// );
then
insertLogical(new IntConstraintOccurrence("curriculumCompactness", ConstraintType.NEGATIVE_SOFT,
2,
@@ -160,6 +149,27 @@
// RoomStability: All lectures of a course should be given in the same room.
// Each distinct room used for the lectures of a course, but the first, counts as 1 point of penalty.
+rule "roomStability"
+ when
+ $course : Course();
+ $roomCount : Number(intValue > 1) from accumulate(
+ $room : Room()
+ and exists Lecture(course == $course, room == $room),
+ count($room)
+ );
+ // HACK to fix wierd truth maintance behavior in drools
+ // because making weight part of the equals/hashcode doesn't cut it
+ not IntConstraintOccurrence(
+ ruleId == "roomStability",
+ constraintType == ConstraintType.NEGATIVE_SOFT,
+ causes contains $course,
+ eval(weight != ($roomCount.intValue() - 1))
+ );
+ then
+ insertLogical(new IntConstraintOccurrence("roomStability", ConstraintType.NEGATIVE_SOFT,
+ ($roomCount.intValue() - 1),
+ $course));
+end
// Accumulate soft constraints
rule "softConstraintsBroken"
More information about the jboss-svn-commits
mailing list