[jboss-svn-commits] JBL Code SVN: r18120 - in labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main: java/org/drools/solver/examples/itc2007/examination/solver/move/factory and 20 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jan 25 11:17:45 EST 2008


Author: ge0ffrey
Date: 2008-01-25 11:17:45 -0500 (Fri, 25 Jan 2008)
New Revision: 18120

Added:
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/factory/ExamSwitchExaminationMoveFactory.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/factory/JumpingNeighbourExaminationMoveFactory.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/factory/NeighbourExaminationMoveFactory.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/factory/PeriodChangeExaminationMoveFactory.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/factory/RoomChangeExaminationMoveFactory.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/solver/move/factory/
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/solver/move/factory/LessonScheduleMoveFactory.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/solver/move/factory/
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/solver/move/factory/NQueensMoveFactory.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/simple/move/factory/
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/simple/move/factory/SimpleTravelingTournamentMoveFactory.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/move/factory/
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/move/factory/SmartTravelingTournamentMoveFactory.java
Removed:
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/ExamSwitchExaminationMoveFactory.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/JumpingNeighbourExaminationMoveFactory.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/NeighbourExaminationMoveFactory.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/PeriodChangeExaminationMoveFactory.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/RoomChangeExaminationMoveFactory.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/solver/LessonScheduleMoveFactory.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/solver/NQueensMoveFactory.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/solver/domain/
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/simple/SimpleTravelingTournamentMoveFactory.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/SmartTravelingTournamentMoveFactory.java
Modified:
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/benchmark/examinationShortSolverBenchmarkConfig.xml
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/benchmark/examinationSolverBenchmarkConfig.xml
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationSolverConfig.xml
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/lessonschedule/solver/lessonScheduleSolverConfig.xml
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/nqueens/benchmark/nqueensSolverBenchmarkConfig.xml
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/nqueens/solver/nqueensSolverConfig.xml
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/benchmark/smart/breakNl14SolverBenchmarkConfig.xml
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/benchmark/smart/smartTravelingTournamentSolverBenchmarkConfig.xml
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/simple/simpleTravelingTournamentSolverConfig.xml
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/smart/smartTravelingTournamentSolverConfig.xml
Log:
factory package

