[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