[jboss-svn-commits] JBL Code SVN: r17982 - in labs/jbossrules/trunk/drools-solver: drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Jan 20 06:11:35 EST 2008
Author: ge0ffrey
Date: 2008-01-20 06:11:34 -0500 (Sun, 20 Jan 2008)
New Revision: 17982
Added:
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/PeriodChangeBulkMove.java
Modified:
labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/tabu/AbstractTabuAccepter.java
labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/tabu/MoveTabuAccepter.java
labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/tabu/PropertyTabuAccepter.java
labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/tabu/SolutionTabuAccepter.java
labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/tabu/TabuPropertyEnabled.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
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/move/MatchSwapMove.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/move/MultipleMatchListRotateMove.java
Log:
tabuProperties can also be a Set, not just a List
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/tabu/AbstractTabuAccepter.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/tabu/AbstractTabuAccepter.java 2008-01-20 10:48:36 UTC (rev 17981)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/tabu/AbstractTabuAccepter.java 2008-01-20 11:11:34 UTC (rev 17982)
@@ -1,5 +1,6 @@
package org.drools.solver.core.localsearch.decider.accepter.tabu;
+import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
@@ -54,9 +55,9 @@
}
public double calculateAcceptChance(Move move, double score) {
- List<? extends Object> tabuList = findTabu(move);
+ Collection<? extends Object> tabus = findTabu(move);
int maximumTabuStepIndex = -1;
- for (Object tabu : tabuList) {
+ for (Object tabu : tabus) {
Integer tabuStepIndexInteger = tabuToStepIndexMap.get(tabu);
if (tabuStepIndexInteger != null) {
maximumTabuStepIndex = Math.max(tabuStepIndexInteger, maximumTabuStepIndex);
@@ -84,8 +85,8 @@
@Override
public void stepDecided(Move step) {
if (step != null) { // TODO fixme by better use of lifecycle method
- List<? extends Object> tabuList = findNewTabu(step);
- for (Object tabu : tabuList) {
+ Collection<? extends Object> tabus = findNewTabu(step);
+ for (Object tabu : tabus) {
// required to push tabu to the end of the line
if (tabuToStepIndexMap.containsKey(tabu)) {
tabuToStepIndexMap.remove(tabu);
@@ -104,9 +105,9 @@
}
}
- protected abstract List<? extends Object> findTabu(Move move);
+ protected abstract Collection<? extends Object> findTabu(Move move);
- protected List<? extends Object> findNewTabu(Move step) {
+ protected Collection<? extends Object> findNewTabu(Move step) {
return findTabu(step);
}
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/tabu/MoveTabuAccepter.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/tabu/MoveTabuAccepter.java 2008-01-20 10:48:36 UTC (rev 17981)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/tabu/MoveTabuAccepter.java 2008-01-20 11:11:34 UTC (rev 17982)
@@ -1,7 +1,7 @@
package org.drools.solver.core.localsearch.decider.accepter.tabu;
+import java.util.Collection;
import java.util.Collections;
-import java.util.List;
import org.drools.solver.core.move.Move;
@@ -21,14 +21,15 @@
// ************************************************************************
@Override
- protected List<? extends Object> findTabu(Move move) {
+ protected Collection<? extends Object> findTabu(Move move) {
return Collections.singletonList(move);
}
@Override
- protected List<? extends Object> findNewTabu(Move step) {
+ protected Collection<? extends Object> findNewTabu(Move step) {
if (useUndoMoveAsTabuMove) {
- return Collections.singletonList(step.createUndoMove(localSearchSolver.getEvaluationHandler().getStatefulSession()));
+ return Collections.singletonList(step.createUndoMove(
+ localSearchSolver.getEvaluationHandler().getStatefulSession()));
} else {
return Collections.singletonList(step);
}
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/tabu/PropertyTabuAccepter.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/tabu/PropertyTabuAccepter.java 2008-01-20 10:48:36 UTC (rev 17981)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/tabu/PropertyTabuAccepter.java 2008-01-20 11:11:34 UTC (rev 17982)
@@ -1,6 +1,6 @@
package org.drools.solver.core.localsearch.decider.accepter.tabu;
-import java.util.List;
+import java.util.Collection;
import org.drools.solver.core.move.Move;
@@ -14,9 +14,9 @@
// ************************************************************************
@Override
- protected List<? extends Object> findTabu(Move move) {
+ protected Collection<? extends Object> findTabu(Move move) {
TabuPropertyEnabled tabuPropertyEnabled = (TabuPropertyEnabled) move;
- return tabuPropertyEnabled.getTabuPropertyList();
+ return tabuPropertyEnabled.getTabuProperties();
}
}
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/tabu/SolutionTabuAccepter.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/tabu/SolutionTabuAccepter.java 2008-01-20 10:48:36 UTC (rev 17981)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/tabu/SolutionTabuAccepter.java 2008-01-20 11:11:34 UTC (rev 17982)
@@ -1,7 +1,7 @@
package org.drools.solver.core.localsearch.decider.accepter.tabu;
+import java.util.Collection;
import java.util.Collections;
-import java.util.List;
import org.drools.solver.core.move.Move;
@@ -15,12 +15,12 @@
// ************************************************************************
@Override
- protected List<? extends Object> findTabu(Move move) {
+ protected Collection<? extends Object> findTabu(Move move) {
return Collections.singletonList(localSearchSolver.getCurrentSolution());
}
@Override
- protected List<? extends Object> findNewTabu(Move step) {
+ protected Collection<? extends Object> findNewTabu(Move step) {
return Collections.singletonList(localSearchSolver.getCurrentSolution().cloneSolution());
}
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/tabu/TabuPropertyEnabled.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/tabu/TabuPropertyEnabled.java 2008-01-20 10:48:36 UTC (rev 17981)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/tabu/TabuPropertyEnabled.java 2008-01-20 11:11:34 UTC (rev 17982)
@@ -1,12 +1,12 @@
package org.drools.solver.core.localsearch.decider.accepter.tabu;
-import java.util.List;
+import java.util.Collection;
/**
* @author Geoffrey De Smet
*/
public interface TabuPropertyEnabled {
- List<? extends Object> getTabuPropertyList();
+ Collection<? extends Object> getTabuProperties();
}
Copied: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/PeriodChangeBulkMove.java (from rev 17981, 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/PeriodChangeBulkMove.java (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/PeriodChangeBulkMove.java 2008-01-20 11:11:34 UTC (rev 17982)
@@ -0,0 +1,83 @@
+package org.drools.solver.examples.itc2007.examination.solver.move;
+
+import java.util.Collection;
+
+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;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class PeriodChangeBulkMove implements Move, TabuPropertyEnabled {
+
+ private Collection<Exam> exams;
+ private Period toPeriod;
+
+ public PeriodChangeBulkMove(Collection<Exam> exams, Period toPeriod) {
+ this.exams = exams;
+ if (exams.isEmpty()) {
+ throw new IllegalArgumentException("The exams is empty.");
+ }
+ this.toPeriod = toPeriod;
+ }
+
+ public boolean isMoveDoable(WorkingMemory workingMemory) {
+ Period fromPeriod = extractFromPeriod();
+ if (fromPeriod == null) {
+ return (toPeriod != null);
+ }
+ return !fromPeriod.equals(toPeriod);
+ }
+
+ private Period extractFromPeriod() {
+ return exams.iterator().next().getPeriod();
+ }
+
+ public Move createUndoMove(WorkingMemory workingMemory) {
+ return new PeriodChangeBulkMove(exams, extractFromPeriod());
+ }
+
+ public void doMove(WorkingMemory workingMemory) {
+ for (Exam exam : exams) {
+ FactHandle lessonHandle = workingMemory.getFactHandle(exam);
+ exam.setPeriod(toPeriod);
+ workingMemory.update(lessonHandle, exam);
+ }
+ }
+
+ public Collection<? extends Object> getTabuProperties() {
+ return exams;
+ }
+
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ } else if (o instanceof PeriodChangeBulkMove) {
+ PeriodChangeBulkMove other = (PeriodChangeBulkMove) o;
+ return new EqualsBuilder()
+ .append(exams, other.exams)
+ .append(toPeriod, other.toPeriod)
+ .isEquals();
+ } else {
+ return false;
+ }
+ }
+
+ public int hashCode() {
+ return new HashCodeBuilder()
+ .append(exams)
+ .append(toPeriod)
+ .toHashCode();
+ }
+
+ public String toString() {
+ return exams + " => " + toPeriod;
+ }
+
+}
\ 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/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-20 10:48:36 UTC (rev 17981)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/PeriodChangeMove.java 2008-01-20 11:11:34 UTC (rev 17982)
@@ -1,7 +1,7 @@
package org.drools.solver.examples.itc2007.examination.solver.move;
+import java.util.Collection;
import java.util.Collections;
-import java.util.List;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
@@ -43,7 +43,7 @@
workingMemory.update(lessonHandle, exam);
}
- public List<? extends Object> getTabuPropertyList() {
+ public Collection<? extends Object> getTabuProperties() {
return Collections.singletonList(exam);
}
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-20 10:48:36 UTC (rev 17981)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/RoomChangeMove.java 2008-01-20 11:11:34 UTC (rev 17982)
@@ -1,7 +1,7 @@
package org.drools.solver.examples.itc2007.examination.solver.move;
+import java.util.Collection;
import java.util.Collections;
-import java.util.List;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
@@ -43,7 +43,7 @@
workingMemory.update(lessonHandle, exam);
}
- public List<? extends Object> getTabuPropertyList() {
+ public Collection<? extends Object> getTabuProperties() {
return Collections.singletonList(exam);
}
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-20 10:48:36 UTC (rev 17981)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/solver/move/TimeslotChangeMove.java 2008-01-20 11:11:34 UTC (rev 17982)
@@ -1,7 +1,7 @@
package org.drools.solver.examples.lessonschedule.solver.move;
+import java.util.Collection;
import java.util.Collections;
-import java.util.List;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
@@ -43,7 +43,7 @@
workingMemory.update(lessonHandle, lesson);
}
- public List<? extends Object> getTabuPropertyList() {
+ public Collection<? extends Object> getTabuProperties() {
return Collections.singletonList(lesson);
}
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-20 10:48:36 UTC (rev 17981)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/solver/move/YChangeMove.java 2008-01-20 11:11:34 UTC (rev 17982)
@@ -1,7 +1,7 @@
package org.drools.solver.examples.nqueens.solver.move;
+import java.util.Collection;
import java.util.Collections;
-import java.util.List;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
@@ -39,7 +39,7 @@
workingMemory.update(queenHandle, queen);
}
- public List<? extends Object> getTabuPropertyList() {
+ public Collection<? extends Object> getTabuProperties() {
return Collections.singletonList(queen);
}
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-20 10:48:36 UTC (rev 17981)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/simple/move/DayChangeMove.java 2008-01-20 11:11:34 UTC (rev 17982)
@@ -1,7 +1,7 @@
package org.drools.solver.examples.travelingtournament.solver.simple.move;
+import java.util.Collection;
import java.util.Collections;
-import java.util.List;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
@@ -43,7 +43,7 @@
workingMemory.update(matchHandle, match);
}
- public List<? extends Object> getTabuPropertyList() {
+ public Collection<? extends Object> getTabuProperties() {
return Collections.singletonList(match);
}
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/move/MatchSwapMove.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/move/MatchSwapMove.java 2008-01-20 10:48:36 UTC (rev 17981)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/move/MatchSwapMove.java 2008-01-20 11:11:34 UTC (rev 17982)
@@ -1,7 +1,7 @@
package org.drools.solver.examples.travelingtournament.solver.smart.move;
import java.util.Arrays;
-import java.util.List;
+import java.util.Collection;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
@@ -43,7 +43,7 @@
workingMemory.update(secondMatchHandle, secondMatch);
}
- public List<? extends Object> getTabuPropertyList() {
+ public Collection<? extends Object> getTabuProperties() {
return Arrays.asList(firstMatch, secondMatch);
}
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/move/MultipleMatchListRotateMove.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/move/MultipleMatchListRotateMove.java 2008-01-20 10:48:36 UTC (rev 17981)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/move/MultipleMatchListRotateMove.java 2008-01-20 11:11:34 UTC (rev 17982)
@@ -1,6 +1,7 @@
package org.drools.solver.examples.travelingtournament.solver.smart.move;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -63,7 +64,7 @@
workingMemory.update(secondMatchHandle, secondMatch);
}
- public List<? extends Object> getTabuPropertyList() {
+ public Collection<? extends Object> getTabuProperties() {
List<Match> tabuPropertyList = new ArrayList<Match>(firstMatchList.size() + secondMatchList.size());
tabuPropertyList.addAll(firstMatchList);
tabuPropertyList.addAll(secondMatchList);
More information about the jboss-svn-commits
mailing list