[jboss-svn-commits] JBL Code SVN: r17437 - 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:39:42 EST 2007


Author: ge0ffrey
Date: 2007-12-29 12:39:42 -0500 (Sat, 29 Dec 2007)
New Revision: 17437

Modified:
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationScoreRules.drl
Log:
period and room penalty constraints

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 17:22:03 UTC (rev 17436)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationScoreRules.drl	2007-12-29 17:39:42 UTC (rev 17437)
@@ -160,6 +160,7 @@
 // ############################################################################
 
 // Two exams in a row which share students.
+// TODO implement me
 //rule "twoExamsInARow"
 //    when
 //        $institutionalWeighting : InstitutionalWeighting();
@@ -178,7 +179,7 @@
         $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):
+        // This implementation is slower (turn into MVEL complilation):
         // $rightExam : Exam(topic == $rightTopic, period.dateInDays == $period.dateInDays);
         // This implementation is faster:
         $rightExam : Exam(topic == $rightTopic, eval(period.getDateInDays() == $period.getDateInDays()));
@@ -189,16 +190,45 @@
 end
 
 //Period Spread
-//
-//Mixed Durations
-//
+// TODO implement me
+
+// Several exams in the same room and period have different durations
+rule "mixedDurations"
+    when
+        $institutionalWeighting : InstitutionalWeighting();
+        $leftExam : Exam($id : id, $period : period, $room : room, $leftTopic : topic);
+        Exam(period == $period, room == $room, id > $id, eval(topic.getDuration() != $leftTopic.getDuration()));
+    then
+        insertLogical(new IntConstraintOccurrence("mixedDurations", ConstraintType.NEGATIVE_SOFT,
+            $institutionalWeighting.getMixedDurationPenality(),
+            $leftExam)); // Hack so 4 mixed durations only yield 3 penalities instead of 6.
+end
+
 //Larger Exams Constraints
-//
-//Room Penalty
-//
-//Period Penalty 
 // TODO implement me
 
+// Period Penalty
+rule "periodPenalty"
+    when
+        $period : Period(penalty > 0);
+        $exam: Exam(period == $period);
+    then
+        insertLogical(new IntConstraintOccurrence("periodPenalty", ConstraintType.NEGATIVE_SOFT,
+            $period.getPenalty(),
+            $exam));
+end
+
+// Room Penalty
+rule "roomPenalty"
+    when
+        $room : Room(penalty > 0);
+        $exam: Exam(room == $room);
+    then
+        insertLogical(new IntConstraintOccurrence("roomPenalty", ConstraintType.NEGATIVE_SOFT,
+            $room.getPenalty(),
+            $exam));
+end
+
 // Accumulate soft constraints
 rule "softConstraintsBroken"
         salience -1 // Finish the other rules first (optional, for performance)




More information about the jboss-svn-commits mailing list