[jboss-svn-commits] JBL Code SVN: r18043 - in labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples: lessonschedule/solver/move and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jan 22 16:30:40 EST 2008


Author: ge0ffrey
Date: 2008-01-22 16:30:40 -0500 (Tue, 22 Jan 2008)
New Revision: 18043

Added:
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/ExamSwitchMove.java
Modified:
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/PeriodChangeBulkMove.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/PeriodChangeMove.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/RoomChangeMove.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/solver/move/TimeslotChangeMove.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/solver/move/YChangeMove.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/simple/move/DayChangeMove.java
Log:
ExamSwitchMove

Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/ExamSwitchMove.java (from rev 17991, labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/RoomChangeMove.java)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/ExamSwitchMove.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/ExamSwitchMove.java	2008-01-22 21:30:40 UTC (rev 18043)
@@ -0,0 +1,81 @@
+package org.drools.solver.examples.itc2007.examination.solver.move;
+
+import java.util.Arrays;
+import java.util.Collection;
+
+import org.apache.commons.lang.ObjectUtils;
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.drools.FactHandle;
+import org.drools.WorkingMemory;
+import org.drools.solver.core.localsearch.decider.accepter.tabu.TabuPropertyEnabled;
+import org.drools.solver.core.move.Move;
+import org.drools.solver.examples.itc2007.examination.domain.Exam;
+import org.drools.solver.examples.itc2007.examination.domain.Period;
+import org.drools.solver.examples.itc2007.examination.domain.Room;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class ExamSwitchMove implements Move, TabuPropertyEnabled {
+
+    private Exam leftExam;
+    private Exam rightExam;
+
+    public ExamSwitchMove(Exam leftExam, Exam rightExam) {
+        this.leftExam = leftExam;
+        this.rightExam = rightExam;
+    }
+
+    public boolean isMoveDoable(WorkingMemory workingMemory) {
+        return !(ObjectUtils.equals(leftExam.getPeriod(), rightExam.getPeriod())
+                && ObjectUtils.equals(leftExam.getRoom(), rightExam.getRoom()));
+    }
+
+    public Move createUndoMove(WorkingMemory workingMemory) {
+        return new ExamSwitchMove(rightExam, leftExam);
+    }
+
+    public void doMove(WorkingMemory workingMemory) {
+        FactHandle leftExamHandle = workingMemory.getFactHandle(leftExam);
+        FactHandle rightExamHandle = workingMemory.getFactHandle(rightExam);
+        Period oldLeftPeriod = leftExam.getPeriod();
+        Room oldLeftRoom = leftExam.getRoom();
+        leftExam.setPeriod(rightExam.getPeriod());
+        leftExam.setRoom(rightExam.getRoom());
+        rightExam.setPeriod(oldLeftPeriod);
+        rightExam.setRoom(oldLeftRoom);
+        workingMemory.update(leftExamHandle, leftExam);
+        workingMemory.update(rightExamHandle, rightExam);
+    }
+
+    public Collection<? extends Object> getTabuProperties() {
+        return Arrays.<Exam>asList(leftExam, rightExam);
+    }
+
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        } else if (o instanceof ExamSwitchMove) {
+            ExamSwitchMove other = (ExamSwitchMove) o;
+            return new EqualsBuilder()
+                    .append(leftExam, other.leftExam)
+                    .append(rightExam, other.rightExam)
+                    .isEquals();
+        } else {
+            return false;
+        }
+    }
+
+    public int hashCode() {
+        return new HashCodeBuilder()
+                .append(leftExam)
+                .append(rightExam)
+                .toHashCode();
+    }
+
+    public String toString() {
+        return leftExam + " <=> " + rightExam;
+    }
+
+}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/PeriodChangeBulkMove.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/PeriodChangeBulkMove.java	2008-01-22 21:26:55 UTC (rev 18042)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/PeriodChangeBulkMove.java	2008-01-22 21:30:40 UTC (rev 18043)
@@ -2,6 +2,7 @@
 
 import java.util.Collection;
 
+import org.apache.commons.lang.ObjectUtils;
 import org.apache.commons.lang.builder.EqualsBuilder;
 import org.apache.commons.lang.builder.HashCodeBuilder;
 import org.drools.FactHandle;
