[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