Maven artifactId: rinsim-pdptw
The PDPTW module contains implementations that support the simulation of the pickup-and-delivery problem with time windows (PDPTW).
RouteFollowingVehicle
The RouteFollowingVehicle is a subclass of Vehicle with a very simple API. The behavior of this vehicle can be controlled via the setRoute(Iterable<Parcel>)
method. The route consists of one or more parcels, each parcel can occur at maximum twice. The first occurence indicates a pickup, the second occurence indicates a delivery. In case this method is called at a time when the vehicle already has a parcel in cargo, the number of occurences for that parcel is limited to one and will be interpreted as a delivery. The behavior of the vehicle is implemented as a finite state machine, which is visualized below:
As can be seen, there are four states: Wait
, Goto
, WaitAtService
, and Service
. There are six triggers (state events) which are documented here. The behavior of the vehicle can be overridden by changing the state machine.
PDPRoadModel
The PDPRoadModel
is a convenience decorator of RoadModel
s. It simplifies the API for moving vehicles in the PDPTW case as it allows to always just call moveTo(vehicle,parcel)
, depending on the state of the parcel this will let the vehicle move to either the pickup site or the delivery site.
RoadModel decorator | Underlying RoadModel |
---|---|
PDPRoadModel | RoadModel |
PDPGraphRoadModel | GraphRoadModel |
PDPDynamicGraphRoadModel | DynamicGraphRoadModel |
PDPCollisionGraphRoadModel | CollisionGraphRoadModel |
Events
This module provides several default implementations of TimedEvent
(see scenario module) which are useful for PDPTWs:
Statistics
With StatsTracker it is possible to track a number of statistics relevant for PDPTWs.
StatsTracker | |
Associated type: | none |
Provides: | StatisticsProvider |
Dependencies: | ScenarioController , Clock , RoadModel , PDPModel |
Via the StatisticsProvider
instances of StatisticsDTO
can be obtained which can be useful to analyse the result of a simulation. Additionally, these statistics can be used for custom stop conditions (see StatsStopConditions ) and for computing an objective value via implementations of ObjectiveFunction.
User interface
The module provides several UI extensions that visualize functionality from this module:
Renderer / Panel | What is rendered | Example usage |
---|---|---|
TimeLinePanel | A timeline indicating for each parcel, the pickup timewindow and the delivery timewindow. | Experiment example |
RoutePanel | Shows a table with a row per RouteFollowingVehicle detailing its route. | Experiment example |
StatsPanel | Presents a live view on the stats in a side panel. | Experiment example |
RouteRenderer | Renders the current route for each RouteFollowingVehicle. | Experiment example |