Package org.optaplanner.core.api.solver
Interface SolverJob<Solution_,ProblemId_> 
- Type Parameters:
- Solution_- the solution type, the class with the- PlanningSolutionannotation
- ProblemId_- the ID type of a submitted problem, such as- Longor- UUID.
- All Known Implementing Classes:
- DefaultSolverJob
public interface SolverJob<Solution_,ProblemId_> 
Represents a 
problem that has been submitted to solve on the SolverManager.- 
Method SummaryModifier and TypeMethodDescriptionaddProblemChange(ProblemChange<Solution_> problemChange) Schedules aProblemChangeto be processed by the underlyingSolverand returns immediately.Waits if necessary for the solver to complete and then returns the final bestPlanningSolution.Returns whether theSolveris scheduled to solve, actively solving or not.Returns theDurationspent solving since the last start.booleanvoidTerminates the solver or cancels the solver job if it hasn't (re)started yet.
- 
Method Details- 
getProblemIdProblemId_ getProblemId()- Returns:
- never null, a value given to SolverManager.solve(Object, Function, Consumer)orSolverManager.solveAndListen(Object, Function, Consumer)
 
- 
getSolverStatusSolverStatus getSolverStatus()Returns whether theSolveris scheduled to solve, actively solving or not.Returns SolverStatus.NOT_SOLVINGif the solver already terminated.- Returns:
- never null
 
- 
addProblemChangeSchedules aProblemChangeto be processed by the underlyingSolverand returns immediately.To learn more about problem change semantics, please refer to the ProblemChangeJavadoc.- Parameters:
- problemChange- never null
- Returns:
- completes after the best solution containing this change has been consumed.
- Throws:
- IllegalStateException- if the underlying- Solveris not in the- SolverStatus.SOLVING_ACTIVEstate
 
- 
terminateEarlyvoid terminateEarly()Terminates the solver or cancels the solver job if it hasn't (re)started yet.Does nothing if the solver already terminated. Waits for the termination or cancellation to complete before returning. During termination, a bestSolutionConsumercould still be called. When the solver terminates, thefinalBestSolutionConsumeris executed with the latest best solution. These consumers run on a consumer thread independently of the termination and may still run even after this method returns.
- 
isTerminatedEarlyboolean isTerminatedEarly()- Returns:
- true if terminateEarly()has been called since the underlyingSolverstarted solving.
 
- 
getFinalBestSolutionWaits if necessary for the solver to complete and then returns the final bestPlanningSolution.- Returns:
- never null, but it could be the original uninitialized problem
- Throws:
- InterruptedException- if the current thread was interrupted while waiting
- ExecutionException- if the computation threw an exception
 
- 
getSolvingDurationDuration getSolvingDuration()Returns theDurationspent solving since the last start. If it hasn't started it yet, it returnsDuration.ZERO. If it hasn't ended yet, it returns the time between the last start and now. If it has ended already, it returns the time between the last start and the ending.- Returns:
- the Durationspent solving since the last (re)start, at least 0
 
 
-