[jboss-svn-commits] JBL Code SVN: r16476 - labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Nov 9 13:51:50 EST 2007


Author: ge0ffrey
Date: 2007-11-09 13:51:50 -0500 (Fri, 09 Nov 2007)
New Revision: 16476

Modified:
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationScoreRules.drl
Log:
period hard constraint rules

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationScoreRules.drl
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationScoreRules.drl	2007-11-09 17:35:40 UTC (rev 16475)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationScoreRules.drl	2007-11-09 18:51:50 UTC (rev 16476)
@@ -48,12 +48,51 @@
     );
     eval($totalStudentListSize.intValue() > $capacity);
   then
-    insertLogical(new WorkaroundMultiplePatternAccumulate("roomCapacityTooSmall", $room)); // TODO FIXME, use $period too
+    insertLogical(new WorkaroundMultiplePatternAccumulate("roomCapacityTooSmall", $period, $room));
 end
 
+// Period hard constraints
+rule "periodHardConstraintExamCoincidence"
+  when
+    $periodHardConstraint : PeriodHardConstraint(
+      periodHardConstraintType == PeriodHardConstraintType.EXAM_COINCIDENCE,
+      $leftSideTopic : leftSideTopic,
+      $rightSideTopic : rightSideTopic
+    )
+    Exam(topic == $leftSideTopic, $leftSidePeriod : period);
+    Exam(topic == $rightSideTopic, period != $leftSidePeriod);
+    // TODO make sure that leftSide and rightSide don't share a student
+  then
+    insertLogical(new WorkaroundMultiplePatternAccumulate("periodHardConstraintExamCoincidence", $periodHardConstraint));
+end
+rule "periodHardConstraintExclusion"
+  when
+    $periodHardConstraint : PeriodHardConstraint(
+      periodHardConstraintType == PeriodHardConstraintType.EXCLUSION,
+      $leftSideTopic : leftSideTopic,
+      $rightSideTopic : rightSideTopic
+    )
+    Exam(topic == $leftSideTopic, $leftSidePeriod : period);
+    Exam(topic == $rightSideTopic, period == $leftSidePeriod);
+  then
+    insertLogical(new WorkaroundMultiplePatternAccumulate("periodHardConstraintExclusion", $periodHardConstraint));
+end
+rule "periodHardConstraintAfter"
+  when
+    $periodHardConstraint : PeriodHardConstraint(
+      periodHardConstraintType == PeriodHardConstraintType.AFTER,
+      $leftSideTopic : leftSideTopic,
+      $rightSideTopic : rightSideTopic
+    )
+    Exam(topic == $leftSideTopic, $leftSidePeriod : period);
+    Exam(topic == $rightSideTopic, (period.dateInDays < $leftSidePeriod.dateInDays)
+        || (period.dateInDays == $leftSidePeriod.dateInDays
+        && period.startTimeInMinutes <= $leftSidePeriod.startTimeInMinutes));
+  then
+    insertLogical(new WorkaroundMultiplePatternAccumulate("periodHardConstraintAfter", $periodHardConstraint));
+end
+
 //
-//PeriodRelated: Ordering requirements not obeyed.
-//
 //RoomRelated: Room requirements not obeyed
 
 




More information about the jboss-svn-commits mailing list