Package org.optaplanner.core.impl.solver
Class DefaultSolverJob<Solution_,ProblemId_>
java.lang.Object
org.optaplanner.core.impl.solver.DefaultSolverJob<Solution_,ProblemId_>
- Type Parameters:
Solution_- the solution type, the class with thePlanningSolutionannotationProblemId_- the ID type of submitted problem, such asLongorUUID.
-
Constructor Summary
ConstructorsConstructorDescriptionDefaultSolverJob(DefaultSolverManager<Solution_, ProblemId_> solverManager, Solver<Solution_> solver, ProblemId_ problemId, Function<? super ProblemId_, ? extends Solution_> problemFinder, Consumer<? super Solution_> bestSolutionConsumer, Consumer<? super Solution_> finalBestSolutionConsumer, BiConsumer<? super ProblemId_, ? super Throwable> exceptionHandler) -
Method Summary
Modifier and TypeMethodDescriptionaddProblemChange(ProblemChange<Solution_> problemChange) Schedules aProblemChangeto be processed by the underlyingSolverand returns immediately.call()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.booleanvoidsetFinalBestSolutionFuture(Future<Solution_> finalBestSolutionFuture) voidTerminates the solver or cancels the solver job if it hasn't (re)started yet.
-
Constructor Details
-
DefaultSolverJob
public DefaultSolverJob(DefaultSolverManager<Solution_, ProblemId_> solverManager, Solver<Solution_> solver, ProblemId_ problemId, Function<? super ProblemId_, ? extends Solution_> problemFinder, Consumer<? super Solution_> bestSolutionConsumer, Consumer<? super Solution_> finalBestSolutionConsumer, BiConsumer<? super ProblemId_, ? super Throwable> exceptionHandler)
-
-
Method Details
-
setFinalBestSolutionFuture
-
getProblemId
- Specified by:
getProblemIdin interfaceSolverJob<Solution_,ProblemId_> - Returns:
- never null, a value given to
SolverManager.solve(Object, Function, Consumer)orSolverManager.solveAndListen(Object, Function, Consumer)
-
getSolverStatus
Description copied from interface:SolverJobReturns whether theSolveris scheduled to solve, actively solving or not.Returns
SolverStatus.NOT_SOLVINGif the solver already terminated.- Specified by:
getSolverStatusin interfaceSolverJob<Solution_,ProblemId_> - Returns:
- never null
-
call
-
addProblemChange
Description copied from interface:SolverJobSchedules aProblemChangeto be processed by the underlyingSolverand returns immediately.To learn more about problem change semantics, please refer to the
ProblemChangeJavadoc.- Specified by:
addProblemChangein interfaceSolverJob<Solution_,ProblemId_> - Parameters:
problemChange- never null- Returns:
- completes after the best solution containing this change has been consumed.
-
terminateEarly
public void terminateEarly()Description copied from interface:SolverJobTerminates 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.- Specified by:
terminateEarlyin interfaceSolverJob<Solution_,ProblemId_>
-
isTerminatedEarly
public boolean isTerminatedEarly()- Specified by:
isTerminatedEarlyin interfaceSolverJob<Solution_,ProblemId_> - Returns:
- true if
SolverJob.terminateEarly()has been called since the underlyingSolverstarted solving.
-
getFinalBestSolution
Description copied from interface:SolverJobWaits if necessary for the solver to complete and then returns the final bestPlanningSolution.- Specified by:
getFinalBestSolutionin interfaceSolverJob<Solution_,ProblemId_> - Returns:
- never null, but it could be the original uninitialized problem
- Throws:
InterruptedException- if the current thread was interrupted while waitingExecutionException- if the computation threw an exception
-
getSolvingDuration
Description copied from interface:SolverJobReturns 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.- Specified by:
getSolvingDurationin interfaceSolverJob<Solution_,ProblemId_> - Returns:
- the
Durationspent solving since the last (re)start, at least 0
-