@@ -28,11 +29,7 @@
     }
 
     public boolean isMoveDoable(WorkingMemory workingMemory) {
-        Period fromPeriod = extractFromPeriod();
-        if (fromPeriod == null) {
-            return (toPeriod != null);
-        }
-        return !fromPeriod.equals(toPeriod);
+        return !ObjectUtils.equals(extractFromPeriod(), toPeriod);
     }
 
     private Period extractFromPeriod() {
@@ -45,9 +42,9 @@
 
     public void doMove(WorkingMemory workingMemory) {
         for (Exam exam : exams) {
-            FactHandle lessonHandle = workingMemory.getFactHandle(exam);
+            FactHandle examHandle = workingMemory.getFactHandle(exam);
             exam.setPeriod(toPeriod);
-            workingMemory.update(lessonHandle, exam);
+            workingMemory.update(examHandle, exam);
         }
     }
 

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/PeriodChangeMove.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/PeriodChangeMove.java	2008-01-22 21:26:55 UTC (rev 18042)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/PeriodChangeMove.java	2008-01-22 21:30:40 UTC (rev 18043)
@@ -3,6 +3,7 @@
 import java.util.Collection;
 import java.util.Collections;
 
+import org.apache.commons.lang.ObjectUtils;
 import org.apache.commons.lang.builder.EqualsBuilder;
 import org.apache.commons.lang.builder.HashCodeBuilder;
 import org.drools.FactHandle;
@@ -26,11 +27,7 @@
     }
 
     public boolean isMoveDoable(WorkingMemory workingMemory) {
-        Period fromPeriod = exam.getPeriod();
-        if (fromPeriod == null) {
-            return (toPeriod != null);
-        }
-        return !fromPeriod.equals(toPeriod);
+        return !ObjectUtils.equals(exam.getPeriod(), toPeriod);
     }
 
     public Move createUndoMove(WorkingMemory workingMemory) {
@@ -38,9 +35,9 @@
     }
 
     public void doMove(WorkingMemory workingMemory) {
-        FactHandle lessonHandle = workingMemory.getFactHandle(exam);
+        FactHandle examHandle = workingMemory.getFactHandle(exam);
         exam.setPeriod(toPeriod);
-        workingMemory.update(lessonHandle, exam);
+        workingMemory.update(examHandle, exam);
     }
 
     public Collection<? extends Object> getTabuProperties() {

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/RoomChangeMove.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/RoomChangeMove.java	2008-01-22 21:26:55 UTC (rev 18042)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/RoomChangeMove.java	2008-01-22 21:30:40 UTC (rev 18043)
@@ -3,6 +3,7 @@
 import java.util.Collection;
 import java.util.Collections;
 
+import org.apache.commons.lang.ObjectUtils;
 import org.apache.commons.lang.builder.EqualsBuilder;
 import org.apache.commons.lang.builder.HashCodeBuilder;
 import org.drools.FactHandle;
@@ -26,11 +27,7 @@
     }
 
     public boolean isMoveDoable(WorkingMemory workingMemory) {
-        Room fromRoom = exam.getRoom();
-        if (fromRoom == null) {
-            return (toRoom != null);
-        }
-        return !fromRoom.equals(toRoom);
+        return !ObjectUtils.equals(exam.getRoom(), toRoom);
     }
 
     public Move createUndoMove(WorkingMemory workingMemory) {
@@ -38,9 +35,9 @@
     }
 
     public void doMove(WorkingMemory workingMemory) {
-        FactHandle lessonHandle = workingMemory.getFactHandle(exam);
+        FactHandle examHandle = workingMemory.getFactHandle(exam);
         exam.setRoom(toRoom);
-        workingMemory.update(lessonHandle, exam);
+        workingMemory.update(examHandle, exam);
     }
 
     public Collection<? extends Object> getTabuProperties() {

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/solver/move/TimeslotChangeMove.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/solver/move/TimeslotChangeMove.java	2008-01-22 21:26:55 UTC (rev 18042)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/solver/move/TimeslotChangeMove.java	2008-01-22 21:30:40 UTC (rev 18043)
@@ -3,6 +3,7 @@
 import java.util.Collection;
 import java.util.Collections;
 
+import org.apache.commons.lang.ObjectUtils;
 import org.apache.commons.lang.builder.EqualsBuilder;
 import org.apache.commons.lang.builder.HashCodeBuilder;
 import org.drools.FactHandle;
@@ -26,11 +27,7 @@
     }
 
     public boolean isMoveDoable(WorkingMemory workingMemory) {
-        Timeslot fromTimeslot = lesson.getTimeslot();
-        if (fromTimeslot == null) {
-            return (toTimeslot != null);
-        }
-        return !fromTimeslot.equals(toTimeslot);
+        return !ObjectUtils.equals(lesson.getTimeslot(), toTimeslot);
     }
 
     public Move createUndoMove(WorkingMemory workingMemory) {

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/solver/move/YChangeMove.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/solver/move/YChangeMove.java	2008-01-22 21:26:55 UTC (rev 18042)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/solver/move/YChangeMove.java	2008-01-22 21:30:40 UTC (rev 18043)
@@ -25,8 +25,7 @@
     }
 
     public boolean isMoveDoable(WorkingMemory workingMemory) {
-        int fromY = queen.getY();
-        return fromY != toY;
+        return queen.getY() != toY;
     }
 
     public Move createUndoMove(WorkingMemory workingMemory) {

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/simple/move/DayChangeMove.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/simple/move/DayChangeMove.java	2008-01-22 21:26:55 UTC (rev 18042)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/simple/move/DayChangeMove.java	2008-01-22 21:30:40 UTC (rev 18043)
@@ -3,6 +3,7 @@
 import java.util.Collection;
 import java.util.Collections;
 
+import org.apache.commons.lang.ObjectUtils;
 import org.apache.commons.lang.builder.EqualsBuilder;
 import org.apache.commons.lang.builder.HashCodeBuilder;
 import org.drools.FactHandle;
@@ -26,11 +27,7 @@
     }
 
     public boolean isMoveDoable(WorkingMemory workingMemory) {
-        Day fromDay = match.getDay();
-        if (fromDay == null) {
-            return (toDay != null);
-        }
-        return !fromDay.equals(toDay);
+        return !ObjectUtils.equals(match.getDay(), toDay);
     }
 
     public Move createUndoMove(WorkingMemory workingMemory) {




More information about the jboss-svn-commits mailing list