[jboss-svn-commits] JBL Code SVN: r19192 - labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/solver/move.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Mar 21 16:38:49 EDT 2008
Author: ge0ffrey
Date: 2008-03-21 16:38:49 -0400 (Fri, 21 Mar 2008)
New Revision: 19192
Added:
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/solver/move/CurriculumCourseMoveHelper.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/solver/move/LectureSwitchMove.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/solver/move/PeriodChangeMove.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/solver/move/RoomChangeMove.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/solver/move/factory/
Log:
curruculumcourse moves
Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/solver/move/CurriculumCourseMoveHelper.java (from rev 19190, labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/ExaminationMoveHelper.java)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/solver/move/CurriculumCourseMoveHelper.java (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/solver/move/CurriculumCourseMoveHelper.java 2008-03-21 20:38:49 UTC (rev 19192)
@@ -0,0 +1,39 @@
+package org.drools.solver.examples.itc2007.curriculumcourse.solver.move;
+
+import org.drools.FactHandle;
+import org.drools.WorkingMemory;
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.Lecture;
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.Period;
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.Room;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class CurriculumCourseMoveHelper {
+
+ public static void movePeriod(WorkingMemory workingMemory, Lecture lecture, Period period) {
+ FactHandle factHandle = workingMemory.getFactHandle(lecture);
+ workingMemory.modifyRetract(factHandle);
+ lecture.setPeriod(period);
+ workingMemory.modifyInsert(factHandle, lecture);
+ }
+
+ public static void moveRoom(WorkingMemory workingMemory, Lecture lecture, Room room) {
+ FactHandle factHandle = workingMemory.getFactHandle(lecture);
+ workingMemory.modifyRetract(factHandle);
+ lecture.setRoom(room);
+ workingMemory.modifyInsert(factHandle, lecture);
+ }
+
+ public static void moveLecture(WorkingMemory workingMemory, Lecture lecture, Period period, Room room) {
+ FactHandle factHandle = workingMemory.getFactHandle(lecture);
+ workingMemory.modifyRetract(factHandle);
+ lecture.setPeriod(period);
+ lecture.setRoom(room);
+ workingMemory.modifyInsert(factHandle, lecture);
+ }
+
+ private CurriculumCourseMoveHelper() {
+ }
+
+}
\ No newline at end of file
Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/solver/move/LectureSwitchMove.java (from rev 19190, labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/ExamSwitchMove.java)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/solver/move/LectureSwitchMove.java (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/solver/move/LectureSwitchMove.java 2008-03-21 20:38:49 UTC (rev 19192)
@@ -0,0 +1,85 @@
+package org.drools.solver.lectureples.itc2007.curriculumcourse.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.WorkingMemory;
+import org.drools.solver.core.localsearch.decider.accepter.tabu.TabuPropertyEnabled;
+import org.drools.solver.core.move.Move;
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.Lecture;
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.Period;
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.Room;
+import org.drools.solver.examples.itc2007.curriculumcourse.solver.move.CurriculumCourseMoveHelper;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class LectureSwitchMove implements Move, TabuPropertyEnabled {
+
+ private Lecture leftLecture;
+ private Lecture rightLecture;
+
+ public LectureSwitchMove(Lecture leftLecture, Lecture rightLecture) {
+ this.leftLecture = leftLecture;
+ this.rightLecture = rightLecture;
+ }
+
+ public boolean isMoveDoable(WorkingMemory workingMemory) {
+ return !(ObjectUtils.equals(leftLecture.getPeriod(), rightLecture.getPeriod())
+ && ObjectUtils.equals(leftLecture.getRoom(), rightLecture.getRoom()));
+ }
+
+ public Move createUndoMove(WorkingMemory workingMemory) {
+ return new LectureSwitchMove(rightLecture, leftLecture);
+ }
+
+ public void doMove(WorkingMemory workingMemory) {
+ Period oldLeftPeriod = leftLecture.getPeriod();
+ Period oldRightPeriod = rightLecture.getPeriod();
+ Room oldLeftRoom = leftLecture.getRoom();
+ Room oldRightRoom = rightLecture.getRoom();
+ if (oldLeftPeriod.equals(oldRightPeriod)) {
+ CurriculumCourseMoveHelper.moveRoom(workingMemory, leftLecture, oldRightRoom);
+ CurriculumCourseMoveHelper.moveRoom(workingMemory, rightLecture, oldLeftRoom);
+ } else if (oldLeftRoom.equals(oldRightRoom)) {
+ CurriculumCourseMoveHelper.movePeriod(workingMemory, leftLecture, oldRightPeriod);
+ CurriculumCourseMoveHelper.movePeriod(workingMemory, rightLecture, oldLeftPeriod);
+ } else {
+ CurriculumCourseMoveHelper.moveLecture(workingMemory, leftLecture, oldRightPeriod, oldRightRoom);
+ CurriculumCourseMoveHelper.moveLecture(workingMemory, rightLecture, oldLeftPeriod, oldLeftRoom);
+ }
+ }
+
+ public Collection<? extends Object> getTabuProperties() {
+ return Arrays.<Lecture>asList(leftLecture, rightLecture);
+ }
+
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ } else if (o instanceof LectureSwitchMove) {
+ LectureSwitchMove other = (LectureSwitchMove) o;
+ return new EqualsBuilder()
+ .append(leftLecture, other.leftLecture)
+ .append(rightLecture, other.rightLecture)
+ .isEquals();
+ } else {
+ return false;
+ }
+ }
+
+ public int hashCode() {
+ return new HashCodeBuilder()
+ .append(leftLecture)
+ .append(rightLecture)
+ .toHashCode();
+ }
+
+ public String toString() {
+ return leftLecture + " <=> " + rightLecture;
+ }
+
+}
\ No newline at end of file
Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/solver/move/PeriodChangeMove.java (from rev 19190, 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/curriculumcourse/solver/move/PeriodChangeMove.java (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/solver/move/PeriodChangeMove.java 2008-03-21 20:38:49 UTC (rev 19192)
@@ -0,0 +1,70 @@
+package org.drools.solver.lectureples.itc2007.curriculumcourse.solver.move;
+
+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.WorkingMemory;
+import org.drools.solver.core.localsearch.decider.accepter.tabu.TabuPropertyEnabled;
+import org.drools.solver.core.move.Move;
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.Lecture;
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.Period;
+import org.drools.solver.examples.itc2007.curriculumcourse.solver.move.CurriculumCourseMoveHelper;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class PeriodChangeMove implements Move, TabuPropertyEnabled {
+
+ private Lecture lecture;
+ private Period toPeriod;
+
+ public PeriodChangeMove(Lecture lecture, Period toPeriod) {
+ this.lecture = lecture;
+ this.toPeriod = toPeriod;
+ }
+
+ public boolean isMoveDoable(WorkingMemory workingMemory) {
+ return !ObjectUtils.equals(lecture.getPeriod(), toPeriod);
+ }
+
+ public Move createUndoMove(WorkingMemory workingMemory) {
+ return new PeriodChangeMove(lecture, lecture.getPeriod());
+ }
+
+ public void doMove(WorkingMemory workingMemory) {
+ CurriculumCourseMoveHelper.movePeriod(workingMemory, lecture, toPeriod);
+ }
+
+ public Collection<? extends Object> getTabuProperties() {
+ return Collections.singletonList(lecture);
+ }
+
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ } else if (o instanceof PeriodChangeMove) {
+ PeriodChangeMove other = (PeriodChangeMove) o;
+ return new EqualsBuilder()
+ .append(lecture, other.lecture)
+ .append(toPeriod, other.toPeriod)
+ .isEquals();
+ } else {
+ return false;
+ }
+ }
+
+ public int hashCode() {
+ return new HashCodeBuilder()
+ .append(lecture)
+ .append(toPeriod)
+ .toHashCode();
+ }
+
+ public String toString() {
+ return lecture + " => " + toPeriod;
+ }
+
+}
\ No newline at end of file
Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/solver/move/RoomChangeMove.java (from rev 19190, 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/curriculumcourse/solver/move/RoomChangeMove.java (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/solver/move/RoomChangeMove.java 2008-03-21 20:38:49 UTC (rev 19192)
@@ -0,0 +1,69 @@
+package org.drools.solver.examples.itc2007.curriculumcourse.solver.move;
+
+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.WorkingMemory;
+import org.drools.solver.core.localsearch.decider.accepter.tabu.TabuPropertyEnabled;
+import org.drools.solver.core.move.Move;
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.Lecture;
+import org.drools.solver.examples.itc2007.curriculumcourse.domain.Room;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class RoomChangeMove implements Move, TabuPropertyEnabled {
+
+ private Lecture lecture;
+ private Room toRoom;
+
+ public RoomChangeMove(Lecture lecture, Room toRoom) {
+ this.lecture = lecture;
+ this.toRoom = toRoom;
+ }
+
+ public boolean isMoveDoable(WorkingMemory workingMemory) {
+ return !ObjectUtils.equals(lecture.getRoom(), toRoom);
+ }
+
+ public Move createUndoMove(WorkingMemory workingMemory) {
+ return new RoomChangeMove(lecture, lecture.getRoom());
+ }
+
+ public void doMove(WorkingMemory workingMemory) {
+ CurriculumCourseMoveHelper.moveRoom(workingMemory, lecture, toRoom);
+ }
+
+ public Collection<? extends Object> getTabuProperties() {
+ return Collections.singletonList(lecture);
+ }
+
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ } else if (o instanceof RoomChangeMove) {
+ RoomChangeMove other = (RoomChangeMove) o;
+ return new EqualsBuilder()
+ .append(lecture, other.lecture)
+ .append(toRoom, other.toRoom)
+ .isEquals();
+ } else {
+ return false;
+ }
+ }
+
+ public int hashCode() {
+ return new HashCodeBuilder()
+ .append(lecture)
+ .append(toRoom)
+ .toHashCode();
+ }
+
+ public String toString() {
+ return lecture + " => " + toRoom;
+ }
+
+}
\ No newline at end of file
More information about the jboss-svn-commits
mailing list