[jboss-svn-commits] JBL Code SVN: r27229 - in labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main: java/org/drools/solver/examples/patientadmissionschedule/solver/move/factory and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Jun 28 06:58:46 EDT 2009


Author: ge0ffrey
Date: 2009-06-28 06:58:46 -0400 (Sun, 28 Jun 2009)
New Revision: 27229

Added:
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/solver/move/BedChangeMove.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/solver/move/factory/
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/solver/move/factory/BedChangeMoveFactory.java
Modified:
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/patientadmissionschedule/solver/patientAdmissionScheduleSolverConfig.xml
Log:
pas: bed change move

Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/solver/move/BedChangeMove.java (from rev 27222, 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/patientadmissionschedule/solver/move/BedChangeMove.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/solver/move/BedChangeMove.java	2009-06-28 10:58:46 UTC (rev 27229)
@@ -0,0 +1,72 @@
+package org.drools.solver.examples.patientadmissionschedule.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.runtime.rule.FactHandle;
+import org.drools.solver.core.localsearch.decider.accepter.tabu.TabuPropertyEnabled;
+import org.drools.solver.core.move.Move;
+import org.drools.solver.examples.patientadmissionschedule.domain.BedDesignation;
+import org.drools.solver.examples.patientadmissionschedule.domain.Bed;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class BedChangeMove implements Move, TabuPropertyEnabled {
+
+    private BedDesignation bedDesignation;
+    private Bed toBed;
+
+    public BedChangeMove(BedDesignation bedDesignation, Bed toBed) {
+        this.bedDesignation = bedDesignation;
+        this.toBed = toBed;
+    }
+
+    public boolean isMoveDoable(WorkingMemory workingMemory) {
+        return !ObjectUtils.equals(bedDesignation.getBed(), toBed);
+    }
+
+    public Move createUndoMove(WorkingMemory workingMemory) {
+        return new BedChangeMove(bedDesignation, bedDesignation.getBed());
+    }
+
+    public void doMove(WorkingMemory workingMemory) {
+        FactHandle factHandle = workingMemory.getFactHandle(bedDesignation);
+        bedDesignation.setBed(toBed);
+        workingMemory.update(factHandle, bedDesignation);
+    }
+
+    public Collection<? extends Object> getTabuProperties() {
+        return Collections.singletonList(bedDesignation);
+    }
+
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        } else if (o instanceof BedChangeMove) {
+            BedChangeMove other = (BedChangeMove) o;
+            return new EqualsBuilder()
+                    .append(bedDesignation, other.bedDesignation)
+                    .append(toBed, other.toBed)
+                    .isEquals();
+        } else {
+            return false;
+        }
+    }
+
+    public int hashCode() {
+        return new HashCodeBuilder()
+                .append(bedDesignation)
+                .append(toBed)
+                .toHashCode();
+    }
+
+    public String toString() {
+        return bedDesignation + " => " + toBed;
+    }
+
+}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/solver/move/factory/BedChangeMoveFactory.java (from rev 27222, labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/factory/PeriodChangeMoveFactory.java)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/solver/move/factory/BedChangeMoveFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/solver/move/factory/BedChangeMoveFactory.java	2009-06-28 10:58:46 UTC (rev 27229)
@@ -0,0 +1,38 @@
+package org.drools.solver.examples.patientadmissionschedule.solver.move.factory;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.solver.core.move.Move;
+import org.drools.solver.core.move.factory.CachedMoveFactory;
+import org.drools.solver.core.solution.Solution;
+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.solver.move.PeriodChangeMove;
+import org.drools.solver.examples.patientadmissionschedule.domain.PatientAdmissionSchedule;
+import org.drools.solver.examples.patientadmissionschedule.domain.Bed;
+import org.drools.solver.examples.patientadmissionschedule.domain.AdmissionPart;
+import org.drools.solver.examples.patientadmissionschedule.domain.BedDesignation;
+import org.drools.solver.examples.patientadmissionschedule.solver.move.BedChangeMove;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class BedChangeMoveFactory extends CachedMoveFactory {
+
+    public List<Move> createCachedMoveList(Solution solution) {
+        PatientAdmissionSchedule patientAdmissionSchedule = (PatientAdmissionSchedule) solution;
+        List<Bed> bedList = patientAdmissionSchedule.getBedList();
+        List<Move> moveList = new ArrayList<Move>();
+        for (BedDesignation bedDesignation : patientAdmissionSchedule.getBedDesignationList()) {
+            for (Bed bed : bedList) {
+                if (bed.allowsAdmissionPart(bedDesignation.getAdmissionPart())) {
+                    moveList.add(new BedChangeMove(bedDesignation, bed));
+                }
+            }
+        }
+        return moveList;
+    }
+
+}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/patientadmissionschedule/solver/patientAdmissionScheduleSolverConfig.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/patientadmissionschedule/solver/patientAdmissionScheduleSolverConfig.xml	2009-06-28 10:30:52 UTC (rev 27228)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/patientadmissionschedule/solver/patientAdmissionScheduleSolverConfig.xml	2009-06-28 10:58:46 UTC (rev 27229)
@@ -19,17 +19,13 @@
     <!--</deciderScoreComparatorFactory>-->
     <selector>
         <selector>
-            <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.PeriodChangeMoveFactory</moveFactoryClass>
+            <moveFactoryClass>org.drools.solver.examples.patientadmissionschedule.solver.move.factory.BedChangeMoveFactory</moveFactoryClass>
             <relativeSelection>0.002</relativeSelection>
         </selector>
-        <selector>
-            <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.RoomChangeMoveFactory</moveFactoryClass>
-            <relativeSelection>0.002</relativeSelection>
-        </selector>
-        <selector>
-            <moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.ExamSwitchMoveFactory</moveFactoryClass>
-            <relativeSelection>0.002</relativeSelection>
-        </selector>
+        <!--<selector>-->
+            <!--<moveFactoryClass>org.drools.solver.examples.itc2007.examination.solver.move.factory.ExamSwitchMoveFactory</moveFactoryClass>-->
+            <!--<relativeSelection>0.002</relativeSelection>-->
+        <!--</selector>-->
     </selector>
     <accepter>
         <completeSolutionTabuSize>1000</completeSolutionTabuSize>




More information about the jboss-svn-commits mailing list