[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