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 regular Simulator instance.
    • or, Central.solverConfiguration(..) in case of using the experiment API (recommended).
  • Decentralized: via SolverModel. By adding SolverModel to the simulation, objects that implement the SolverUser interface can use a solver to solve their PDPTW instances.

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.

RtSolverModel

Continuous updates

Continuous updates

Threads

Threads.