[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