[jboss-svn-commits] JBL Code SVN: r32366 - in labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main: resources/org/drools/planner/examples/nurserostering/solver and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Apr 2 09:15:34 EDT 2010


Author: ge0ffrey
Date: 2010-04-02 09:15:32 -0400 (Fri, 02 Apr 2010)
New Revision: 32366

Modified:
   labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/EmployeeAssignment.java
   labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/resources/org/drools/planner/examples/nurserostering/solver/nurseRosteringScoreRules.drl
Log:
nurse rostering: maximumConsecutiveWorkingDays (untested!)

Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/EmployeeAssignment.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/EmployeeAssignment.java	2010-04-01 23:23:23 UTC (rev 32365)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/domain/EmployeeAssignment.java	2010-04-02 13:15:32 UTC (rev 32366)
@@ -108,4 +108,8 @@
         return employee + "(" + shiftDate + ")" + "->" + shift;
     }
 
+    public int getShiftDateDayIndex() {
+        return getShiftDate().getDayIndex();
+    }
+
 }

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-01 23:23:23 UTC (rev 32365)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/resources/org/drools/planner/examples/nurserostering/solver/nurseRosteringScoreRules.drl	2010-04-02 13:15:32 UTC (rev 32366)
@@ -70,6 +70,70 @@
 // Soft constraints
 // ############################################################################
 
+
+// Maximum number of assignments
+// TODO
+
+// Minimum number of assignments
+// TODO
+
+// Maximum number of consecutive working days
+rule "maximumConsecutiveWorkingDays"
+    when
+        $employee : Employee();
+
+        // The first day has no working day before it
+        EmployeeAssignment(employee == $employee, $firstDayIndex : shiftDateDayIndex, shift != null);
+        not EmployeeAssignment(employee == $employee, shiftDateDayIndex == ($firstDayIndex - 1), shift != null);
+
+        // The last day has no working day after it
+        EmployeeAssignment(employee == $employee, shiftDateDayIndex > $firstDayIndex, $lastDayIndex : shiftDateDayIndex);
+        not EmployeeAssignment(employee == $employee, shiftDateDayIndex == ($lastDayIndex + 1), shift != null);
+
+        // There are no free days between the first and last day
+        not EmployeeAssignment(employee == $employee, shiftDateDayIndex > $firstDayIndex, shiftDateDayIndex < $lastDayIndex, shift == null);
+
+        // There are to many 
+        eval(($lastDayIndex - $firstDayIndex) > 7);
+    then
+        insertLogical(new IntConstraintOccurrence("maximumConsecutiveWorkingDays", ConstraintType.NEGATIVE_SOFT,
+                ($lastDayIndex - $firstDayIndex - 7),
+                $employee, $firstDayIndex));
+end
+
+// Minimum number of consecutive working days
+// TODO
+
+// Maximum number of consecutive free days
+// TODO
+
+// Minimum number of consecutive free days
+// TODO
+
+// Maximum number of consecutive working weekends
+// TODO
+
+// Complete weekends
+// TODO
+
+// Single assignment per day
+// TODO
+
+// Two free days after a night shift
+// TODO
+
+// Requested day on/off
+// TODO
+
+// Requested shift on/off
+// TODO
+
+// Alternative skill
+// TODO
+
+// Unwanted patterns
+// TODO
+
 // ############################################################################
 // Calculate score
 // ############################################################################



More information about the jboss-svn-commits mailing list