Maven artifactId: rinsim-central
This module provides functionality for using solvers for the PDPTW. They can be used in a centralized fashion (e.g. a single solver for all vehicles) as well as a decentralized fashion (e.g. a solver per vehicle). There is a package for usage in simulated time as well as a package for usage in real-time.
central
By implementing the Solver interface it is possible to ‘solve’ an instance of the PDPTW. It consists of one method:
ImmutableList<ImmutableList<Parcel>> solve(GlobalStateObject state)
The GlobalStateObject
is a value object that encodes the problem that needs to be solved by the solver. For every vehicle that occurs in the GlobalStateObject
, the output of the solve
method should contain a (possibly empty) list with the route that that vehicle should follow.
Usage:
- Centralized: via
Central
, either using:Central.builder(..)
in case of using a regularSimulator
instance.- or,
Central.solverConfiguration(..)
in case of using the experiment API (recommended).
- Decentralized: via
SolverModel
. By addingSolverModel
to the simulation, objects that implement theSolverUser
interface can use a solver to solve their PDPTW instances.
Solver
implementations.central.rt
The structure of this package is very similar to the central package, but the implementation details are more complicated. The reason is that in real-time, the solvers have to be asynchronous. The computation result therefore arrives in a callback and not in the return of the method.
The RealtimeSolver is the real-time equivalent of Solver
.