[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