OptaPlanner core 6.2.0.Beta1

org.optaplanner.core.impl.solver
Class DefaultSolver

java.lang.Object
  extended by org.optaplanner.core.impl.solver.DefaultSolver
All Implemented Interfaces:
Solver

public class DefaultSolver
extends Object
implements Solver

Default implementation for Solver.

See Also:
Solver

Field Summary
protected  BasicPlumbingTermination basicPlumbingTermination
           
protected  BestSolutionRecaller bestSolutionRecaller
           
protected  EnvironmentMode environmentMode
           
protected  org.slf4j.Logger logger
           
protected  List<Phase> phaseList
           
protected  RandomFactory randomFactory
           
protected  InnerScoreDirectorFactory scoreDirectorFactory
           
protected  SolverEventSupport solverEventSupport
           
protected  DefaultSolverScope solverScope
           
protected  AtomicBoolean solving
           
protected  Termination termination
           
 
Constructor Summary
DefaultSolver()
           
 
Method Summary
 void addEventListener(SolverEventListener eventListener)
           
 void addPhaseLifecycleListener(PhaseLifecycleListener phaseLifecycleListener)
           
 boolean addProblemFactChange(ProblemFactChange problemFactChange)
          Schedules a ProblemFactChange to be processed.
 Solution getBestSolution()
           
 BestSolutionRecaller getBestSolutionRecaller()
           
 EnvironmentMode getEnvironmentMode()
           
 List<Phase> getPhaseList()
           
 RandomFactory getRandomFactory()
           
 InnerScoreDirectorFactory getScoreDirectorFactory()
           
 DefaultSolverScope getSolverScope()
           
 long getTimeMillisSpent()
           
 boolean isEveryProblemFactChangeProcessed()
          Checks if all scheduled ProblemFactChanges have been processed.
 boolean isSolving()
          This method is thread-safe.
 boolean isTerminateEarly()
          This method is thread-safe.
 void outerSolvingEnded(DefaultSolverScope solverScope)
           
 void outerSolvingStarted(DefaultSolverScope solverScope)
           
 void removeEventListener(SolverEventListener eventListener)
           
 void removePhaseLifecycleListener(PhaseLifecycleListener phaseLifecycleListener)
           
protected  void runPhases()
           
 void setBasicPlumbingTermination(BasicPlumbingTermination basicPlumbingTermination)
           
 void setBestSolutionRecaller(BestSolutionRecaller bestSolutionRecaller)
           
 void setEnvironmentMode(EnvironmentMode environmentMode)
           
 void setPhaseList(List<Phase> phaseList)
           
 void setRandomFactory(RandomFactory randomFactory)
           
 void setScoreDirectorFactory(InnerScoreDirectorFactory scoreDirectorFactory)
           
 void setTermination(Termination termination)
           
 void solve(Solution planningProblem)
          Solves the planning problem.
 void solvingEnded(DefaultSolverScope solverScope)
           
 void solvingStarted(DefaultSolverScope solverScope)
           
 boolean terminateEarly()
          Notifies the solver that it should stop at its earliest convenience.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

protected final transient org.slf4j.Logger logger

solverEventSupport

protected SolverEventSupport solverEventSupport

environmentMode

protected EnvironmentMode environmentMode

randomFactory

protected RandomFactory randomFactory

scoreDirectorFactory

protected InnerScoreDirectorFactory scoreDirectorFactory

basicPlumbingTermination

protected BasicPlumbingTermination basicPlumbingTermination

termination

protected Termination termination

bestSolutionRecaller

protected BestSolutionRecaller bestSolutionRecaller

phaseList

protected List<Phase> phaseList

solving

protected AtomicBoolean solving

solverScope

protected DefaultSolverScope solverScope
Constructor Detail

DefaultSolver

public DefaultSolver()
Method Detail

getEnvironmentMode

public EnvironmentMode getEnvironmentMode()

setEnvironmentMode

public void setEnvironmentMode(EnvironmentMode environmentMode)

getRandomFactory

public RandomFactory getRandomFactory()

setRandomFactory

public void setRandomFactory(RandomFactory randomFactory)

getScoreDirectorFactory

public InnerScoreDirectorFactory getScoreDirectorFactory()
Specified by:
getScoreDirectorFactory in interface Solver
Returns:
never null

setScoreDirectorFactory

public void setScoreDirectorFactory(InnerScoreDirectorFactory scoreDirectorFactory)

setBasicPlumbingTermination

public void setBasicPlumbingTermination(BasicPlumbingTermination basicPlumbingTermination)

setTermination

public void setTermination(Termination termination)

getBestSolutionRecaller

public BestSolutionRecaller getBestSolutionRecaller()

setBestSolutionRecaller

public void setBestSolutionRecaller(BestSolutionRecaller bestSolutionRecaller)

getPhaseList

public List<Phase> getPhaseList()

setPhaseList

public void setPhaseList(List<Phase> phaseList)

getSolverScope

public DefaultSolverScope getSolverScope()

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

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(Solution) 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(Solution) 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 Terminations, 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 ProblemFactChanges have been processed.

This method is thread-safe.

Specified by:
isEveryProblemFactChangeProcessed in interface Solver
Returns:
true if there are no ProblemFactChanges left to do

solve

public final void solve(Solution planningProblem)
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
Parameters:
planningProblem - never null, usually its planning variables are uninitialized
See Also:
Solver.terminateEarly()

outerSolvingStarted

public void outerSolvingStarted(DefaultSolverScope solverScope)

solvingStarted

public void solvingStarted(DefaultSolverScope solverScope)

runPhases

protected void runPhases()

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

addPhaseLifecycleListener

public void addPhaseLifecycleListener(PhaseLifecycleListener phaseLifecycleListener)

removePhaseLifecycleListener

public void removePhaseLifecycleListener(PhaseLifecycleListener phaseLifecycleListener)

OptaPlanner core 6.2.0.Beta1

Copyright © 2006-2014 JBoss by Red Hat. All Rights Reserved.