Interface SolverManager<Solution_,ProblemId_>

Type Parameters:
Solution_ - the solution type, the class with the PlanningSolution annotation
ProblemId_ - the ID type of a submitted problem, such as Long or UUID.
All Superinterfaces:
AutoCloseable
All Known Implementing Classes:
DefaultSolverManager

public interface SolverManager<Solution_,ProblemId_> extends AutoCloseable
A SolverManager solves multiple planning problems of the same domain, asynchronously without blocking the calling thread.

To create a SolverManager, use create(SolverFactory, SolverManagerConfig). To solve a planning problem, call solve(Object, Object, Consumer) or solveAndListen(Object, Object, Consumer).

These methods are thread-safe unless explicitly stated otherwise.

Internally a SolverManager manages a thread pool of solver threads (which call Solver.solve(Object)) and consumer threads (to handle the BestSolutionChangedEvents).

To learn more about problem change semantics, please refer to the ProblemChange Javadoc.