Class SolverManager
- java.lang.Object
-
- org.optaweb.vehiclerouting.plugin.planner.SolverManager
-
- All Implemented Interfaces:
EventListener,org.optaplanner.core.api.solver.event.SolverEventListener<VehicleRoutingSolution>
@Component("optaweb-solver-manager") class SolverManager extends Object implements org.optaplanner.core.api.solver.event.SolverEventListener<VehicleRoutingSolution>Manages a solver running in a different thread.Does following:
- Starts solver by running
Solver.solve(Object problem)in a thread that's not the caller's thread. - Stops the solver (synchronously).
- Adds problem fact changes to the solver.
- Propagates any exception that happens in
Solver.solver()(in a different thread) to the thread that interacts withSolverManager. - Listens for best solution changes and publishes new best solutions via
RouteChangedEventPublisher.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static interfaceSolverManager.SolvingTaskAn alias interface that fixates the Callable's type parameter.
-
Constructor Summary
Constructors Constructor Description SolverManager(org.optaplanner.core.api.solver.Solver<VehicleRoutingSolution> solver, org.springframework.core.task.AsyncListenableTaskExecutor executor, RouteChangedEventPublisher routeChangedEventPublisher, org.springframework.context.ApplicationEventPublisher eventPublisher)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) voidaddVehicle(PlanningVehicle vehicle)(package private) voidaddVisit(PlanningVisit visit)voidbestSolutionChanged(org.optaplanner.core.api.solver.event.BestSolutionChangedEvent<VehicleRoutingSolution> bestSolutionChangedEvent)(package private) voidchangeCapacity(PlanningVehicle vehicle)(package private) voidremoveVehicle(PlanningVehicle vehicle)(package private) voidremoveVisit(PlanningVisit visit)(package private) voidstartSolver(VehicleRoutingSolution solution)(package private) voidstopSolver()
-
-
-
Constructor Detail
-
SolverManager
@Autowired SolverManager(org.optaplanner.core.api.solver.Solver<VehicleRoutingSolution> solver, org.springframework.core.task.AsyncListenableTaskExecutor executor, RouteChangedEventPublisher routeChangedEventPublisher, org.springframework.context.ApplicationEventPublisher eventPublisher)
-
-
Method Detail
-
bestSolutionChanged
public void bestSolutionChanged(org.optaplanner.core.api.solver.event.BestSolutionChangedEvent<VehicleRoutingSolution> bestSolutionChangedEvent)
- Specified by:
bestSolutionChangedin interfaceorg.optaplanner.core.api.solver.event.SolverEventListener<VehicleRoutingSolution>
-
startSolver
void startSolver(VehicleRoutingSolution solution)
-
stopSolver
void stopSolver()
-
addVisit
void addVisit(PlanningVisit visit)
-
removeVisit
void removeVisit(PlanningVisit visit)
-
addVehicle
void addVehicle(PlanningVehicle vehicle)
-
removeVehicle
void removeVehicle(PlanningVehicle vehicle)
-
changeCapacity
void changeCapacity(PlanningVehicle vehicle)
-
-