[jboss-svn-commits] JBL Code SVN: r17435 - 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 Dec 29 12:01:20 EST 2007


Author: ge0ffrey
Date: 2007-12-29 12:01:20 -0500 (Sat, 29 Dec 2007)
New Revision: 17435

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

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-12-29 16:44:52 UTC (rev 17434)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationScoreRules.drl	2007-12-29 17:01:20 UTC (rev 17435)
@@ -159,11 +159,35 @@
 // Soft constraints
 // ############################################################################
 
-// TODO implement me
-//Two Exams in a Row
-//
-//Two Exams in a Day
-//
+// Two exams in a row which share students.
+//rule "twoExamsInARow"
+//    when
+//        $institutionalWeighting : InstitutionalWeighting();
+//        $topicConflict : TopicConflict($leftTopic : leftTopic, $rightTopic : rightTopic);
+//        $leftExam : Exam(topic == $leftTopic, $period : period);
+//        $rightExam : Exam(topic == $rightTopic, period == $period); // TODO FIXME
+//    then
+//        insertLogical(new IntConstraintOccurrence("twoExamsInARow", ConstraintType.NEGATIVE_SOFT,
+//            $topicConflict.getStudentSize() * $institutionalWeighting.getTwoInARowPenality(),
+//            $leftExam, $rightExam));
+//end
+
+// Two exams in a day which share students.
+rule "twoExamsInADay"
+    when
+        $institutionalWeighting : InstitutionalWeighting();
+        $topicConflict : TopicConflict($leftTopic : leftTopic, $rightTopic : rightTopic);
+        $leftExam : Exam(topic == $leftTopic, $period : period);
+        // This implementation is slower (package dialect is java, so it isn't MVEL's fault):
+        // $rightExam : Exam(topic == $rightTopic, period.dateInDays == $period.dateInDays);
+        // This implementation is faster:
+        $rightExam : Exam(topic == $rightTopic, eval(period.getDateInDays() == $period.getDateInDays()));
+    then
+        insertLogical(new IntConstraintOccurrence("twoExamsInADay", ConstraintType.NEGATIVE_SOFT,
+            $topicConflict.getStudentSize() * $institutionalWeighting.getTwoInADayPenality(),
+            $leftExam, $rightExam));
+end
+
 //Period Spread
 //
 //Mixed Durations
@@ -173,6 +197,7 @@
 //Room Penalty
 //
 //Period Penalty 
+// TODO implement me
 
 // Accumulate soft constraints
 rule "softConstraintsBroken"




More information about the jboss-svn-commits mailing list