[jboss-svn-commits] JBL Code SVN: r16476 - 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
Fri Nov 9 13:51:50 EST 2007
Author: ge0ffrey
Date: 2007-11-09 13:51:50 -0500 (Fri, 09 Nov 2007)
New Revision: 16476
Modified:
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationScoreRules.drl
Log:
period hard constraint rules
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-11-09 17:35:40 UTC (rev 16475)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationScoreRules.drl 2007-11-09 18:51:50 UTC (rev 16476)
@@ -48,12 +48,51 @@
);
eval($totalStudentListSize.intValue() > $capacity);
then
- insertLogical(new WorkaroundMultiplePatternAccumulate("roomCapacityTooSmall", $room)); // TODO FIXME, use $period too
+ insertLogical(new WorkaroundMultiplePatternAccumulate("roomCapacityTooSmall", $period, $room));
end
+// Period hard constraints
+rule "periodHardConstraintExamCoincidence"
+ when
+ $periodHardConstraint : PeriodHardConstraint(
+ periodHardConstraintType == PeriodHardConstraintType.EXAM_COINCIDENCE,
+ $leftSideTopic : leftSideTopic,
+ $rightSideTopic : rightSideTopic
+ )
+ Exam(topic == $leftSideTopic, $leftSidePeriod : period);
+ Exam(topic == $rightSideTopic, period != $leftSidePeriod);
+ // TODO make sure that leftSide and rightSide don't share a student
+ then
+ insertLogical(new WorkaroundMultiplePatternAccumulate("periodHardConstraintExamCoincidence", $periodHardConstraint));
+end
+rule "periodHardConstraintExclusion"
+ when
+ $periodHardConstraint : PeriodHardConstraint(
+ periodHardConstraintType == PeriodHardConstraintType.EXCLUSION,
+ $leftSideTopic : leftSideTopic,
+ $rightSideTopic : rightSideTopic
+ )
+ Exam(topic == $leftSideTopic, $leftSidePeriod : period);
+ Exam(topic == $rightSideTopic, period == $leftSidePeriod);
+ then
+ insertLogical(new WorkaroundMultiplePatternAccumulate("periodHardConstraintExclusion", $periodHardConstraint));
+end
+rule "periodHardConstraintAfter"
+ when
+ $periodHardConstraint : PeriodHardConstraint(
+ periodHardConstraintType == PeriodHardConstraintType.AFTER,
+ $leftSideTopic : leftSideTopic,
+ $rightSideTopic : rightSideTopic
+ )
+ Exam(topic == $leftSideTopic, $leftSidePeriod : period);
+ Exam(topic == $rightSideTopic, (period.dateInDays < $leftSidePeriod.dateInDays)
+ || (period.dateInDays == $leftSidePeriod.dateInDays
+ && period.startTimeInMinutes <= $leftSidePeriod.startTimeInMinutes));
+ then
+ insertLogical(new WorkaroundMultiplePatternAccumulate("periodHardConstraintAfter", $periodHardConstraint));
+end
+
//
-//PeriodRelated: Ordering requirements not obeyed.
-//
//RoomRelated: Room requirements not obeyed
More information about the jboss-svn-commits
mailing list