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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Dec 30 09:46:07 EST 2007


Author: ge0ffrey
Date: 2007-12-30 09:46:07 -0500 (Sun, 30 Dec 2007)
New Revision: 17455

Added:
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/NeighbourExaminationMoveFactory.java
Modified:
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationSolverConfig.xml
Log:
Neighbour...MoveFactory

Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/NeighbourExaminationMoveFactory.java (from rev 17407, labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/ExaminationMoveFactory.java)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/NeighbourExaminationMoveFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/NeighbourExaminationMoveFactory.java	2007-12-30 14:46:07 UTC (rev 17455)
@@ -0,0 +1,54 @@
+package org.drools.solver.examples.itc2007.examination.solver;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.drools.solver.core.localsearch.decider.selector.AbstractMoveFactory;
+import org.drools.solver.core.move.Move;
+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;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class NeighbourExaminationMoveFactory extends AbstractMoveFactory {
+
+    public Iterator<Move> iterator() {
+        List<Move> moveList = new ArrayList<Move>();
+        Examination examination = (Examination) localSearchSolver.getCurrentSolution();
+        List<Period> periodList = examination.getPeriodList();
+        // periodList should not be empty
+        int firstPeriodDay = periodList.get(0).getDateInDays();
+        int lastPeriodDay = periodList.get(periodList.size() - 1).getDateInDays();
+        List<Room> roomList = examination.getRoomList();
+        long firstRoomId = roomList.get(0).getId();
+        long lastRoomId = roomList.get(roomList.size() - 1).getId();
+        for (Exam exam : examination.getExamList()) {
+            for (Period period : periodList) {
+                if ((Math.abs(period.getDateInDays() - exam.getPeriod().getDateInDays()) <= 1)
+                        || (period.getDateInDays() == firstPeriodDay
+                            && exam.getPeriod().getDateInDays() == lastPeriodDay)
+                        || (period.getDateInDays() == lastPeriodDay
+                            && exam.getPeriod().getDateInDays() == firstPeriodDay)
+                        ) {
+                    moveList.add(new PeriodChangeMove(exam, period));
+                }
+            }
+            for (Room room : roomList) {
+                if ((Math.abs(room.getId() - exam.getRoom().getId()) <= 1)
+                        || (room.getId() == firstRoomId
+                            && exam.getRoom().getId() == lastRoomId)
+                        || (room.getId() == lastRoomId
+                            && exam.getRoom().getId() == firstRoomId)
+                        ) {
+                    moveList.add(new RoomChangeMove(exam, room));
+                }
+            }
+        }
+        return moveList.iterator();
+    }
+
+}
\ No newline at end of file

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	2007-12-30 11:54:57 UTC (rev 17454)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationSolverConfig.xml	2007-12-30 14:46:07 UTC (rev 17455)
@@ -8,16 +8,19 @@
         <maximumSecondsSpend>429</maximumSecondsSpend>
         <!--<maximumStepCount>100</maximumStepCount>-->
     </finish>
-    <selector>
-        <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.ExaminationMoveFactory</moveFactoryClass>
-        <shuffleMovesEveryStep>true</shuffleMovesEveryStep>
-    </selector>
+    <!--<selector>-->
+        <!--<moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.NeighbourExaminationMoveFactory</moveFactoryClass>-->
+    <!--</selector>-->
     <!--<accepter>-->
         <!--<completeSolutionTabuSize>1500</completeSolutionTabuSize>-->
     <!--</accepter>-->
     <!--<forager>-->
         <!--<foragerType>MAX_SCORE_OF_ALL</foragerType>-->
     <!--</forager>-->
+    <selector>
+        <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.ExaminationMoveFactory</moveFactoryClass>
+        <shuffleMovesEveryStep>true</shuffleMovesEveryStep>
+    </selector>
     <accepter>
         <accepterType>SIMULATED_ANNEALING</accepterType>
     </accepter>




More information about the jboss-svn-commits mailing list