org.optaplanner.core.impl.solver
Class DefaultSolver
java.lang.Object
org.optaplanner.core.impl.solver.DefaultSolver
- All Implemented Interfaces:
- Solver
public class DefaultSolver
- extends Object
- implements Solver
Default implementation for Solver
.
- See Also:
Solver
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
logger
protected final transient org.slf4j.Logger logger
solverEventSupport
protected SolverEventSupport solverEventSupport
scoreDirectorFactory
protected ScoreDirectorFactory scoreDirectorFactory
randomFactory
protected RandomFactory randomFactory
basicPlumbingTermination
protected BasicPlumbingTermination basicPlumbingTermination
termination
protected Termination termination
bestSolutionRecaller
protected BestSolutionRecaller bestSolutionRecaller
solverPhaseList
protected List<SolverPhase> solverPhaseList
solving
protected AtomicBoolean solving
solverScope
protected DefaultSolverScope solverScope
DefaultSolver
public DefaultSolver()
getRandomFactory
public RandomFactory getRandomFactory()
setRandomFactory
public void setRandomFactory(RandomFactory randomFactory)
getScoreDirectorFactory
public ScoreDirectorFactory getScoreDirectorFactory()
- Specified by:
getScoreDirectorFactory
in interface Solver
- Returns:
- never null
setScoreDirectorFactory
public void setScoreDirectorFactory(ScoreDirectorFactory scoreDirectorFactory)
setBasicPlumbingTermination
public void setBasicPlumbingTermination(BasicPlumbingTermination basicPlumbingTermination)
setTermination
public void setTermination(Termination termination)
setBestSolutionRecaller
public void setBestSolutionRecaller(BestSolutionRecaller bestSolutionRecaller)
getSolverPhaseList
public List<SolverPhase> getSolverPhaseList()
setSolverPhaseList
public void setSolverPhaseList(List<SolverPhase> solverPhaseList)
setPlanningProblem
public void setPlanningProblem(Solution planningProblem)
- Specified by:
setPlanningProblem
in interface Solver
- Parameters:
planningProblem
- never null
getBestSolution
public Solution getBestSolution()
- Specified by:
getBestSolution
in interface Solver
- Returns:
- never null, but it can return the original, uninitialized
Solution
with a Score
null.
getTimeMillisSpent
public long getTimeMillisSpent()
- Specified by:
getTimeMillisSpent
in interface Solver
- Returns:
- the amount of millis spent between when this solver started and ended
getSolverScope
public DefaultSolverScope getSolverScope()
isSolving
public boolean isSolving()
- Description copied from interface:
Solver
- This method is thread-safe.
- Specified by:
isSolving
in interface Solver
- Returns:
- true if the
Solver.solve()
method is still running.
terminateEarly
public boolean terminateEarly()
- Description copied from interface:
Solver
- Notifies the solver that it should stop at its earliest convenience.
This method returns immediately, but it takes an undetermined time
for the
Solver.solve()
to actually return.
This method is thread-safe.
- Specified by:
terminateEarly
in interface Solver
- Returns:
- true if successful
- See Also:
Solver.isTerminateEarly()
,
Future.cancel(boolean)
isTerminateEarly
public boolean isTerminateEarly()
- Description copied from interface:
Solver
- This method is thread-safe.
- Specified by:
isTerminateEarly
in interface Solver
- Returns:
- true if terminateEarly has been called since the started.
- See Also:
Future.isCancelled()
addProblemFactChange
public boolean addProblemFactChange(ProblemFactChange problemFactChange)
- Description copied from interface:
Solver
- Schedules a
ProblemFactChange
to be processed.
As a side-effect, this restarts the Solver
, effectively resetting all Termination
s,
but not Solver.terminateEarly()
.
This method is thread-safe.
Follows specifications of BlockingQueue.add(Object)
with by default
a capacity of Integer.MAX_VALUE
.
- Specified by:
addProblemFactChange
in interface Solver
- Parameters:
problemFactChange
- never null
- Returns:
- true (as specified by
Collection.add(E)
)
isEveryProblemFactChangeProcessed
public boolean isEveryProblemFactChangeProcessed()
- Description copied from interface:
Solver
- Checks if all scheduled
ProblemFactChange
s have been processed.
This method is thread-safe.
- Specified by:
isEveryProblemFactChangeProcessed
in interface Solver
- Returns:
- true if there are no
ProblemFactChange
s left to do
solve
public final void solve()
- Description copied from interface:
Solver
- Solves the planning problem.
It can take minutes, even hours or days before this method returns,
depending on the termination configuration.
To terminate a
Solver
early, call Solver.terminateEarly()
.
- Specified by:
solve
in interface Solver
- See Also:
Solver.terminateEarly()
outerSolvingStarted
public void outerSolvingStarted(DefaultSolverScope solverScope)
solvingStarted
public void solvingStarted(DefaultSolverScope solverScope)
runSolverPhases
protected void runSolverPhases()
solvingEnded
public void solvingEnded(DefaultSolverScope solverScope)
outerSolvingEnded
public void outerSolvingEnded(DefaultSolverScope solverScope)
addEventListener
public void addEventListener(SolverEventListener eventListener)
- Specified by:
addEventListener
in interface Solver
- Parameters:
eventListener
- never null
removeEventListener
public void removeEventListener(SolverEventListener eventListener)
- Specified by:
removeEventListener
in interface Solver
- Parameters:
eventListener
- never null
addSolverPhaseLifecycleListener
public void addSolverPhaseLifecycleListener(SolverPhaseLifecycleListener solverPhaseLifecycleListener)
removeSolverPhaseLifecycleListener
public void removeSolverPhaseLifecycleListener(SolverPhaseLifecycleListener solverPhaseLifecycleListener)
Copyright © 2006-2014 JBoss by Red Hat. All Rights Reserved.