[jboss-svn-commits] JBL Code SVN: r32329 - labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/resources/org/drools/planner/examples/nurserostering/solver.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Mar 31 14:04:51 EDT 2010
Author: ge0ffrey
Date: 2010-03-31 14:04:51 -0400 (Wed, 31 Mar 2010)
New Revision: 32329
Modified:
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/resources/org/drools/planner/examples/nurserostering/solver/nurseRosteringScoreRules.drl
Log:
nurse rostering: oneShiftPerDay
Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/resources/org/drools/planner/examples/nurserostering/solver/nurseRosteringScoreRules.drl
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/resources/org/drools/planner/examples/nurserostering/solver/nurseRosteringScoreRules.drl 2010-03-31 16:47:34 UTC (rev 32328)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/resources/org/drools/planner/examples/nurserostering/solver/nurseRosteringScoreRules.drl 2010-03-31 18:04:51 UTC (rev 32329)
@@ -35,15 +35,27 @@
when
$shift : Shift(requiredEmployeeSize > 0, $requiredEmployeeSize : requiredEmployeeSize);
- $totalEmployeeSize : Number(intValue < $requiredEmployeeSize) from accumulate(
+ $totalEmployeeSize : Number(intValue != $requiredEmployeeSize) from accumulate(
$assignment : EmployeeAssignment(shift == $shift),
count($assignment)
);
then
- insertLogical(new IntConstraintOccurrence("requiredEmployeeSizePerShift",
- ConstraintType.NEGATIVE_HARD, $requiredEmployeeSize - $totalEmployeeSize.intValue(), $shift));
+ insertLogical(new IntConstraintOccurrence("requiredEmployeeSizePerShift", ConstraintType.NEGATIVE_HARD,
+ Math.abs($requiredEmployeeSize - $totalEmployeeSize.intValue()),
+ $shift));
end
+// a nurse can only work one shift per day, i.e. no two shift can be assigned to the same nurse on a day.
+rule "oneShiftPerDay"
+ when
+ $leftEmployeeAssignment : EmployeeAssignment($leftId : id, $employee : employee, $shiftDate : shiftDate);
+ $rightEmployeeAssignment : EmployeeAssignment(employee == $employee, shiftDate == $shiftDate, id > $leftId);
+ then
+ insertLogical(new IntConstraintOccurrence("oneShiftPerDay", ConstraintType.NEGATIVE_HARD,
+ 1,
+ $leftEmployeeAssignment, $rightEmployeeAssignment));
+end
+
// ############################################################################
// Soft constraints
// ############################################################################
More information about the jboss-svn-commits
mailing list