[jboss-svn-commits] JBL Code SVN: r32587 - 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
Fri Apr 16 08:06:19 EDT 2010
Author: ge0ffrey
Date: 2010-04-16 08:06:18 -0400 (Fri, 16 Apr 2010)
New Revision: 32587
Modified:
labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/resources/org/drools/planner/examples/nurserostering/solver/nurseRosteringScoreRules.drl
Log:
employee shift rostering: soft constraint idea
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-04-16 11:02:45 UTC (rev 32586)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/resources/org/drools/planner/examples/nurserostering/solver/nurseRosteringScoreRules.drl 2010-04-16 12:06:18 UTC (rev 32587)
@@ -133,7 +133,8 @@
// // The last day has no working day after it
// EmployeeAssignment(
// employee == $employee,
-// shiftDateDayIndex > $firstDayIndex, shiftDateDayIndex < ($firstDayIndex + $minimumIndexDiff), // Too few days
+// shiftDateDayIndex > $firstDayIndex,
+// shiftDateDayIndex < ($firstDayIndex + $minimumIndexDiff), // Too few days
// $lastDayIndex : shiftDateDayIndex
// );
// not EmployeeAssignment(employee == $employee, shiftDateDayIndex == ($lastDayIndex + 1));
@@ -152,7 +153,42 @@
// TODO
// Minimum number of consecutive free days
-// TODO
+//rule "minimumConsecutiveFreeDays"
+// when
+// $contractLine : ContractLine(
+// contractLineType == ContractLineType.CONSECUTIVE_FREE_DAYS, minimumEnabled == true,
+// $contract : contract, $minimumIndexDiff : minimumIndexDiff
+// )
+// $employee : Employee(contract == $contract)
+//
+// // The first day ...
+// $firstShiftDate : ShiftDate($firstDayIndex : dayIndex)
+// not EmployeeAssignment(employee == $employee, shiftDate == $firstShiftDate)
+// // ... has no free day before it
+// (
+// exists EmployeeAssignment(employee == $employee, shiftDateDayIndex == ($firstDayIndex - 1))
+// or not ShiftDate(dayIndex == ($firstDayIndex - 1))
+// )
+//
+// // The last day ...
+// $lastShiftDate : ShiftDate(
+// dayIndex > $firstDayIndex,
+// dayIndex < ($firstDayIndex + $minimumIndexDiff), // Too few days
+// $lastDayIndex : dayIndex)
+// not EmployeeAssignment(employee == $employee, shiftDate == $lastShiftDate)
+// // ... has no free day after it
+// (
+// exists EmployeeAssignment(employee == $employee, shiftDateDayIndex == ($lastDayIndex + 1))
+// or not ShiftDate(dayIndex == ($lastDayIndex + 1))
+// )
+//
+// // There are no working days between the first and last day
+// not EmployeeAssignment(employee == $employee, shiftDateDayIndex > $firstDayIndex && < $lastDayIndex)
+// then
+// insertLogical(new IntConstraintOccurrence("minimumConsecutiveFreeDays", ConstraintType.NEGATIVE_SOFT,
+// ($firstDayIndex + $minimumIndexDiff - $lastDayIndex) * $contractLine.getMinimumWeight(),
+// $employee, $firstDayIndex, $lastDayIndex));
+//end
// Maximum number of consecutive working weekends
// TODO
More information about the jboss-svn-commits
mailing list