Deleted: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/ExamSwitchExaminationMoveFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/ExamSwitchExaminationMoveFactory.java	2008-01-25 16:15:19 UTC (rev 18119)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/ExamSwitchExaminationMoveFactory.java	2008-01-25 16:17:45 UTC (rev 18120)
@@ -1,33 +0,0 @@
-package org.drools.solver.examples.itc2007.examination.solver;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.ListIterator;
-
-import org.drools.solver.core.move.Move;
-import org.drools.solver.core.move.factory.CachedMoveFactory;
-import org.drools.solver.core.solution.Solution;
-import org.drools.solver.examples.itc2007.examination.domain.Exam;
-import org.drools.solver.examples.itc2007.examination.domain.Examination;
-import org.drools.solver.examples.itc2007.examination.solver.move.ExamSwitchMove;
-
-/**
- * @author Geoffrey De Smet
- */
-public class ExamSwitchExaminationMoveFactory extends CachedMoveFactory {
-
-    public List<Move> createCachedMoveList(Solution solution) {
-        Examination examination = (Examination) localSearchSolver.getCurrentSolution();
-        List<Exam> examList = examination.getExamList();
-        List<Move> moveList = new ArrayList<Move>();
-        for (ListIterator<Exam> leftIt = examList.listIterator(); leftIt.hasNext();) {
-            Exam leftExam = leftIt.next();
-            for (ListIterator<Exam> rightIt = examList.listIterator(leftIt.nextIndex()); rightIt.hasNext();) {
-                Exam rightExam = rightIt.next();
-                moveList.add(new ExamSwitchMove(leftExam, rightExam));
-            }
-        }
-        return moveList;
-    }
-
-}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/JumpingNeighbourExaminationMoveFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/JumpingNeighbourExaminationMoveFactory.java	2008-01-25 16:15:19 UTC (rev 18119)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/JumpingNeighbourExaminationMoveFactory.java	2008-01-25 16:17:45 UTC (rev 18120)
@@ -1,75 +0,0 @@
-package org.drools.solver.examples.itc2007.examination.solver;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.drools.solver.core.move.Move;
-import org.drools.solver.core.move.factory.AbstractMoveFactory;
-import org.drools.solver.core.solution.Solution;
-import org.drools.solver.examples.itc2007.examination.domain.Exam;
-import org.drools.solver.examples.itc2007.examination.domain.Examination;
-import org.drools.solver.examples.itc2007.examination.domain.Period;
-import org.drools.solver.examples.itc2007.examination.domain.Room;
-import org.drools.solver.examples.itc2007.examination.solver.move.PeriodChangeMove;
-import org.drools.solver.examples.itc2007.examination.solver.move.RoomChangeMove;
-
-/**
- * @author Geoffrey De Smet
- */
-public class JumpingNeighbourExaminationMoveFactory extends AbstractMoveFactory {
-
-    private int periodJump = 1;
-    private int roomJump = 1;
-
-    public List<Move> createMoveList(Solution solution) {
-        Examination examination = (Examination) solution;
-        List<Period> periodList = examination.getPeriodList();
-        List<Room> roomList = examination.getRoomList();
-        List<Move> moveList = new ArrayList<Move>();
-        for (Exam exam : examination.getExamList()) {
-            if (exam.isCoincidenceLeader()) {
-                for (Period period : periodList) {
-                    int distance = calculateShortestDistance(
-                            period.getPeriodIndex(), exam.getPeriod().getPeriodIndex(), periodList.size());
-                    if (distance == periodJump) {
-                        moveList.add(new PeriodChangeMove(exam, period));
-                    }
-                }
-            }
-            for (Room room : roomList) {
-                long distance = calculateShortestDistance(
-                        room.getId(), exam.getRoom().getId(), roomList.size());
-                if (distance == roomJump) {
-                    moveList.add(new RoomChangeMove(exam, room));
-                }
-            }
-        }
-        periodJump++;
-        if (periodJump >= (periodList.size() / 2)) {
-            periodJump = 1;
-        }
-        roomJump++;
-        if (roomJump >= (roomList.size() / 2)) {
-            roomJump = 1;
-        }
-        return moveList;
-        // TODO re-enable this stuff as it's a lot faster
-//        int maximumMoveSize = 100;
-//        // TODO not fair for first and last moves in move list
-//        int randomStart = localSearchSolver.getRandom().nextInt(moveList.size() - maximumMoveSize);
-//        return moveList.subList(randomStart, randomStart + maximumMoveSize).iterator();
-    }
-
-    public int calculateShortestDistance(int a, int b, int size) {
-        int innerDistance = Math.abs(a - b);
-        int outerDistance = size - innerDistance;
-        return Math.min(innerDistance, outerDistance);
-    }
-
-    public long calculateShortestDistance(long a, long b, long size) {
-        long innerDistance = Math.abs(a - b);
-        long outerDistance = size - innerDistance;
-        return Math.min(innerDistance, outerDistance);
-    }
-
-}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/NeighbourExaminationMoveFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/NeighbourExaminationMoveFactory.java	2008-01-25 16:15:19 UTC (rev 18119)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/NeighbourExaminationMoveFactory.java	2008-01-25 16:17:45 UTC (rev 18120)
@@ -1,67 +0,0 @@
-package org.drools.solver.examples.itc2007.examination.solver;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.drools.solver.core.move.Move;
-import org.drools.solver.core.move.factory.AbstractMoveFactory;
-import org.drools.solver.core.solution.Solution;
-import org.drools.solver.examples.itc2007.examination.domain.Exam;
-import org.drools.solver.examples.itc2007.examination.domain.Examination;
-import org.drools.solver.examples.itc2007.examination.domain.Period;
-import org.drools.solver.examples.itc2007.examination.domain.Room;
-import org.drools.solver.examples.itc2007.examination.solver.move.PeriodChangeMove;
-import org.drools.solver.examples.itc2007.examination.solver.move.RoomChangeMove;
-
-/**
- * @author Geoffrey De Smet
- */
-public class NeighbourExaminationMoveFactory extends AbstractMoveFactory {
-
-    private static final int PERIOD_JUMP = 2;
-    private static final int ROOM_JUMP = 2;
-
-    public List<Move> createMoveList(Solution solution) {
-        Examination examination = (Examination) solution;
-        List<Period> periodList = examination.getPeriodList();
-        List<Room> roomList = examination.getRoomList();
-        List<Move> moveList = new ArrayList<Move>();
-        for (Exam exam : examination.getExamList()) {
-            if (exam.isCoincidenceLeader()) {
-                for (Period period : periodList) {
-                    int distance = calculateShortestDistance(
-                            period.getPeriodIndex(), exam.getPeriod().getPeriodIndex(), periodList.size());
-                    if (distance <= PERIOD_JUMP) {
-                        moveList.add(new PeriodChangeMove(exam, period));
-                    }
-                }
-            }
-            for (Room room : roomList) {
-                long distance = calculateShortestDistance(
-                        room.getId(), exam.getRoom().getId(), roomList.size());
-                if (distance <= ROOM_JUMP) {
-                    moveList.add(new RoomChangeMove(exam, room));
-                }
-            }
-        }
-        return moveList;
-        // TODO re-enable this stuff as it's a lot faster
-//        int maximumMoveSize = 100;
-//        // TODO not fair for first and last moves in move list
-//        int randomStart = localSearchSolver.getRandom().nextInt(moveList.size() - maximumMoveSize);
-//        return moveList.subList(randomStart, randomStart + maximumMoveSize).iterator();
-    }
-
-    public int calculateShortestDistance(int a, int b, int size) {
-        int innerDistance = Math.abs(a - b);
-        int outerDistance = size - innerDistance;
-        return Math.min(innerDistance, outerDistance);
-    }
-
-    public long calculateShortestDistance(long a, long b, long size) {
-        long innerDistance = Math.abs(a - b);
-        long outerDistance = size - innerDistance;
-        return Math.min(innerDistance, outerDistance);
-    }
-
-}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/PeriodChangeExaminationMoveFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/PeriodChangeExaminationMoveFactory.java	2008-01-25 16:15:19 UTC (rev 18119)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/PeriodChangeExaminationMoveFactory.java	2008-01-25 16:17:45 UTC (rev 18120)
@@ -1,33 +0,0 @@
-package org.drools.solver.examples.itc2007.examination.solver;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.drools.solver.core.move.Move;
-import org.drools.solver.core.move.factory.CachedMoveFactory;
-import org.drools.solver.core.solution.Solution;
-import org.drools.solver.examples.itc2007.examination.domain.Exam;
-import org.drools.solver.examples.itc2007.examination.domain.Examination;
-import org.drools.solver.examples.itc2007.examination.domain.Period;
-import org.drools.solver.examples.itc2007.examination.solver.move.PeriodChangeMove;
-
-/**
- * @author Geoffrey De Smet
- */
-public class PeriodChangeExaminationMoveFactory extends CachedMoveFactory {
-
-    public List<Move> createCachedMoveList(Solution solution) {
-        Examination examination = (Examination) solution;
-        List<Period> periodList = examination.getPeriodList();
-        List<Move> moveList = new ArrayList<Move>();
-        for (Exam exam : examination.getExamList()) {
-            if (exam.isCoincidenceLeader()) {
-                for (Period period : periodList) {
-                    moveList.add(new PeriodChangeMove(exam, period));
-                }
-            }
-        }
-        return moveList;
-    }
-
-}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/RoomChangeExaminationMoveFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/RoomChangeExaminationMoveFactory.java	2008-01-25 16:15:19 UTC (rev 18119)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/RoomChangeExaminationMoveFactory.java	2008-01-25 16:17:45 UTC (rev 18120)
@@ -1,31 +0,0 @@
-package org.drools.solver.examples.itc2007.examination.solver;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.drools.solver.core.move.Move;
-import org.drools.solver.core.move.factory.CachedMoveFactory;
-import org.drools.solver.core.solution.Solution;
-import org.drools.solver.examples.itc2007.examination.domain.Exam;
-import org.drools.solver.examples.itc2007.examination.domain.Examination;
-import org.drools.solver.examples.itc2007.examination.domain.Room;
-import org.drools.solver.examples.itc2007.examination.solver.move.RoomChangeMove;
-
-/**
- * @author Geoffrey De Smet
- */
-public class RoomChangeExaminationMoveFactory extends CachedMoveFactory {
-
-    public List<Move> createCachedMoveList(Solution solution) {
-        Examination examination = (Examination) solution;
-        List<Room> roomList = examination.getRoomList();
-        List<Move> moveList = new ArrayList<Move>();
-        for (Exam exam : examination.getExamList()) {
-            for (Room room : roomList) {
-                moveList.add(new RoomChangeMove(exam, room));
-            }
-        }
-        return moveList;
-    }
-
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/factory/ExamSwitchExaminationMoveFactory.java (from rev 18084, labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/ExamSwitchExaminationMoveFactory.java)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/factory/ExamSwitchExaminationMoveFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/factory/ExamSwitchExaminationMoveFactory.java	2008-01-25 16:17:45 UTC (rev 18120)
@@ -0,0 +1,33 @@
+package org.drools.solver.examples.itc2007.examination.solver.move.factory;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.ListIterator;
+
+import org.drools.solver.core.move.Move;
+import org.drools.solver.core.move.factory.CachedMoveFactory;
+import org.drools.solver.core.solution.Solution;
+import org.drools.solver.examples.itc2007.examination.domain.Exam;
+import org.drools.solver.examples.itc2007.examination.domain.Examination;
+import org.drools.solver.examples.itc2007.examination.solver.move.ExamSwitchMove;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class ExamSwitchExaminationMoveFactory extends CachedMoveFactory {
+
+    public List<Move> createCachedMoveList(Solution solution) {
+        Examination examination = (Examination) localSearchSolver.getCurrentSolution();
+        List<Exam> examList = examination.getExamList();
+        List<Move> moveList = new ArrayList<Move>();
+        for (ListIterator<Exam> leftIt = examList.listIterator(); leftIt.hasNext();) {
+            Exam leftExam = leftIt.next();
+            for (ListIterator<Exam> rightIt = examList.listIterator(leftIt.nextIndex()); rightIt.hasNext();) {
+                Exam rightExam = rightIt.next();
+                moveList.add(new ExamSwitchMove(leftExam, rightExam));
+            }
+        }
+        return moveList;
+    }
+
+}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/factory/JumpingNeighbourExaminationMoveFactory.java (from rev 18109, labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/JumpingNeighbourExaminationMoveFactory.java)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/factory/JumpingNeighbourExaminationMoveFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/factory/JumpingNeighbourExaminationMoveFactory.java	2008-01-25 16:17:45 UTC (rev 18120)
@@ -0,0 +1,75 @@
+package org.drools.solver.examples.itc2007.examination.solver.move.factory;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.solver.core.move.Move;
+import org.drools.solver.core.move.factory.AbstractMoveFactory;
+import org.drools.solver.core.solution.Solution;
+import org.drools.solver.examples.itc2007.examination.domain.Exam;
+import org.drools.solver.examples.itc2007.examination.domain.Examination;
+import org.drools.solver.examples.itc2007.examination.domain.Period;
+import org.drools.solver.examples.itc2007.examination.domain.Room;
+import org.drools.solver.examples.itc2007.examination.solver.move.PeriodChangeMove;
+import org.drools.solver.examples.itc2007.examination.solver.move.RoomChangeMove;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class JumpingNeighbourExaminationMoveFactory extends AbstractMoveFactory {
+
+    private int periodJump = 1;
+    private int roomJump = 1;
+
+    public List<Move> createMoveList(Solution solution) {
+        Examination examination = (Examination) solution;
+        List<Period> periodList = examination.getPeriodList();
+        List<Room> roomList = examination.getRoomList();
+        List<Move> moveList = new ArrayList<Move>();
+        for (Exam exam : examination.getExamList()) {
+            if (exam.isCoincidenceLeader()) {
+                for (Period period : periodList) {
+                    int distance = calculateShortestDistance(
+                            period.getPeriodIndex(), exam.getPeriod().getPeriodIndex(), periodList.size());
+                    if (distance == periodJump) {
+                        moveList.add(new PeriodChangeMove(exam, period));
+                    }
+                }
+            }
+            for (Room room : roomList) {
+                long distance = calculateShortestDistance(
+                        room.getId(), exam.getRoom().getId(), roomList.size());
+                if (distance == roomJump) {
+                    moveList.add(new RoomChangeMove(exam, room));
+                }
+            }
+        }
+        periodJump++;
+        if (periodJump >= (periodList.size() / 2)) {
+            periodJump = 1;
+        }
+        roomJump++;
+        if (roomJump >= (roomList.size() / 2)) {
+            roomJump = 1;
+        }
+        return moveList;
+        // TODO re-enable this stuff as it's a lot faster
+//        int maximumMoveSize = 100;
+//        // TODO not fair for first and last moves in move list
+//        int randomStart = localSearchSolver.getRandom().nextInt(moveList.size() - maximumMoveSize);
+//        return moveList.subList(randomStart, randomStart + maximumMoveSize).iterator();
+    }
+
+    public int calculateShortestDistance(int a, int b, int size) {
+        int innerDistance = Math.abs(a - b);
+        int outerDistance = size - innerDistance;
+        return Math.min(innerDistance, outerDistance);
+    }
+
+    public long calculateShortestDistance(long a, long b, long size) {
+        long innerDistance = Math.abs(a - b);
+        long outerDistance = size - innerDistance;
+        return Math.min(innerDistance, outerDistance);
+    }
+
+}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/factory/NeighbourExaminationMoveFactory.java (from rev 18109, labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/NeighbourExaminationMoveFactory.java)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/factory/NeighbourExaminationMoveFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/factory/NeighbourExaminationMoveFactory.java	2008-01-25 16:17:45 UTC (rev 18120)
@@ -0,0 +1,67 @@
+package org.drools.solver.examples.itc2007.examination.solver.move.factory;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.solver.core.move.Move;
+import org.drools.solver.core.move.factory.AbstractMoveFactory;
+import org.drools.solver.core.solution.Solution;
+import org.drools.solver.examples.itc2007.examination.domain.Exam;
+import org.drools.solver.examples.itc2007.examination.domain.Examination;
+import org.drools.solver.examples.itc2007.examination.domain.Period;
+import org.drools.solver.examples.itc2007.examination.domain.Room;
+import org.drools.solver.examples.itc2007.examination.solver.move.PeriodChangeMove;
+import org.drools.solver.examples.itc2007.examination.solver.move.RoomChangeMove;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class NeighbourExaminationMoveFactory extends AbstractMoveFactory {
+
+    private static final int PERIOD_JUMP = 2;
+    private static final int ROOM_JUMP = 2;
+
+    public List<Move> createMoveList(Solution solution) {
+        Examination examination = (Examination) solution;
+        List<Period> periodList = examination.getPeriodList();
+        List<Room> roomList = examination.getRoomList();
+        List<Move> moveList = new ArrayList<Move>();
+        for (Exam exam : examination.getExamList()) {
+            if (exam.isCoincidenceLeader()) {
+                for (Period period : periodList) {
+                    int distance = calculateShortestDistance(
+                            period.getPeriodIndex(), exam.getPeriod().getPeriodIndex(), periodList.size());
+                    if (distance <= PERIOD_JUMP) {
+                        moveList.add(new PeriodChangeMove(exam, period));
+                    }
+                }
+            }
+            for (Room room : roomList) {
+                long distance = calculateShortestDistance(
+                        room.getId(), exam.getRoom().getId(), roomList.size());
+                if (distance <= ROOM_JUMP) {
+                    moveList.add(new RoomChangeMove(exam, room));
+                }
+            }
+        }
+        return moveList;
+        // TODO re-enable this stuff as it's a lot faster
+//        int maximumMoveSize = 100;
+//        // TODO not fair for first and last moves in move list
+//        int randomStart = localSearchSolver.getRandom().nextInt(moveList.size() - maximumMoveSize);
+//        return moveList.subList(randomStart, randomStart + maximumMoveSize).iterator();
+    }
+
+    public int calculateShortestDistance(int a, int b, int size) {
+        int innerDistance = Math.abs(a - b);
+        int outerDistance = size - innerDistance;
+        return Math.min(innerDistance, outerDistance);
+    }
+
+    public long calculateShortestDistance(long a, long b, long size) {
+        long innerDistance = Math.abs(a - b);
+        long outerDistance = size - innerDistance;
+        return Math.min(innerDistance, outerDistance);
+    }
+
+}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/factory/PeriodChangeExaminationMoveFactory.java (from rev 18109, labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/PeriodChangeExaminationMoveFactory.java)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/factory/PeriodChangeExaminationMoveFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/factory/PeriodChangeExaminationMoveFactory.java	2008-01-25 16:17:45 UTC (rev 18120)
@@ -0,0 +1,33 @@
+package org.drools.solver.examples.itc2007.examination.solver.move.factory;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.solver.core.move.Move;
+import org.drools.solver.core.move.factory.CachedMoveFactory;
+import org.drools.solver.core.solution.Solution;
+import org.drools.solver.examples.itc2007.examination.domain.Exam;
+import org.drools.solver.examples.itc2007.examination.domain.Examination;
+import org.drools.solver.examples.itc2007.examination.domain.Period;
+import org.drools.solver.examples.itc2007.examination.solver.move.PeriodChangeMove;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class PeriodChangeExaminationMoveFactory extends CachedMoveFactory {
+
+    public List<Move> createCachedMoveList(Solution solution) {
+        Examination examination = (Examination) solution;
+        List<Period> periodList = examination.getPeriodList();
+        List<Move> moveList = new ArrayList<Move>();
+        for (Exam exam : examination.getExamList()) {
+            if (exam.isCoincidenceLeader()) {
+                for (Period period : periodList) {
+                    moveList.add(new PeriodChangeMove(exam, period));
+                }
+            }
+        }
+        return moveList;
+    }
+
+}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/factory/RoomChangeExaminationMoveFactory.java (from rev 18084, labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/RoomChangeExaminationMoveFactory.java)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/factory/RoomChangeExaminationMoveFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/factory/RoomChangeExaminationMoveFactory.java	2008-01-25 16:17:45 UTC (rev 18120)
@@ -0,0 +1,31 @@
+package org.drools.solver.examples.itc2007.examination.solver.move.factory;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.solver.core.move.Move;
+import org.drools.solver.core.move.factory.CachedMoveFactory;
+import org.drools.solver.core.solution.Solution;
+import org.drools.solver.examples.itc2007.examination.domain.Exam;
+import org.drools.solver.examples.itc2007.examination.domain.Examination;
+import org.drools.solver.examples.itc2007.examination.domain.Room;
+import org.drools.solver.examples.itc2007.examination.solver.move.RoomChangeMove;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class RoomChangeExaminationMoveFactory extends CachedMoveFactory {
+
+    public List<Move> createCachedMoveList(Solution solution) {
+        Examination examination = (Examination) solution;
+        List<Room> roomList = examination.getRoomList();
+        List<Move> moveList = new ArrayList<Move>();
+        for (Exam exam : examination.getExamList()) {
+            for (Room room : roomList) {
+                moveList.add(new RoomChangeMove(exam, room));
+            }
+        }
+        return moveList;
+    }
+
+}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/solver/LessonScheduleMoveFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/solver/LessonScheduleMoveFactory.java	2008-01-25 16:15:19 UTC (rev 18119)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/solver/LessonScheduleMoveFactory.java	2008-01-25 16:17:45 UTC (rev 18120)
@@ -1,30 +0,0 @@
-package org.drools.solver.examples.lessonschedule.solver;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.drools.solver.core.move.Move;
-import org.drools.solver.core.move.factory.CachedMoveFactory;
-import org.drools.solver.core.solution.Solution;
-import org.drools.solver.examples.lessonschedule.domain.Lesson;
-import org.drools.solver.examples.lessonschedule.domain.LessonSchedule;
-import org.drools.solver.examples.lessonschedule.domain.Timeslot;
-import org.drools.solver.examples.lessonschedule.solver.move.TimeslotChangeMove;
-
-/**
- * @author Geoffrey De Smet
- */
-public class LessonScheduleMoveFactory extends CachedMoveFactory {
-
-    public List<Move> createCachedMoveList(Solution solution) {
-        List<Move> moveList = new ArrayList<Move>();
-        LessonSchedule lessonSchedule = (LessonSchedule) solution;
-        for (Lesson lesson : lessonSchedule.getLessonList()) {
-            for (Timeslot timeslot : lessonSchedule.getTimeslotList()) {
-                moveList.add(new TimeslotChangeMove(lesson, timeslot));
-            }
-        }
-        return moveList;
-    }
-    
-}

Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/solver/move/factory/LessonScheduleMoveFactory.java (from rev 18084, labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/solver/LessonScheduleMoveFactory.java)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/solver/move/factory/LessonScheduleMoveFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/solver/move/factory/LessonScheduleMoveFactory.java	2008-01-25 16:17:45 UTC (rev 18120)
@@ -0,0 +1,30 @@
+package org.drools.solver.examples.lessonschedule.solver.move.factory;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.solver.core.move.Move;
+import org.drools.solver.core.move.factory.CachedMoveFactory;
+import org.drools.solver.core.solution.Solution;
+import org.drools.solver.examples.lessonschedule.domain.Lesson;
+import org.drools.solver.examples.lessonschedule.domain.LessonSchedule;
+import org.drools.solver.examples.lessonschedule.domain.Timeslot;
+import org.drools.solver.examples.lessonschedule.solver.move.TimeslotChangeMove;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class LessonScheduleMoveFactory extends CachedMoveFactory {
+
+    public List<Move> createCachedMoveList(Solution solution) {
+        List<Move> moveList = new ArrayList<Move>();
+        LessonSchedule lessonSchedule = (LessonSchedule) solution;
+        for (Lesson lesson : lessonSchedule.getLessonList()) {
+            for (Timeslot timeslot : lessonSchedule.getTimeslotList()) {
+                moveList.add(new TimeslotChangeMove(lesson, timeslot));
+            }
+        }
+        return moveList;
+    }
+    
+}

Deleted: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/solver/NQueensMoveFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/solver/NQueensMoveFactory.java	2008-01-25 16:15:19 UTC (rev 18119)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/solver/NQueensMoveFactory.java	2008-01-25 16:17:45 UTC (rev 18120)
@@ -1,29 +0,0 @@
-package org.drools.solver.examples.nqueens.solver;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.drools.solver.core.move.Move;
-import org.drools.solver.core.move.factory.CachedMoveFactory;
-import org.drools.solver.core.solution.Solution;
-import org.drools.solver.examples.nqueens.domain.NQueens;
-import org.drools.solver.examples.nqueens.domain.Queen;
-import org.drools.solver.examples.nqueens.solver.move.YChangeMove;
-
-/**
- * @author Geoffrey De Smet
- */
-public class NQueensMoveFactory extends CachedMoveFactory {
-
-    public List<Move> createCachedMoveList(Solution solution) {
-        NQueens nQueens = (NQueens) solution;
-        List<Move> moveList = new ArrayList<Move>();
-        for (Queen queen : nQueens.getQueenList()) {
-            for (int n : nQueens.createNList()) {
-                moveList.add(new YChangeMove(queen, n));
-            }
-        }
-        return moveList;
-    }
-
-}

Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/solver/move/factory/NQueensMoveFactory.java (from rev 18084, labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/solver/NQueensMoveFactory.java)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/solver/move/factory/NQueensMoveFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/solver/move/factory/NQueensMoveFactory.java	2008-01-25 16:17:45 UTC (rev 18120)
@@ -0,0 +1,29 @@
+package org.drools.solver.examples.nqueens.solver.move.factory;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.solver.core.move.Move;
+import org.drools.solver.core.move.factory.CachedMoveFactory;
+import org.drools.solver.core.solution.Solution;
+import org.drools.solver.examples.nqueens.domain.NQueens;
+import org.drools.solver.examples.nqueens.domain.Queen;
+import org.drools.solver.examples.nqueens.solver.move.YChangeMove;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class NQueensMoveFactory extends CachedMoveFactory {
+
+    public List<Move> createCachedMoveList(Solution solution) {
+        NQueens nQueens = (NQueens) solution;
+        List<Move> moveList = new ArrayList<Move>();
+        for (Queen queen : nQueens.getQueenList()) {
+            for (int n : nQueens.createNList()) {
+                moveList.add(new YChangeMove(queen, n));
+            }
+        }
+        return moveList;
+    }
+
+}

Deleted: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/simple/SimpleTravelingTournamentMoveFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/simple/SimpleTravelingTournamentMoveFactory.java	2008-01-25 16:15:19 UTC (rev 18119)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/simple/SimpleTravelingTournamentMoveFactory.java	2008-01-25 16:17:45 UTC (rev 18120)
@@ -1,30 +0,0 @@
-package org.drools.solver.examples.travelingtournament.solver.simple;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.drools.solver.core.move.Move;
-import org.drools.solver.core.move.factory.CachedMoveFactory;
-import org.drools.solver.core.solution.Solution;
-import org.drools.solver.examples.travelingtournament.domain.Day;
-import org.drools.solver.examples.travelingtournament.domain.Match;
-import org.drools.solver.examples.travelingtournament.domain.TravelingTournament;
-import org.drools.solver.examples.travelingtournament.solver.simple.move.DayChangeMove;
-
-/**
- * @author Geoffrey De Smet
- */
-public class SimpleTravelingTournamentMoveFactory extends CachedMoveFactory {
-
-    public List<Move> createCachedMoveList(Solution solution) {
-        List<Move> moveList = new ArrayList<Move>();
-        TravelingTournament travelingTournament = (TravelingTournament) solution;
-        for (Match match : travelingTournament.getMatchList()) {
-            for (Day day : travelingTournament.getDayList()) {
-                moveList.add(new DayChangeMove(match, day));
-            }
-        }
-        return moveList;
-    }
-
-}

Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/simple/move/factory/SimpleTravelingTournamentMoveFactory.java (from rev 18084, labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/simple/SimpleTravelingTournamentMoveFactory.java)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/simple/move/factory/SimpleTravelingTournamentMoveFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/simple/move/factory/SimpleTravelingTournamentMoveFactory.java	2008-01-25 16:17:45 UTC (rev 18120)
@@ -0,0 +1,30 @@
+package org.drools.solver.examples.travelingtournament.solver.simple.move.factory;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.solver.core.move.Move;
+import org.drools.solver.core.move.factory.CachedMoveFactory;
+import org.drools.solver.core.solution.Solution;
+import org.drools.solver.examples.travelingtournament.domain.Day;
+import org.drools.solver.examples.travelingtournament.domain.Match;
+import org.drools.solver.examples.travelingtournament.domain.TravelingTournament;
+import org.drools.solver.examples.travelingtournament.solver.simple.move.DayChangeMove;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class SimpleTravelingTournamentMoveFactory extends CachedMoveFactory {
+
+    public List<Move> createCachedMoveList(Solution solution) {
+        List<Move> moveList = new ArrayList<Move>();
+        TravelingTournament travelingTournament = (TravelingTournament) solution;
+        for (Match match : travelingTournament.getMatchList()) {
+            for (Day day : travelingTournament.getDayList()) {
+                moveList.add(new DayChangeMove(match, day));
+            }
+        }
+        return moveList;
+    }
+
+}

Deleted: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/SmartTravelingTournamentMoveFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/SmartTravelingTournamentMoveFactory.java	2008-01-25 16:15:19 UTC (rev 18119)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/SmartTravelingTournamentMoveFactory.java	2008-01-25 16:17:45 UTC (rev 18120)
@@ -1,242 +0,0 @@
-package org.drools.solver.examples.travelingtournament.solver.smart;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-
-import org.drools.solver.core.move.Move;
-import org.drools.solver.core.move.factory.AbstractMoveFactory;
-import org.drools.solver.core.solution.Solution;
-import org.drools.solver.examples.travelingtournament.domain.Day;
-import org.drools.solver.examples.travelingtournament.domain.Match;
-import org.drools.solver.examples.travelingtournament.domain.Team;
-import org.drools.solver.examples.travelingtournament.domain.TravelingTournament;
-import org.drools.solver.examples.travelingtournament.solver.smart.move.MatchSwapMove;
-import org.drools.solver.examples.travelingtournament.solver.smart.move.MultipleMatchListRotateMove;
-
-/**
- * @author Geoffrey De Smet
- */
-public class SmartTravelingTournamentMoveFactory extends AbstractMoveFactory {
-
-    private List<Move> cachedMoveList;
-
-    @Override
-    public void solvingStarted() {
-        TravelingTournament travelingTournament = (TravelingTournament) localSearchSolver.getCurrentSolution();
-        cachedMoveList = new ArrayList<Move>(travelingTournament.getMatchList().size() / 2);
-        addCachedHomeAwaySwapMoves(travelingTournament);
-    }
-
-    private void addCachedHomeAwaySwapMoves(TravelingTournament travelingTournament) {
-        List<Match> matchList = travelingTournament.getMatchList();
-        for (Match firstMatch : matchList) {
-            for (Match secondMatch : matchList) {
-                if (firstMatch.getHomeTeam().equals(secondMatch.getAwayTeam())
-                        && firstMatch.getAwayTeam().equals(secondMatch.getHomeTeam())
-                        && (firstMatch.getId().compareTo(secondMatch.getId()) < 0)) {
-                    MatchSwapMove matchSwapMove = new MatchSwapMove(firstMatch, secondMatch);
-                    cachedMoveList.add(matchSwapMove);
-                    break;
-                }
-            }
-        }
-    }
-
-
-    public List<Move> createMoveList(Solution solution) {
-        TravelingTournament travelingTournament = (TravelingTournament) solution;
-        List<Move> moveList = new ArrayList<Move>();
-        moveList.addAll(cachedMoveList);
-        RotationMovesFactory rotationMovesFactory = new RotationMovesFactory(travelingTournament);
-        logger.debug("Reused {} moves for N1 neighborhood.", moveList.size());
-        int oldSize = moveList.size();
-        rotationMovesFactory.addDayRotation(moveList);
-        logger.debug("Created {} moves for N3 U N5 neighborhood.", (moveList.size() - oldSize));
-        oldSize = moveList.size();
-        rotationMovesFactory.addTeamRotation(moveList);
-        logger.debug("Created {} moves for N2 U N4 neighborhood.", (moveList.size() - oldSize));
-        rotationMovesFactory = null;
-        return moveList;
-    }
-
-    private static class RotationMovesFactory {
-
-        private List<Day> dayList;
-        private List<Team> teamList;
-        private List<Match> matchList;
-        private Map<Day, Map<Team, Match>> dayTeamMap;
-        private Map<Team, Map<Day, Match>> teamDayMap;
-        private Map<Team, Map<Team, Match>> homeTeamAwayTeamMap;
-
-        public RotationMovesFactory(TravelingTournament travelingTournament) {
-            dayList = travelingTournament.getDayList();
-            teamList = travelingTournament.getTeamList();
-            matchList = travelingTournament.getMatchList();
-            createMaps();
-        }
-
-        private void createMaps() {
-            dayTeamMap = new HashMap<Day, Map<Team, Match>>(dayList.size());
-            for (Day day : dayList) {
-                // This map should be ordered so the order of the matchRotationList is the same (when it's used as tabu)
-                dayTeamMap.put(day, new LinkedHashMap<Team, Match>(teamList.size()));
-            }
-            teamDayMap = new HashMap<Team, Map<Day, Match>>(teamList.size());
-            homeTeamAwayTeamMap = new HashMap<Team, Map<Team, Match>>(teamList.size());
-            for (Team team : teamList) {
-                // This map should be ordered so the order of the matchRotationList is the same (when it's used as tabu)
-                teamDayMap.put(team, new LinkedHashMap<Day, Match>(dayList.size()));
-                homeTeamAwayTeamMap.put(team, new LinkedHashMap<Team, Match>(teamList.size() - 1));
-            }
-            for (Match match : matchList) {
-                Map<Team, Match> subTeamMap = dayTeamMap.get(match.getDay());
-                subTeamMap.put(match.getHomeTeam(), match);
-                subTeamMap.put(match.getAwayTeam(), match);
-                teamDayMap.get(match.getHomeTeam()).put(match.getDay(), match);
-                teamDayMap.get(match.getAwayTeam()).put(match.getDay(), match);
-                homeTeamAwayTeamMap.get(match.getHomeTeam()).put(match.getAwayTeam(), match);
-            }
-        }
-
-        private Team getOtherTeam(Match match, Team team) {
-            return match.getHomeTeam().equals(team) ? match.getAwayTeam() : match.getHomeTeam();
-        }
-
-        /**
-         * @TODO clean up this code
-         */
-        private void addDayRotation(List<Move> moveList) {
-            for (ListIterator<Day> firstDayIt = dayList.listIterator(); firstDayIt.hasNext();) {
-                Day firstDay = firstDayIt.next();
-                Map<Team, Match> firstDayTeamMap = dayTeamMap.get(firstDay);
-                for (ListIterator<Day> secondDayIt = dayList.listIterator(firstDayIt.nextIndex()); secondDayIt.hasNext();)
-                {
-                    Day secondDay = secondDayIt.next();
-                    List<Match> clonedFirstDayMatchList = new ArrayList<Match>(firstDayTeamMap.values());
-                    while (!clonedFirstDayMatchList.isEmpty()) {
-                        List<Match> rotateList = new ArrayList<Match>(4);
-                        Match startMatch = clonedFirstDayMatchList.remove(0);
-                        boolean otherInFirst = false;
-                        rotateList.add(startMatch);
-                        Team startHomeTeam = startMatch.getHomeTeam();
-                        Team nextTeamToFind = startMatch.getAwayTeam();
-                        while (!startHomeTeam.equals(nextTeamToFind)) {
-                            Map<Team, Match> subTeamMap = dayTeamMap.get(otherInFirst ? firstDay : secondDay);
-                            Match repairMatch = subTeamMap.get(nextTeamToFind);
-                            if (otherInFirst) {
-                                clonedFirstDayMatchList.remove(repairMatch);
-                            }
-                            rotateList.add(repairMatch);
-                            nextTeamToFind = getOtherTeam(repairMatch, nextTeamToFind);
-                            otherInFirst = !otherInFirst;
-                        }
-                        // assert(rotateList.size() % 2 == 0);
-                        
-                        // if size is 2 then addCachedHomeAwaySwapMoves will have done it
-                        if (rotateList.size() > 2) {
-                            List<Match> emptyList = Collections.emptyList();
-                            Move rotateMove = new MultipleMatchListRotateMove(rotateList, emptyList);
-                            moveList.add(rotateMove);
-                        }
-                    }
-                }
-            }
-        }
-
-        /**
-         * @TODO clean up this code
-         */
-        private void addTeamRotation(List<Move> moveList) {
-            for (ListIterator<Team> firstTeamIt = teamList.listIterator(); firstTeamIt.hasNext();) {
-                Team firstTeam = firstTeamIt.next();
-                Map<Day, Match> firstTeamDayMap = teamDayMap.get(firstTeam);
-                for (ListIterator<Team> secondTeamIt = teamList.listIterator(firstTeamIt.nextIndex()); secondTeamIt.hasNext();) {
-                    Team secondTeam = secondTeamIt.next();
-                    List<Match> clonedFirstTeamMatchList = new ArrayList<Match>(firstTeamDayMap.values());
-                    while (!clonedFirstTeamMatchList.isEmpty()) {
-                        List<Match> firstRotateList = new ArrayList<Match>();
-                        List<Match> secondRotateList = new ArrayList<Match>();
-                        
-                        Match firstStartMatch = clonedFirstTeamMatchList.remove(0);
-                        Team firstStartTeam = getOtherTeam(firstStartMatch, firstTeam);
-                        Day startDay = firstStartMatch.getDay();
-                        boolean firstTeamIsHomeTeam = firstStartMatch.getHomeTeam().equals(firstTeam);
-                        Match secondStartMatch = teamDayMap.get(secondTeam).get(startDay);
-                        if (firstStartMatch.equals(secondStartMatch)) {
-                            break;
-                        }
-                        firstRotateList.add(0, firstStartMatch);
-                        secondRotateList.add(secondStartMatch);
-                        Map<Team, Match> visitedTeamMap = new HashMap<Team, Match>();
-
-                        Team teamToFind = getOtherTeam(secondStartMatch, secondTeam);
-
-                        while (!teamToFind.equals(firstStartTeam)) {
-//                            boolean shortcut = visitedTeamMap.containsKey(teamToFind);
-//                            if (shortcut) {
-            Match firstRepairMatch = homeTeamAwayTeamMap
-                    .get(firstTeamIsHomeTeam ? firstTeam : teamToFind)
-                    .get(firstTeamIsHomeTeam ? teamToFind : firstTeam);
-            if (!clonedFirstTeamMatchList.contains(firstRepairMatch)) {
-                            if (visitedTeamMap.containsKey(teamToFind)) {
-                                // shortcut splitoff is possible
-                                Match shortcutMatch = visitedTeamMap.get(teamToFind);
-                                int shortcutSize = firstRotateList.indexOf(shortcutMatch) + 1;
-                                int reverseShortcutSize = firstRotateList.size() - shortcutSize;
-                                List<Match> firstShortcutRotateList = new ArrayList<Match>(
-                                        firstRotateList.subList(0, shortcutSize));
-                                for (Match match : firstShortcutRotateList) {
-                                    visitedTeamMap.remove(getOtherTeam(match, firstTeam));
-                                }
-                                List<Match> secondShortcutRotateList = new ArrayList<Match>(
-                                        secondRotateList.subList(reverseShortcutSize, secondRotateList.size()));
-                                firstRotateList = new ArrayList<Match>(
-                                        firstRotateList.subList(shortcutSize, firstRotateList.size()));
-                                secondRotateList = new ArrayList<Match>(
-                                        secondRotateList.subList(0, reverseShortcutSize));
-                                addTeamRotateMove(moveList, firstShortcutRotateList, secondShortcutRotateList);
-                            }
-                firstTeamIsHomeTeam = !firstTeamIsHomeTeam;
-//                            Team firstRepairHomeTeam = (firstTeamIsHomeTeam ^ shortcut) ? firstTeam : teamToFind;
-//                            Team firstRepairAwayTeam = (firstTeamIsHomeTeam ^ shortcut) ? teamToFind : firstTeam;
-//                            Match firstRepairMatch = homeTeamAwayTeamMap
-//                                    .get(firstRepairHomeTeam).get(firstRepairAwayTeam);
-             firstRepairMatch = homeTeamAwayTeamMap
-                    .get(firstTeamIsHomeTeam ? firstTeam : teamToFind)
-                    .get(firstTeamIsHomeTeam ? teamToFind : firstTeam);
-            }
-
-                            Day repairDay = firstRepairMatch.getDay();
-                            Match secondRepairMatch = teamDayMap.get(secondTeam).get(repairDay);
-                            clonedFirstTeamMatchList.remove(firstRepairMatch);
-                            visitedTeamMap.put(teamToFind, firstRepairMatch);
-                            firstRotateList.add(0, firstRepairMatch);
-                            secondRotateList.add(secondRepairMatch);
-
-                            teamToFind = getOtherTeam(secondRepairMatch, secondTeam);
-                        }
-
-                        addTeamRotateMove(moveList, firstRotateList, secondRotateList);
-                    }
-                }
-            }
-
-        }
-
-        private void addTeamRotateMove(List<Move> moveList, List<Match> firstRotateList, List<Match> secondRotateList) {
-            assert(firstRotateList.size() == secondRotateList.size());
-            // if size is 1 then addCachedHomeAwaySwapMoves will have done it
-            // if size is 2 then addDayRotation will have done it by 1 list of size 4
-            if (firstRotateList.size() > 2) {
-                Move rotateMove = new MultipleMatchListRotateMove(firstRotateList, secondRotateList);
-                moveList.add(rotateMove);
-            }
-        }
-
-    }
-}

Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/move/factory/SmartTravelingTournamentMoveFactory.java (from rev 18084, labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/SmartTravelingTournamentMoveFactory.java)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/move/factory/SmartTravelingTournamentMoveFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/move/factory/SmartTravelingTournamentMoveFactory.java	2008-01-25 16:17:45 UTC (rev 18120)
@@ -0,0 +1,242 @@
+package org.drools.solver.examples.travelingtournament.solver.smart.move.factory;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+
+import org.drools.solver.core.move.Move;
+import org.drools.solver.core.move.factory.AbstractMoveFactory;
+import org.drools.solver.core.solution.Solution;
+import org.drools.solver.examples.travelingtournament.domain.Day;
+import org.drools.solver.examples.travelingtournament.domain.Match;
+import org.drools.solver.examples.travelingtournament.domain.Team;
+import org.drools.solver.examples.travelingtournament.domain.TravelingTournament;
+import org.drools.solver.examples.travelingtournament.solver.smart.move.MatchSwapMove;
+import org.drools.solver.examples.travelingtournament.solver.smart.move.MultipleMatchListRotateMove;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class SmartTravelingTournamentMoveFactory extends AbstractMoveFactory {
+
+    private List<Move> cachedMoveList;
+
+    @Override
+    public void solvingStarted() {
+        TravelingTournament travelingTournament = (TravelingTournament) localSearchSolver.getCurrentSolution();
+        cachedMoveList = new ArrayList<Move>(travelingTournament.getMatchList().size() / 2);
+        addCachedHomeAwaySwapMoves(travelingTournament);
+    }
+
+    private void addCachedHomeAwaySwapMoves(TravelingTournament travelingTournament) {
+        List<Match> matchList = travelingTournament.getMatchList();
+        for (Match firstMatch : matchList) {
+            for (Match secondMatch : matchList) {
+                if (firstMatch.getHomeTeam().equals(secondMatch.getAwayTeam())
+                        && firstMatch.getAwayTeam().equals(secondMatch.getHomeTeam())
+                        && (firstMatch.getId().compareTo(secondMatch.getId()) < 0)) {
+                    MatchSwapMove matchSwapMove = new MatchSwapMove(firstMatch, secondMatch);
+                    cachedMoveList.add(matchSwapMove);
+                    break;
+                }
+            }
+        }
+    }
+
+
+    public List<Move> createMoveList(Solution solution) {
+        TravelingTournament travelingTournament = (TravelingTournament) solution;
+        List<Move> moveList = new ArrayList<Move>();
+        moveList.addAll(cachedMoveList);
+        RotationMovesFactory rotationMovesFactory = new RotationMovesFactory(travelingTournament);
+        logger.debug("Reused {} moves for N1 neighborhood.", moveList.size());
+        int oldSize = moveList.size();
+        rotationMovesFactory.addDayRotation(moveList);
+        logger.debug("Created {} moves for N3 U N5 neighborhood.", (moveList.size() - oldSize));
+        oldSize = moveList.size();
+        rotationMovesFactory.addTeamRotation(moveList);
+        logger.debug("Created {} moves for N2 U N4 neighborhood.", (moveList.size() - oldSize));
+        rotationMovesFactory = null;
+        return moveList;
+    }
+
+    private static class RotationMovesFactory {
+
+        private List<Day> dayList;
+        private List<Team> teamList;
+        private List<Match> matchList;
+        private Map<Day, Map<Team, Match>> dayTeamMap;
+        private Map<Team, Map<Day, Match>> teamDayMap;
+        private Map<Team, Map<Team, Match>> homeTeamAwayTeamMap;
+
+        public RotationMovesFactory(TravelingTournament travelingTournament) {
+            dayList = travelingTournament.getDayList();
+            teamList = travelingTournament.getTeamList();
+            matchList = travelingTournament.getMatchList();
+            createMaps();
+        }
+
+        private void createMaps() {
+            dayTeamMap = new HashMap<Day, Map<Team, Match>>(dayList.size());
+            for (Day day : dayList) {
+                // This map should be ordered so the order of the matchRotationList is the same (when it's used as tabu)
+                dayTeamMap.put(day, new LinkedHashMap<Team, Match>(teamList.size()));
+            }
+            teamDayMap = new HashMap<Team, Map<Day, Match>>(teamList.size());
+            homeTeamAwayTeamMap = new HashMap<Team, Map<Team, Match>>(teamList.size());
+            for (Team team : teamList) {
+                // This map should be ordered so the order of the matchRotationList is the same (when it's used as tabu)
+                teamDayMap.put(team, new LinkedHashMap<Day, Match>(dayList.size()));
+                homeTeamAwayTeamMap.put(team, new LinkedHashMap<Team, Match>(teamList.size() - 1));
+            }
+            for (Match match : matchList) {
+                Map<Team, Match> subTeamMap = dayTeamMap.get(match.getDay());
+                subTeamMap.put(match.getHomeTeam(), match);
+                subTeamMap.put(match.getAwayTeam(), match);
+                teamDayMap.get(match.getHomeTeam()).put(match.getDay(), match);
+                teamDayMap.get(match.getAwayTeam()).put(match.getDay(), match);
+                homeTeamAwayTeamMap.get(match.getHomeTeam()).put(match.getAwayTeam(), match);
+            }
+        }
+
+        private Team getOtherTeam(Match match, Team team) {
+            return match.getHomeTeam().equals(team) ? match.getAwayTeam() : match.getHomeTeam();
+        }
+
+        /**
+         * @TODO clean up this code
+         */
+        private void addDayRotation(List<Move> moveList) {
+            for (ListIterator<Day> firstDayIt = dayList.listIterator(); firstDayIt.hasNext();) {
+                Day firstDay = firstDayIt.next();
+                Map<Team, Match> firstDayTeamMap = dayTeamMap.get(firstDay);
+                for (ListIterator<Day> secondDayIt = dayList.listIterator(firstDayIt.nextIndex()); secondDayIt.hasNext();)
+                {
+                    Day secondDay = secondDayIt.next();
+                    List<Match> clonedFirstDayMatchList = new ArrayList<Match>(firstDayTeamMap.values());
+                    while (!clonedFirstDayMatchList.isEmpty()) {
+                        List<Match> rotateList = new ArrayList<Match>(4);
+                        Match startMatch = clonedFirstDayMatchList.remove(0);
+                        boolean otherInFirst = false;
+                        rotateList.add(startMatch);
+                        Team startHomeTeam = startMatch.getHomeTeam();
+                        Team nextTeamToFind = startMatch.getAwayTeam();
+                        while (!startHomeTeam.equals(nextTeamToFind)) {
+                            Map<Team, Match> subTeamMap = dayTeamMap.get(otherInFirst ? firstDay : secondDay);
+                            Match repairMatch = subTeamMap.get(nextTeamToFind);
+                            if (otherInFirst) {
+                                clonedFirstDayMatchList.remove(repairMatch);
+                            }
+                            rotateList.add(repairMatch);
+                            nextTeamToFind = getOtherTeam(repairMatch, nextTeamToFind);
+                            otherInFirst = !otherInFirst;
+                        }
+                        // assert(rotateList.size() % 2 == 0);
+                        
+                        // if size is 2 then addCachedHomeAwaySwapMoves will have done it
+                        if (rotateList.size() > 2) {
+                            List<Match> emptyList = Collections.emptyList();
+                            Move rotateMove = new MultipleMatchListRotateMove(rotateList, emptyList);
+                            moveList.add(rotateMove);
+                        }
+                    }
+                }
+            }
+        }
+
+        /**
+         * @TODO clean up this code
+         */
+        private void addTeamRotation(List<Move> moveList) {
+            for (ListIterator<Team> firstTeamIt = teamList.listIterator(); firstTeamIt.hasNext();) {
+                Team firstTeam = firstTeamIt.next();
+                Map<Day, Match> firstTeamDayMap = teamDayMap.get(firstTeam);
+                for (ListIterator<Team> secondTeamIt = teamList.listIterator(firstTeamIt.nextIndex()); secondTeamIt.hasNext();) {
+                    Team secondTeam = secondTeamIt.next();
+                    List<Match> clonedFirstTeamMatchList = new ArrayList<Match>(firstTeamDayMap.values());
+                    while (!clonedFirstTeamMatchList.isEmpty()) {
+                        List<Match> firstRotateList = new ArrayList<Match>();
+                        List<Match> secondRotateList = new ArrayList<Match>();
+                        
+                        Match firstStartMatch = clonedFirstTeamMatchList.remove(0);
+                        Team firstStartTeam = getOtherTeam(firstStartMatch, firstTeam);
+                        Day startDay = firstStartMatch.getDay();
+                        boolean firstTeamIsHomeTeam = firstStartMatch.getHomeTeam().equals(firstTeam);
+                        Match secondStartMatch = teamDayMap.get(secondTeam).get(startDay);
+                        if (firstStartMatch.equals(secondStartMatch)) {
+                            break;
+                        }
+                        firstRotateList.add(0, firstStartMatch);
+                        secondRotateList.add(secondStartMatch);
+                        Map<Team, Match> visitedTeamMap = new HashMap<Team, Match>();
+
+                        Team teamToFind = getOtherTeam(secondStartMatch, secondTeam);
+
+                        while (!teamToFind.equals(firstStartTeam)) {
+//                            boolean shortcut = visitedTeamMap.containsKey(teamToFind);
+//                            if (shortcut) {
+            Match firstRepairMatch = homeTeamAwayTeamMap
+                    .get(firstTeamIsHomeTeam ? firstTeam : teamToFind)
+                    .get(firstTeamIsHomeTeam ? teamToFind : firstTeam);
+            if (!clonedFirstTeamMatchList.contains(firstRepairMatch)) {
+                            if (visitedTeamMap.containsKey(teamToFind)) {
+                                // shortcut splitoff is possible
+                                Match shortcutMatch = visitedTeamMap.get(teamToFind);
+                                int shortcutSize = firstRotateList.indexOf(shortcutMatch) + 1;
+                                int reverseShortcutSize = firstRotateList.size() - shortcutSize;
+                                List<Match> firstShortcutRotateList = new ArrayList<Match>(
+                                        firstRotateList.subList(0, shortcutSize));
+                                for (Match match : firstShortcutRotateList) {
+                                    visitedTeamMap.remove(getOtherTeam(match, firstTeam));
+                                }
+                                List<Match> secondShortcutRotateList = new ArrayList<Match>(
+                                        secondRotateList.subList(reverseShortcutSize, secondRotateList.size()));
+                                firstRotateList = new ArrayList<Match>(
+                                        firstRotateList.subList(shortcutSize, firstRotateList.size()));
+                                secondRotateList = new ArrayList<Match>(
+                                        secondRotateList.subList(0, reverseShortcutSize));
+                                addTeamRotateMove(moveList, firstShortcutRotateList, secondShortcutRotateList);
+                            }
+                firstTeamIsHomeTeam = !firstTeamIsHomeTeam;
+//                            Team firstRepairHomeTeam = (firstTeamIsHomeTeam ^ shortcut) ? firstTeam : teamToFind;
+//                            Team firstRepairAwayTeam = (firstTeamIsHomeTeam ^ shortcut) ? teamToFind : firstTeam;
+//                            Match firstRepairMatch = homeTeamAwayTeamMap
+//                                    .get(firstRepairHomeTeam).get(firstRepairAwayTeam);
+             firstRepairMatch = homeTeamAwayTeamMap
+                    .get(firstTeamIsHomeTeam ? firstTeam : teamToFind)
+                    .get(firstTeamIsHomeTeam ? teamToFind : firstTeam);
+            }
+
+                            Day repairDay = firstRepairMatch.getDay();
+                            Match secondRepairMatch = teamDayMap.get(secondTeam).get(repairDay);
+                            clonedFirstTeamMatchList.remove(firstRepairMatch);
+                            visitedTeamMap.put(teamToFind, firstRepairMatch);
+                            firstRotateList.add(0, firstRepairMatch);
+                            secondRotateList.add(secondRepairMatch);
+
+                            teamToFind = getOtherTeam(secondRepairMatch, secondTeam);
+                        }
+
+                        addTeamRotateMove(moveList, firstRotateList, secondRotateList);
+                    }
+                }
+            }
+
+        }
+
+        private void addTeamRotateMove(List<Move> moveList, List<Match> firstRotateList, List<Match> secondRotateList) {
+            assert(firstRotateList.size() == secondRotateList.size());
+            // if size is 1 then addCachedHomeAwaySwapMoves will have done it
+            // if size is 2 then addDayRotation will have done it by 1 list of size 4
+            if (firstRotateList.size() > 2) {
+                Move rotateMove = new MultipleMatchListRotateMove(firstRotateList, secondRotateList);
+                moveList.add(rotateMove);
+            }
+        }
+
+    }
+}

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/benchmark/examinationShortSolverBenchmarkConfig.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/benchmark/examinationShortSolverBenchmarkConfig.xml	2008-01-25 16:15:19 UTC (rev 18119)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/benchmark/examinationShortSolverBenchmarkConfig.xml	2008-01-25 16:17:45 UTC (rev 18120)
@@ -20,7 +20,7 @@
     <solverBenchmark>
         <localSearchSolver>
             <selector>
-                <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.PeriodChangeExaminationMoveFactory</moveFactoryClass>
+                <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.PeriodChangeExaminationMoveFactory</moveFactoryClass>
                 <shuffleMovesEveryStep>true</shuffleMovesEveryStep>
             </selector>
             <accepter>

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/benchmark/examinationSolverBenchmarkConfig.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/benchmark/examinationSolverBenchmarkConfig.xml	2008-01-25 16:15:19 UTC (rev 18119)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/benchmark/examinationSolverBenchmarkConfig.xml	2008-01-25 16:17:45 UTC (rev 18120)
@@ -33,7 +33,7 @@
     <!--<solverBenchmark>-->
         <!--<localSearchSolver>-->
             <!--<selector>-->
-                <!--<moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.PeriodChangeExaminationMoveFactory</moveFactoryClass>-->
+                <!--<moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.PeriodChangeExaminationMoveFactory</moveFactoryClass>-->
                 <!--<shuffleMovesEveryStep>true</shuffleMovesEveryStep>-->
             <!--</selector>-->
             <!--<accepter>-->
@@ -48,15 +48,15 @@
         <localSearchSolver>
             <selector>
                 <selector>
-                    <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.PeriodChangeExaminationMoveFactory</moveFactoryClass>
+                    <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.PeriodChangeExaminationMoveFactory</moveFactoryClass>
                     <relativeSelection>0.05</relativeSelection>
                 </selector>
                 <selector>
-                    <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.RoomChangeExaminationMoveFactory</moveFactoryClass>
+                    <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.RoomChangeExaminationMoveFactory</moveFactoryClass>
                     <relativeSelection>0.05</relativeSelection>
                 </selector>
                 <selector>
-                    <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.ExamSwitchExaminationMoveFactory</moveFactoryClass>
+                    <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.ExamSwitchExaminationMoveFactory</moveFactoryClass>
                     <relativeSelection>0.05</relativeSelection>
                 </selector>
             </selector>
@@ -72,15 +72,15 @@
         <localSearchSolver>
             <selector>
                 <selector>
-                    <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.PeriodChangeExaminationMoveFactory</moveFactoryClass>
+                    <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.PeriodChangeExaminationMoveFactory</moveFactoryClass>
                     <relativeSelection>0.01</relativeSelection>
                 </selector>
                 <selector>
-                    <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.RoomChangeExaminationMoveFactory</moveFactoryClass>
+                    <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.RoomChangeExaminationMoveFactory</moveFactoryClass>
                     <relativeSelection>0.01</relativeSelection>
                 </selector>
                 <selector>
-                    <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.ExamSwitchExaminationMoveFactory</moveFactoryClass>
+                    <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.ExamSwitchExaminationMoveFactory</moveFactoryClass>
                     <relativeSelection>0.01</relativeSelection>
                 </selector>
             </selector>

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationSolverConfig.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationSolverConfig.xml	2008-01-25 16:15:19 UTC (rev 18119)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationSolverConfig.xml	2008-01-25 16:17:45 UTC (rev 18120)
@@ -17,15 +17,15 @@
     </finish>
     <selector>
         <selector>
-            <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.PeriodChangeExaminationMoveFactory</moveFactoryClass>
+            <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.PeriodChangeExaminationMoveFactory</moveFactoryClass>
             <relativeSelection>0.002</relativeSelection>
         </selector>
         <selector>
-            <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.RoomChangeExaminationMoveFactory</moveFactoryClass>
+            <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.RoomChangeExaminationMoveFactory</moveFactoryClass>
             <relativeSelection>0.002</relativeSelection>
         </selector>
         <selector>
-            <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.ExamSwitchExaminationMoveFactory</moveFactoryClass>
+            <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.ExamSwitchExaminationMoveFactory</moveFactoryClass>
             <relativeSelection>0.002</relativeSelection>
         </selector>
     </selector>
@@ -36,7 +36,7 @@
         <foragerType>MAX_SCORE_OF_ALL</foragerType>
     </forager>
     <!--<selector>-->
-        <!--<moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.PeriodChangeExaminationMoveFactory</moveFactoryClass>-->
+        <!--<moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.PeriodChangeExaminationMoveFactory</moveFactoryClass>-->
         <!--<shuffleMovesEveryStep>true</shuffleMovesEveryStep>-->
     <!--</selector>-->
     <!--<accepter>-->

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/lessonschedule/solver/lessonScheduleSolverConfig.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/lessonschedule/solver/lessonScheduleSolverConfig.xml	2008-01-25 16:15:19 UTC (rev 18119)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/lessonschedule/solver/lessonScheduleSolverConfig.xml	2008-01-25 16:17:45 UTC (rev 18120)
@@ -8,7 +8,7 @@
         <maximumUnimprovedStepCount>10</maximumUnimprovedStepCount>
     </finish>
     <selector>
-        <moveFactoryClass>org.drools.solver.examples.lessonschedule.solver.LessonScheduleMoveFactory</moveFactoryClass>
+        <moveFactoryClass>org.drools.solver.examples.lessonschedule.solver.move.factory.LessonScheduleMoveFactory</moveFactoryClass>
     </selector>
     <accepter>
         <completeUndoMoveTabuSize>10</completeUndoMoveTabuSize>

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/nqueens/benchmark/nqueensSolverBenchmarkConfig.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/nqueens/benchmark/nqueensSolverBenchmarkConfig.xml	2008-01-25 16:15:19 UTC (rev 18119)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/nqueens/benchmark/nqueensSolverBenchmarkConfig.xml	2008-01-25 16:17:45 UTC (rev 18120)
@@ -19,7 +19,7 @@
             <feasableScore>0.0</feasableScore>
         </finish>
         <selector>
-            <moveFactoryClass>org.drools.solver.examples.nqueens.solver.NQueensMoveFactory</moveFactoryClass>
+            <moveFactoryClass>org.drools.solver.examples.nqueens.solver.move.factory.NQueensMoveFactory</moveFactoryClass>
         </selector>
     </inheritedLocalSearchSolver>
 

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/nqueens/solver/nqueensSolverConfig.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/nqueens/solver/nqueensSolverConfig.xml	2008-01-25 16:15:19 UTC (rev 18119)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/nqueens/solver/nqueensSolverConfig.xml	2008-01-25 16:17:45 UTC (rev 18120)
@@ -10,7 +10,7 @@
         <feasableScore>0.0</feasableScore>
     </finish>
     <selector>
-        <moveFactoryClass>org.drools.solver.examples.nqueens.solver.NQueensMoveFactory</moveFactoryClass>
+        <moveFactoryClass>org.drools.solver.examples.nqueens.solver.move.factory.NQueensMoveFactory</moveFactoryClass>
     </selector>
     <accepter>
         <completeSolutionTabuSize>1000</completeSolutionTabuSize>

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/benchmark/smart/breakNl14SolverBenchmarkConfig.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/benchmark/smart/breakNl14SolverBenchmarkConfig.xml	2008-01-25 16:15:19 UTC (rev 18119)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/benchmark/smart/breakNl14SolverBenchmarkConfig.xml	2008-01-25 16:17:45 UTC (rev 18120)
@@ -11,7 +11,7 @@
             <scoreCalculatorType>DYNAMIC_HARD_AND_SOFT_CONSTRAINTS</scoreCalculatorType>
         </scoreCalculator>
         <selector>
-            <moveFactoryClass>org.drools.solver.examples.travelingtournament.solver.smart.SmartTravelingTournamentMoveFactory</moveFactoryClass>
+            <moveFactoryClass>org.drools.solver.examples.travelingtournament.solver.smart.move.factory.SmartTravelingTournamentMoveFactory</moveFactoryClass>
         </selector>
         <accepter>
             <completeSolutionTabuSize>3000</completeSolutionTabuSize>

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/benchmark/smart/smartTravelingTournamentSolverBenchmarkConfig.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/benchmark/smart/smartTravelingTournamentSolverBenchmarkConfig.xml	2008-01-25 16:15:19 UTC (rev 18119)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/benchmark/smart/smartTravelingTournamentSolverBenchmarkConfig.xml	2008-01-25 16:17:45 UTC (rev 18120)
@@ -14,7 +14,7 @@
             <maximumHouresSpend>2</maximumHouresSpend>
         </finish>
         <selector>
-            <moveFactoryClass>org.drools.solver.examples.travelingtournament.solver.smart.SmartTravelingTournamentMoveFactory</moveFactoryClass>
+            <moveFactoryClass>org.drools.solver.examples.travelingtournament.solver.smart.move.factory.SmartTravelingTournamentMoveFactory</moveFactoryClass>
         </selector>
         <forager>
             <foragerType>MAX_SCORE_OF_ALL</foragerType>

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/simple/simpleTravelingTournamentSolverConfig.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/simple/simpleTravelingTournamentSolverConfig.xml	2008-01-25 16:15:19 UTC (rev 18119)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/simple/simpleTravelingTournamentSolverConfig.xml	2008-01-25 16:17:45 UTC (rev 18120)
@@ -8,7 +8,7 @@
         <maximumHouresSpend>2</maximumHouresSpend>
     </finish>
     <selector>
-        <moveFactoryClass>org.drools.solver.examples.travelingtournament.solver.simple.SimpleTravelingTournamentMoveFactory</moveFactoryClass>
+        <moveFactoryClass>org.drools.solver.examples.travelingtournament.solver.simple.move.factory.SimpleTravelingTournamentMoveFactory</moveFactoryClass>
     </selector>
     <accepter>
         <completeSolutionTabuSize>1500</completeSolutionTabuSize>

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/smart/smartTravelingTournamentSolverConfig.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/smart/smartTravelingTournamentSolverConfig.xml	2008-01-25 16:15:19 UTC (rev 18119)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/smart/smartTravelingTournamentSolverConfig.xml	2008-01-25 16:17:45 UTC (rev 18120)
@@ -9,7 +9,7 @@
         <maximumStepCount>100</maximumStepCount>
     </finish>
     <selector>
-        <moveFactoryClass>org.drools.solver.examples.travelingtournament.solver.smart.SmartTravelingTournamentMoveFactory</moveFactoryClass>
+        <moveFactoryClass>org.drools.solver.examples.travelingtournament.solver.smart.move.factory.SmartTravelingTournamentMoveFactory</moveFactoryClass>
     </selector>
     <accepter>
         <completeSolutionTabuSize>1500</completeSolutionTabuSize>




More information about the jboss-svn-commits mailing list