[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