[jboss-svn-commits] JBL Code SVN: r23271 - in labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch: decider and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Oct 2 14:16:44 EDT 2008
Author: ge0ffrey
Date: 2008-10-02 14:16:43 -0400 (Thu, 02 Oct 2008)
New Revision: 23271
Modified:
labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/StepScope.java
labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/DefaultDecider.java
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
Log:
fix bug that caused last improving step to be not done for best solution
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/StepScope.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/StepScope.java 2008-10-02 17:18:29 UTC (rev 23270)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/StepScope.java 2008-10-02 18:16:43 UTC (rev 23271)
@@ -16,6 +16,7 @@
private int stepIndex = -1;
private double timeGradient = Double.NaN;
private Move step = null;
+ private Move undoStep = null;
private double score = Double.NaN;
private Solution clonedSolution = null;
@@ -51,6 +52,14 @@
this.step = step;
}
+ public Move getUndoStep() {
+ return undoStep;
+ }
+
+ public void setUndoStep(Move undoStep) {
+ this.undoStep = undoStep;
+ }
+
public double getScore() {
return score;
}
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/DefaultDecider.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/DefaultDecider.java 2008-10-02 17:18:29 UTC (rev 23270)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/DefaultDecider.java 2008-10-02 18:16:43 UTC (rev 23271)
@@ -87,7 +87,9 @@
}
MoveScope pickedMoveScope = forager.pickMove(stepScope);
if (pickedMoveScope != null) {
- stepScope.setStep(pickedMoveScope.getMove());
+ Move step = pickedMoveScope.getMove();
+ stepScope.setStep(step);
+ stepScope.setUndoStep(step.createUndoMove(workingMemory));
stepScope.setScore(pickedMoveScope.getScore());
}
}
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-10-02 17:18:29 UTC (rev 23270)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/tabu/AbstractTabuAccepter.java 2008-10-02 18:16:43 UTC (rev 23271)
@@ -97,25 +97,23 @@
}
@Override
- public void stepDecided(StepScope stepScope) {
- if (stepScope.getStep() != null) { // TODO fixme by better use of lifecycle method
- Collection<? extends Object> tabus = findNewTabu(stepScope);
- for (Object tabu : tabus) {
- // required to push tabu to the end of the line
- if (tabuToStepIndexMap.containsKey(tabu)) {
- tabuToStepIndexMap.remove(tabu);
- tabuSequenceList.remove(tabu);
- }
- int maximumTabuListSize = completeTabuSize + partialTabuSize; // is at least 1
- while (tabuSequenceList.size() >= maximumTabuListSize) {
- Iterator<Object> it = tabuSequenceList.iterator();
- Object removeTabu = it.next();
- it.remove();
- tabuToStepIndexMap.remove(removeTabu);
- }
- tabuToStepIndexMap.put(tabu, stepScope.getStepIndex());
- tabuSequenceList.add(tabu);
+ public void stepTaken(StepScope stepScope) {
+ Collection<? extends Object> tabus = findNewTabu(stepScope);
+ for (Object tabu : tabus) {
+ // required to push tabu to the end of the line
+ if (tabuToStepIndexMap.containsKey(tabu)) {
+ tabuToStepIndexMap.remove(tabu);
+ tabuSequenceList.remove(tabu);
}
+ int maximumTabuListSize = completeTabuSize + partialTabuSize; // is at least 1
+ while (tabuSequenceList.size() >= maximumTabuListSize) {
+ Iterator<Object> it = tabuSequenceList.iterator();
+ Object removeTabu = it.next();
+ it.remove();
+ tabuToStepIndexMap.remove(removeTabu);
+ }
+ tabuToStepIndexMap.put(tabu, stepScope.getStepIndex());
+ tabuSequenceList.add(tabu);
}
}
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-10-02 17:18:29 UTC (rev 23270)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/tabu/MoveTabuAccepter.java 2008-10-02 18:16:43 UTC (rev 23271)
@@ -30,12 +30,10 @@
@Override
protected Collection<? extends Object> findNewTabu(StepScope stepScope) {
Move tabuMove;
- Move step = stepScope.getStep();
if (useUndoMoveAsTabuMove) {
- // In stepTaken this the undoMove would be corrupted
- tabuMove = step.createUndoMove(stepScope.getWorkingMemory());
+ tabuMove = stepScope.getUndoStep();
} else {
- tabuMove = step;
+ tabuMove = stepScope.getStep();
}
return Collections.singletonList(tabuMove);
}
More information about the jboss-svn-commits
mailing list