[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