[jboss-svn-commits] JBL Code SVN: r33017 - 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
Sun May 23 03:29:58 EDT 2010


Author: ge0ffrey
Date: 2010-05-23 03:29:57 -0400 (Sun, 23 May 2010)
New Revision: 33017

Modified:
   labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/persistence/NurseRosteringEvaluatorHelper.java
   labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/resources/org/drools/planner/examples/nurserostering/solver/nurseRosteringScoreRules.drl
Log:
nurse rostering score rule minimumConsecutiveWorkingDays

Modified: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/persistence/NurseRosteringEvaluatorHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/persistence/NurseRosteringEvaluatorHelper.java	2010-05-23 06:50:21 UTC (rev 33016)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/persistence/NurseRosteringEvaluatorHelper.java	2010-05-23 07:29:57 UTC (rev 33017)
@@ -6,6 +6,7 @@
 import java.io.OutputStream;
 import java.util.LinkedHashMap;
 import java.util.Map;
+import java.util.TreeMap;
 
 import org.apache.commons.io.IOUtils;
 import org.drools.planner.examples.common.business.SolutionBusiness;
@@ -58,7 +59,7 @@
         private String lineContainsFilter;
 
         private StringBuilder lineBuffer = new StringBuilder(120);
-        private Map<String, int[]> excessMap = new LinkedHashMap<String, int[]>();
+        private Map<String, int[]> excessMap = new TreeMap<String, int[]>();
         private String lastEmployeeCode = null;
 
         private EvaluatorSummaryFilterOutputStream(String name, String lineContainsFilter) {

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-05-23 06:50:21 UTC (rev 33016)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/resources/org/drools/planner/examples/nurserostering/solver/nurseRosteringScoreRules.drl	2010-05-23 07:29:57 UTC (rev 33017)
@@ -144,75 +144,27 @@
                 ($dayLength - $maximumValue) * $contractLine.getMaximumWeight(),
                 $employeeConsecutiveAssignment));
 end
-//rule "maximumConsecutiveWorkingDays"
-//    when
-//        $contractLine : MinMaxContractLine(
-//            contractLineType == ContractLineType.CONSECUTIVE_WORKING_DAYS, maximumEnabled == true,
-//            $contract : contract, $maximumIndexDiff : maximumIndexDiff
-//        )
-//        $employee : Employee(contract == $contract)
-//
-//        // The first day has no working day before it
-//        EmployeeAssignment(
-//            employee == $employee,
-//            $firstDayIndex : shiftDateDayIndex
-//        )
-//        not EmployeeAssignment(employee == $employee, shiftDateDayIndex == ($firstDayIndex - 1))
-//
-//        // The last day has no working day after it
-//        EmployeeAssignment(
-//            employee == $employee,
-//            shiftDateDayIndex > ($firstDayIndex + $maximumIndexDiff), // Too many days
-//            $lastDayIndex : shiftDateDayIndex
-//        )
-//        not EmployeeAssignment(employee == $employee, shiftDateDayIndex == ($lastDayIndex + 1))
-//
-//        // There are no free days between the first and last day
-//        not(
-//            $shiftDate : ShiftDate(dayIndex > $firstDayIndex && < $lastDayIndex)
-//            and not EmployeeAssignment(employee == $employee, shiftDate == $shiftDate)
-//        )
-//    then
-//        insertLogical(new IntConstraintOccurrence("maximumConsecutiveWorkingDays", ConstraintType.NEGATIVE_SOFT,
-//                ($lastDayIndex - $firstDayIndex - $maximumIndexDiff) * $contractLine.getMaximumWeight(),
-//                $employee, $firstDayIndex, $lastDayIndex));
-//end
 
 // Minimum number of consecutive working days
-//rule "minimumConsecutiveWorkingDays"
-//    when
-//        $contractLine : MinMaxContractLine(
-//            contractLineType == ContractLineType.CONSECUTIVE_WORKING_DAYS, minimumEnabled == true,
-//            $contract : contract, $minimumIndexDiff : minimumIndexDiff
-//        )
-//        $employee : Employee(contract == $contract)
-//
-//        // The first day has no working day before it
-//        EmployeeAssignment(
-//            employee == $employee,
-//            $firstDayIndex : shiftDateDayIndex
-//        )
-//        not EmployeeAssignment(employee == $employee, shiftDateDayIndex == ($firstDayIndex - 1))
-//
-//        // The last day has no working day after it
-//        EmployeeAssignment(
-//            employee == $employee,
-//            shiftDateDayIndex > $firstDayIndex,
-//            shiftDateDayIndex < ($firstDayIndex + $minimumIndexDiff), // Too few days
-//            $lastDayIndex : shiftDateDayIndex
-//        )
-//        not EmployeeAssignment(employee == $employee, shiftDateDayIndex == ($lastDayIndex + 1))
-//
-//        // There are no free days between the first and last day
-//        forall($shiftDate : ShiftDate(dayIndex > $firstDayIndex && < $lastDayIndex)
-//            EmployeeAssignment(employee == $employee, shiftDate == $shiftDate)
-//        )
-//    then
-//        insertLogical(new IntConstraintOccurrence("minimumConsecutiveWorkingDays", ConstraintType.NEGATIVE_SOFT,
-//                ($firstDayIndex + $minimumIndexDiff - $lastDayIndex) * $contractLine.getMinimumWeight(),
-//                $employee, $firstDayIndex, $lastDayIndex));
-//end
+rule "minimumConsecutiveWorkingDays"
+    when
+        $contractLine : MinMaxContractLine(
+            contractLineType == ContractLineType.CONSECUTIVE_WORKING_DAYS, minimumEnabled == true,
+            $contract : contract, $minimumValue : minimumValue
+        )
+        $employee : Employee(contract == $contract)
 
+        $employeeConsecutiveAssignment : EmployeeConsecutiveAssignment(
+            employee == $employee,
+            dayLength < $minimumValue,
+            $dayLength : dayLength
+        )
+    then
+        insertLogical(new IntConstraintOccurrence("minimumConsecutiveWorkingDays", ConstraintType.NEGATIVE_SOFT,
+                ($minimumValue - $dayLength) * $contractLine.getMinimumWeight(),
+                $employeeConsecutiveAssignment));
+end
+
 // Maximum number of consecutive free days
 // TODO
 



More information about the jboss-svn-commits mailing list