[jboss-svn-commits] JBL Code SVN: r33480 - labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/factory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Jun 13 15:23:38 EDT 2010


Author: ge0ffrey
Date: 2010-06-13 15:23:38 -0400 (Sun, 13 Jun 2010)
New Revision: 33480

Removed:
   labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/factory/AssignmentSequenceSwitchMoveFactory.java
Log:
not usefull

Deleted: labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/factory/AssignmentSequenceSwitchMoveFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/factory/AssignmentSequenceSwitchMoveFactory.java	2010-06-13 18:53:55 UTC (rev 33479)
+++ labs/jbossrules/trunk/drools-planner/drools-planner-examples/src/main/java/org/drools/planner/examples/nurserostering/solver/move/factory/AssignmentSequenceSwitchMoveFactory.java	2010-06-13 19:23:38 UTC (rev 33480)
@@ -1,137 +0,0 @@
-package org.drools.planner.examples.nurserostering.solver.move.factory;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-import java.util.NoSuchElementException;
-
-import org.apache.commons.lang.builder.CompareToBuilder;
-import org.drools.planner.core.move.CompositeMove;
-import org.drools.planner.core.move.Move;
-import org.drools.planner.core.move.factory.AbstractMoveFactory;
-import org.drools.planner.core.solution.Solution;
-import org.drools.planner.examples.nurserostering.domain.Assignment;
-import org.drools.planner.examples.nurserostering.domain.Employee;
-import org.drools.planner.examples.nurserostering.domain.NurseRoster;
-import org.drools.planner.examples.nurserostering.domain.ShiftDate;
-import org.drools.planner.examples.nurserostering.domain.solver.EmployeeWorkSequence;
-import org.drools.planner.examples.nurserostering.solver.move.EmployeeChangeMove;
-import org.drools.planner.examples.pas.domain.Bed;
-import org.drools.planner.examples.pas.domain.BedDesignation;
-import org.drools.planner.examples.pas.solver.move.BedChangeMove;
-
-/**
- * @author Geoffrey De Smet
- */
-public class AssignmentSequenceSwitchMoveFactory extends AbstractMoveFactory {
-
-    public List<Move> createMoveList(Solution solution) {
-        NurseRoster nurseRoster = (NurseRoster) solution;
-        List<Employee> employeeList = nurseRoster.getEmployeeList();
-        // This code assumes the assignmentList is sorted
-        List<Assignment> assignmentList = nurseRoster.getAssignmentList();
-
-        // Hash the assignments per employee
-        Map<Employee, List<AssignmentSequence>> employeeToAssignmentSequenceListMap
-                = new HashMap<Employee, List<AssignmentSequence>>(employeeList.size());
-        int assignmentSequenceCapacity = nurseRoster.getShiftDateList().size() + 1 / 2;
-        for (Employee employee : employeeList) {
-            employeeToAssignmentSequenceListMap.put(employee,
-                    new ArrayList<AssignmentSequence>(assignmentSequenceCapacity));
-        }
-        for (Assignment assignment : assignmentList) {
-            Employee employee = assignment.getEmployee();
-            List<AssignmentSequence> assignmentSequenceList = employeeToAssignmentSequenceListMap.get(employee);
-            if (assignmentSequenceList.isEmpty()) {
-                AssignmentSequence assignmentSequence = new AssignmentSequence(assignment);
-                assignmentSequenceList.add(assignmentSequence);
-            } else {
-                AssignmentSequence lastAssignmentSequence = assignmentSequenceList // getLast()
-                        .get(assignmentSequenceList.size() - 1);
-                if (lastAssignmentSequence.belongsHere(assignment)) {
-                    lastAssignmentSequence.add(assignment);
-                } else {
-                    AssignmentSequence assignmentSequence = new AssignmentSequence(assignment);
-                    assignmentSequenceList.add(assignmentSequence);
-                }
-            }
-        }
-
-        // The create the move list
-        List<Move> moveList = new ArrayList<Move>();
-        // For every 2 distinct employees
-        for (ListIterator<Employee> leftEmployeeIt = employeeList.listIterator(); leftEmployeeIt.hasNext();) {
-            Employee leftEmployee = leftEmployeeIt.next();
-            List<AssignmentSequence> leftAssignmentSequenceList
-                    = employeeToAssignmentSequenceListMap.get(leftEmployee);
-            for (ListIterator<Employee> rightEmployeeIt = employeeList.listIterator(leftEmployeeIt.nextIndex());
-                    rightEmployeeIt.hasNext();) {
-                Employee rightEmployee = rightEmployeeIt.next();
-                List<AssignmentSequence> rightAssignmentSequenceList
-                        = employeeToAssignmentSequenceListMap.get(rightEmployee);
-
-                for (AssignmentSequence leftAssignmentSequence : leftAssignmentSequenceList) {
-                    List<Assignment> leftAssignmentList = leftAssignmentSequence.getAssignmentList();
-                    for (AssignmentSequence rightAssignmentSequence : rightAssignmentSequenceList) {
-                        List<Assignment> rightAssignmentList = rightAssignmentSequence.getAssignmentList();
-                        // Only if not covered by AssignmentSwitchMoveFactory
-                        if (leftAssignmentList.size() > 1 || rightAssignmentList.size() > 1) {
-                            int pillarSize = 2; // TODO
-                            List<Move> subMoveList = new ArrayList<Move>(pillarSize * 2);
-                            for (Assignment leftAssignment : leftAssignmentList
-                                    .subList(0, Math.min(pillarSize, leftAssignmentList.size()))) {
-                                subMoveList.add(new EmployeeChangeMove(leftAssignment, rightEmployee));
-                            }
-                            for (Assignment rightAssignment : rightAssignmentList
-                                    .subList(0, Math.min(pillarSize, rightAssignmentList.size()))) {
-                                subMoveList.add(new EmployeeChangeMove(rightAssignment, leftEmployee));
-                            }
-                            moveList.add(new CompositeMove(subMoveList));
-                        }
-                    }
-                }
-            }
-        }
-        return moveList;
-    }
-
-    /**
-     * TODO DRY with {@link EmployeeWorkSequence}
-     */
-    private static class AssignmentSequence {
-
-        private List<Assignment> assignmentList;
-        private int firstDayIndex;
-        private int lastDayIndex;
-
-        private AssignmentSequence(Assignment assignment) {
-            assignmentList = new ArrayList<Assignment>();
-            firstDayIndex = assignment.getShiftDateDayIndex();
-            lastDayIndex = firstDayIndex;
-        }
-
-        public List<Assignment> getAssignmentList() {
-            return assignmentList;
-        }
-
-        private void add(Assignment assignment) {
-            assignmentList.add(assignment);
-            int dayIndex = assignment.getShiftDateDayIndex();
-            if (dayIndex < lastDayIndex) {
-                throw new IllegalStateException("The assignmentList is expected to be sorted by shiftDate.");
-            }
-            lastDayIndex = dayIndex;
-        }
-
-        private boolean belongsHere(Assignment assignment) {
-            return assignment.getShiftDateDayIndex() <= (lastDayIndex + 1);
-        }
-
-    }
-
-}



More information about the jboss-svn-commits mailing list