[jboss-svn-commits] JBL Code SVN: r17877 - 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
Tue Jan 15 14:30:43 EST 2008


Author: ge0ffrey
Date: 2008-01-15 14:30:43 -0500 (Tue, 15 Jan 2008)
New Revision: 17877

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/examinationSolverConfig.xml
Log:
fix score calculation bug for mixed durations

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	2008-01-15 19:19:57 UTC (rev 17876)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationScoreRules.drl	2008-01-15 19:30:43 UTC (rev 17877)
@@ -217,12 +217,21 @@
 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()));
+        $leftExam : Exam($leftId : id, $period : period, $room : room, $leftTopic : topic);
+        // 4 mixed durations of 100, 150, 200 and 200 should only result in 2 penalty's (for 100&150 and 100&200)
+        // leftExam has lowest id of the period+room combo
+        not Exam(period == $period, room == $room, id < $leftId);
+        // rightExam has a different duration
+        $rightExam : Exam(period == $period, room == $room, id > $leftId,
+            eval(topic.getDuration() != $leftTopic.getDuration()),
+            $rightId : id, $rightTopic : topic);
+        // rightExam has the lowest id of the period+room+rightDuration combo
+        not Exam(period == $period, room == $room, id < $rightId,
+            eval(topic.getDuration() == $rightTopic.getDuration()));
     then
         insertLogical(new IntConstraintOccurrence("mixedDurations", ConstraintType.NEGATIVE_SOFT,
             $institutionalWeighting.getMixedDurationPenality(),
-            $leftExam)); // Hack so 4 mixed durations only yield 3 penalities instead of 6.
+            $leftExam, $rightExam));
 end
 
 // Larger Exams towards the beginning of the examination session

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationSolverConfig.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationSolverConfig.xml	2008-01-15 19:19:57 UTC (rev 17876)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationSolverConfig.xml	2008-01-15 19:30:43 UTC (rev 17877)
@@ -6,9 +6,13 @@
     </scoreCalculator>
     <startingSolutionInitializerClass>org.drools.solver.examples.itc2007.examination.solver.ExaminationStartingSolutionInitializer</startingSolutionInitializerClass>
     <finish>
+        <!--
+            Official benchmark maximumSecondsSpend allowed on:
+            ge0ffrey's main pc: 429
+            ge0ffrey's old pc: 1152
+        -->
+        <maximumSecondsSpend>429</maximumSecondsSpend>
         <!--<feasableScore>-999999.0</feasableScore>-->
-        <maximumSecondsSpend>429</maximumSecondsSpend>
-        <!--<maximumSecondsSpend>5</maximumSecondsSpend>-->
         <!--<maximumStepCount>100</maximumStepCount>-->
     </finish>
     <selector>




More information about the jboss-svn-commits mailing list