[jboss-svn-commits] JBL Code SVN: r16779 - 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
Sat Nov 24 08:29:44 EST 2007


Author: ge0ffrey
Date: 2007-11-24 08:29:44 -0500 (Sat, 24 Nov 2007)
New Revision: 16779

Modified:
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationScoreRules.drl
Log:
calculate student size too (breaks performance even more...)

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-24 12:11:46 UTC (rev 16778)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationScoreRules.drl	2007-11-24 13:29:44 UTC (rev 16779)
@@ -17,6 +17,8 @@
 import org.drools.solver.examples.itc2007.examination.domain.Student;
 import org.drools.solver.examples.itc2007.examination.domain.Topic;
 
+import java.util.HashSet;
+
 global HardAndSoftConstraintScoreCalculator scoreCalculator;
 
 // ############################################################################
@@ -26,12 +28,15 @@
 // Two exams in the same period which share students.
 rule "conflictingExamsInSamePeriod"
     when
-        $student : Student();
-        $exam : Exam($id : id, topic.studentList contains $student, $period : period);
-        Exam(period == $period, id > $id, topic.studentList contains $student);
+        $leftExam : Exam($id : id, $period : period, $leftStudentList : topic.studentList);
+        $rightExam : Exam(period == $period, id > $id, $rightStudentList : topic.studentList);
+        $studentSet : HashSet( size > 0 )
+            from collect(
+                Student( this memberOf $leftStudentList, this memberOf $rightStudentList)
+            );
     then
         insertLogical(new IntConstraintOccurrence("conflictingExamsInSamePeriod", ConstraintType.NEGATIVE_HARD,
-            $exam));
+            $leftExam, $rightExam));
 end
 
 // More time required during a period than available in that period.




More information about the jboss-svn-commits mailing list