[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