[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