[jboss-svn-commits] JBL Code SVN: r27505 - in labs/jbossrules/trunk/drools-solver: drools-solver-core/src/main/java/org/drools/solver/core/localsearch and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Jul 3 09:30:15 EDT 2009
Author: ge0ffrey
Date: 2009-07-03 09:30:14 -0400 (Fri, 03 Jul 2009)
New Revision: 27505
Modified:
labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/AbstractSolver.java
labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/Solver.java
labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/DefaultLocalSearchSolver.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/business/SolutionBusiness.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/swingui/WorkflowFrame.java
labs/jbossrules/trunk/drools-solver/src/main/assembly/docs/UpgradeFromPreviousVersionRecipe.txt
Log:
Solver interface: rename cancel() to terminateEarly() and isCancelled() to isTerminatedEarly()
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/AbstractSolver.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/AbstractSolver.java 2009-07-03 13:10:11 UTC (rev 27504)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/AbstractSolver.java 2009-07-03 13:30:14 UTC (rev 27505)
@@ -18,22 +18,22 @@
// TODO atomic enum with values NOT_STARTED, RUNNING, DONE, CANCELLED
// TODO introduce a solver factory and make a solver one time use
- protected final AtomicBoolean cancelled = new AtomicBoolean(false);
+ protected final AtomicBoolean terminatedEarly = new AtomicBoolean(false);
- public boolean cancel() {
- boolean cancellingSuccesful = !cancelled.getAndSet(true);
- if (cancellingSuccesful) {
- logger.info("Cancelling solver.");
+ public boolean terminateEarly() {
+ boolean terminationEarlySuccessful = !terminatedEarly.getAndSet(true);
+ if (terminationEarlySuccessful) {
+ logger.info("Terminating solver early.");
}
- return cancellingSuccesful;
+ return terminationEarlySuccessful;
}
- public boolean isCancelled() {
- return cancelled.get();
+ public boolean isTerminatedEarly() {
+ return terminatedEarly.get();
}
public final void solve() {
- cancelled.set(false);
+ terminatedEarly.set(false);
solveImplementation();
}
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/Solver.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/Solver.java 2009-07-03 13:10:11 UTC (rev 27504)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/Solver.java 2009-07-03 13:30:14 UTC (rev 27505)
@@ -7,13 +7,19 @@
/**
* A Solver solves planning problems.
+ * <p/>
+ * Most methods are not thread-safe and should be called from the same thread.
* @author Geoffrey De Smet
*/
public interface Solver {
+ /**
+ * @param startingSolution cannot be null
+ */
void setStartingSolution(Solution startingSolution);
Score getBestScore();
+
Solution getBestSolution();
/**
@@ -21,18 +27,32 @@
*/
long getTimeMillisSpend();
+ /**
+ * Solves the planning problem.
+ * It can take minutes, even hours or days before this method returns,
+ * depending on the termination configuration.
+ * To terminate a {@link Solver} early, call {@link #terminateEarly()}.
+ * @see #terminateEarly()
+ */
void solve();
/**
+ * Notifies the solver that it should stop at its earliest convenience.
+ * This method returns immediatly, but it takes an undetermined time
+ * for the {@link #solve()} to actually return.
+ * <p/>
+ * This method is thread-safe.
+ * @see #isTerminatedEarly()
* @see Future#cancel(boolean)
* @return true if successful
*/
- boolean cancel();
+ boolean terminateEarly();
/**
+ * This method is thread-safe.
* @see Future#isCancelled()
- * @return true if cancelled
+ * @return true if terminateEarly has been called since the {@Solver} started.
*/
- boolean isCancelled();
-
+ boolean isTerminatedEarly();
+
}
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/DefaultLocalSearchSolver.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/DefaultLocalSearchSolver.java 2009-07-03 13:10:11 UTC (rev 27504)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/DefaultLocalSearchSolver.java 2009-07-03 13:30:14 UTC (rev 27505)
@@ -9,13 +9,10 @@
import org.drools.solver.core.move.Move;
import org.drools.solver.core.score.calculator.ScoreCalculator;
import org.drools.solver.core.score.Score;
-import org.drools.solver.core.score.HardAndSoftScore;
import org.drools.solver.core.score.definition.ScoreDefinition;
import org.drools.solver.core.solution.Solution;
import org.drools.solver.core.solution.initializer.StartingSolutionInitializer;
import org.drools.solver.core.AbstractSolver;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* Default implementation of {@link LocalSearchSolver}.
@@ -106,7 +103,7 @@
solvingStarted(localSearchSolverScope);
StepScope stepScope = createNextStepScope(localSearchSolverScope, null);
- while (!cancelled.get() && !finish.isFinished(stepScope)) {
+ while (!terminatedEarly.get() && !finish.isFinished(stepScope)) {
stepScope.setTimeGradient(finish.calculateTimeGradient(stepScope));
beforeDeciding(stepScope);
decider.decideNextStep(stepScope);
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/business/SolutionBusiness.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/business/SolutionBusiness.java 2009-07-03 13:10:11 UTC (rev 27504)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/business/SolutionBusiness.java 2009-07-03 13:30:14 UTC (rev 27505)
@@ -151,8 +151,8 @@
solver.setStartingSolution(solution);
}
- public void cancelSolving() {
- solver.cancel();
+ public void terminateSolvingEarly() {
+ solver.terminateEarly();
}
public class SolverExampleFileFilter implements FileFilter {
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/swingui/WorkflowFrame.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/swingui/WorkflowFrame.java 2009-07-03 13:10:11 UTC (rev 27504)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/swingui/WorkflowFrame.java 2009-07-03 13:30:14 UTC (rev 27505)
@@ -166,7 +166,7 @@
private ExecutorService solvingExecutor = Executors.newFixedThreadPool(1);
public SolveAction() {
- super("Solve!");
+ super("Solve");
}
public void actionPerformed(ActionEvent e) {
@@ -190,12 +190,12 @@
private class CancelSolvingAction extends AbstractAction {
public CancelSolvingAction() {
- super("Cancel solving");
+ super("Terminate solving early");
}
public void actionPerformed(ActionEvent e) {
// This async, so it doesn't stop the solving immediatly
- solutionBusiness.cancelSolving();
+ solutionBusiness.terminateSolvingEarly();
}
}
Modified: labs/jbossrules/trunk/drools-solver/src/main/assembly/docs/UpgradeFromPreviousVersionRecipe.txt
===================================================================
--- labs/jbossrules/trunk/drools-solver/src/main/assembly/docs/UpgradeFromPreviousVersionRecipe.txt 2009-07-03 13:10:11 UTC (rev 27504)
+++ labs/jbossrules/trunk/drools-solver/src/main/assembly/docs/UpgradeFromPreviousVersionRecipe.txt 2009-07-03 13:30:14 UTC (rev 27505)
@@ -74,3 +74,14 @@
<scoreDefinition>
<scoreDefinitionType>HARD_AND_SOFT</scoreDefinitionType>
</scoreDefinition>
+
+From 5.0.1 to 5.1.0
+-------------------
+
+The Solver.cancel() method has been renamed to Solver.terminateEarly()
+because it does not undo the solving but terminates it early and there's a best solution.
+Before:
+ solver.cancel();
+After:
+ solver.terminateEarly();
+Likewise, Solver.isCancelled() has been renamed to Solver.isTerminatedEarly().
More information about the jboss-svn-commits
mailing list